It's all about the answers!

Ask a question

How to create a Module/RequirementCollection using OSLC ?


Vaibhav S (106244) | asked Apr 30 '21, 4:52 a.m.

 Hello,


How to create a Module/RequirementCollection using OSLC ?

Can you please help here.

Thanks!

2 answers



permanent link
Ralph Schoon (62.7k33643) | answered May 03 '21, 4:30 a.m.
FORUM ADMINISTRATOR / FORUM MODERATOR / JAZZ DEVELOPER
This is how you can find the same question asked in the forum: https://www.google.com/search?q=how+to+create+a+module+OSLC+API+site%3Ajazz.net

I would suggest to go through some of the answers above. https://jazz.net/library/article/1197 is an article that is suggested for more information.

permanent link
Vaibhav S (106244) | answered May 03 '21, 7:54 a.m.

 Hi,


i created it using below code, in case someone needs it:

package com.bsl.service;

import java.io.IOException;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.auth.InvalidCredentialsException;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.apache.wink.client.ClientResponse;
import org.eclipse.lyo.client.exception.JazzAuthErrorException;
import org.eclipse.lyo.client.exception.JazzAuthFailedException;
import org.eclipse.lyo.client.exception.ResourceNotFoundException;
import org.eclipse.lyo.client.exception.RootServicesException;
import org.eclipse.lyo.client.oslc.OSLCConstants;
import org.eclipse.lyo.client.oslc.jazz.JazzFormAuthClient;
import org.eclipse.lyo.client.oslc.jazz.JazzRootServicesHelper;
import org.eclipse.lyo.client.oslc.resources.OslcQuery;
import org.eclipse.lyo.client.oslc.resources.OslcQueryParameters;
import org.eclipse.lyo.client.oslc.resources.OslcQueryResult;
import org.eclipse.lyo.client.oslc.resources.Requirement;
import org.eclipse.lyo.client.oslc.resources.RequirementCollection;
import org.eclipse.lyo.client.oslc.resources.RmUtil;
import org.eclipse.lyo.oslc4j.core.model.OslcMediaType;
import org.eclipse.lyo.oslc4j.core.model.ResourceShape;

import com.bsl.Business.DngPojo;


import net.oauth.OAuthException;

/
  
  @author vaibhavs18
 
 */
public class CreateDngArtifact {


static String queryCapability;
static String serviceProviderUrl;

private static JazzRootServicesHelper rootServicesHelperPost = null;
private static JazzFormAuthClient clientPost = null;
static String queryCapabilityPost;
static String serviceProviderUrlPost;
static String projectAreaPost = "Migration POC With GC (Requirements)";
private static String  serverUrlPost = "https://hjalmdclm.birlasoft.com:9443/rm";
private static String usernamePost = "anurag";
private static String passwordPost="anurag";
private static String catalogUrlPost;

private static JazzRootServicesHelper rootServicesHelper = null;
private static JazzFormAuthClient client = null;

private static String catalogUrl = null;
static Map<String, String> map = new HashMap<String, String>();

public static boolean createArtifact(int flag, String username, String password, String serverUrl, String projectArea,String artifactType, String artifactDescription, String artifactTitle) throws JazzAuthFailedException, JazzAuthErrorException, RootServicesException  {

try{
System.out.println("Artifact type : " + artifactType);

rootServicesHelper = new JazzRootServicesHelper(serverUrl, OSLCConstants.OSLC_RM_V2);
client = rootServicesHelper.initFormClient(username, password);
client.formLogin();     

serviceProviderUrl = client.lookupServiceProviderUrl(rootServicesHelper.getCatalogUrl(), projectArea);

// queryCapability = client.lookupQueryCapability(serviceProviderUrl,OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_TYPE);

// catalogUrl= rootServicesHelper.getCatalogUrl();

if(client.formLogin()==200){
System.out.println("Logged In ...");
}
else
throw new RuntimeException("Login Failed");



if(flag ==0) {
Requirement requirement = new Requirement();

String requirementFactory = client.lookupCreationFactory(serviceProviderUrl, OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_TYPE);
System.out.println( "requirement factort vccreated ");
ResourceShape featureInstanceShape = RmUtil.lookupRequirementsInstanceShapes(serviceProviderUrl, OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_TYPE, client, artifactType);
requirement .setInstanceShape(featureInstanceShape.getAbout());
requirement.setDescription(artifactDescription);
requirement.setTitle(artifactTitle);
System.out.println("Requiremenet created "+ artifactTitle);
System.out.println("-----------------");

ClientResponse response= client.createResource(requirementFactory, requirement, OslcMediaType.APPLICATION_RDF_XML,  OslcMediaType.APPLICATION_RDF_XML);
if (response.getStatusCode() == 200 || response.getStatusCode() == 201) {
return true;
}
}

else if(flag == 1){

RequirementCollection requirementCollection = new RequirementCollection();
String requirementFactory = client.lookupCreationFactory(serviceProviderUrl, OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_COLLECTION_TYPE);
System.out.println( "requirement factort vccreated ");
ResourceShape featureInstanceShape = RmUtil.lookupRequirementsInstanceShapes(serviceProviderUrl, OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_COLLECTION_TYPE, client, artifactType);

requirementCollection.setInstanceShape(featureInstanceShape.getAbout());
requirementCollection.setDescription(artifactDescription);
requirementCollection.setTitle(artifactTitle);

System.out.println("-----------------");

ClientResponse response= client.createResource(requirementFactory, requirementCollection, OslcMediaType.APPLICATION_RDF_XML,  OslcMediaType.APPLICATION_RDF_XML);
if (response.getStatusCode() == 200 || response.getStatusCode() == 201) {
return true;
}

}



}
catch(ResourceNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
System.out.println(e.getMessage());
}
catch(OAuthException e){
System.out.println(e.getMessage());
}
catch(URISyntaxException e){
System.out.println(e.getMessage());
}
return false;
}


public static void postArtifact() throws ClientProtocolException, IOException, InvalidCredentialsException, RootServicesException, JazzAuthFailedException, JazzAuthErrorException, ResourceNotFoundException, OAuthException, URISyntaxException {



rootServicesHelperPost = new JazzRootServicesHelper(serverUrlPost, OSLCConstants.OSLC_RM_V2); 
clientPost = rootServicesHelperPost.initFormClient(usernamePost, passwordPost); 
clientPost.formLogin(); 

catalogUrlPost= rootServicesHelperPost.getCatalogUrl(); 
  
serviceProviderUrlPost = clientPost.lookupServiceProviderUrl(catalogUrlPost, projectAreaPost);
OslcQueryParameters queryParamsPost = new OslcQueryParameters(); 
queryParamsPost.setPrefix("dcterms=<http://purl.org/dc/terms/>"); 
queryParamsPost.setWhere("dcterms:identifier="+ 816);  
queryParamsPost.setSelect("dcterms:title"); 

String queryCapabilityPost= clientPost.lookupQueryCapability(serviceProviderUrlPost, OSLCConstants.OSLC_RM_V2, OSLCConstants.RM_REQUIREMENT_TYPE);
OslcQuery queryPost = new OslcQuery(clientPost, queryCapabilityPost, 15, queryParamsPost); 

OslcQueryResult resultPost = queryPost.submit(); 
System.out.println("Query Running .... ");

String[] urls= resultPost.getMembersUrls(); 
String resourceUri=(String)urls[0]; 
ClientResponse response = clientPost.getResource(resourceUri , OslcMediaType.APPLICATION_RDF_XML); 

String noteXml = "<rdf:RDF\r\n"
+ "    xmlns:acp=\"http://jazz.net/ns/acp#\"\r\n"
+ "    xmlns:public_rm_10=\"http://www.ibm.com/xmlns/rm/public/1.0/\"\r\n"
+ "    xmlns:jazz_rm=\"http://jazz.net/ns/rm#\"\r\n"
+ "    xmlns:process=\"http://jazz.net/ns/process#\"\r\n"
+ "    xmlns:dcterms=\"http://purl.org/dc/terms/\"\r\n"
+ "    xmlns:oslc_config=\"http://open-services.net/ns/config#\"\r\n"
+ "    xmlns:oslc_rm=\"http://open-services.net/ns/rm#\"\r\n"
+ "    xmlns:dng_task=\"http://jazz.net/ns/rm/dng/task#\"\r\n"
+ "    xmlns:oslc_auto=\"http://open-services.net/ns/auto#\" > \r\n"
+ "    <rdf:type rdf:resource=\"http://jazz.net/ns/rm#Text\"/>\r\n"
+ "    <dcterms:description rdf:parseType=\"Literal\"></dcterms:description>\r\n"
+ "    <dcterms:title rdf:parseType=\"Literal\">This is to Rich Text 1 Fromatting in DNG: Gaurav Sandeep </dcterms:title>\r\n"
+ "    <rdf:type rdf:resource=\"http://open-services.net/ns/rm#Requirement\"/>\r\n"
+ "    <dcterms:contributor rdf:resource=\"https://hjalmdclm.birlasoft.com:9443/jts/users/anurag\"/>\r\n"
+ "    <jazz_rm:primaryText rdf:parseType=\"Literal\"><div xmlns=\"http://www.w3.org/1999/xhtml\">\r\n"
+ "<hr/><p>This is to Rich Text 1 Fromatting in DNG: Sandeep</p>\r\n"
+ "<p><b><span style=\"font-size:12pt\">Bold <img alt=\"Embedded image\" src=\"C:/temp/Capture.PNG\"/>\r\n"
+ "</span></b></p>\r\n"
+ "<p> </p>\r\n"
+ "<p><i><span style=\"font-size:16pt\"><b>Italic</b></span></i></p>\r\n"
+ "<p><u><i><span style=\"font-size:16pt\"><b>Underline</b></span></i></u></p>\r\n"
+ "<p><u><i><span style=\"font-size:16pt\"><b><span style=\"background-color:#a52a2a\">Test</span></b></span></i></u></p>\r\n"
+ "<p><u><i><span style=\"font-size:16pt\"><b><span style=\"background-color:#a52a2a\"><span style=\"color:#ff0000\">THis is </span></span></b></span></i></u></p>\r\n"
+ "<p><b><span style=\"color:#0000ff\">This is to Test The formatting</span></b></p>\r\n"
+ "<hr/>\r\n"
+ "<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width: 500px ; table-layout: fixed ; overflow-wrap: break-word ; border-collapse: collapse ; border-color: #696969\"><tbody><tr><td colspan=\"1\" id=\"_1617802905312\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td><td colspan=\"1\" id=\"_1617802905313\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td></tr><tr><td colspan=\"1\" id=\"_1617802905314\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td><td colspan=\"1\" id=\"_1617802905315\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td></tr><tr><td colspan=\"1\" id=\"_1617802905316\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td><td colspan=\"1\" id=\"_1617802905317\" rowspan=\"1\" style=\"border-color:#696969; overflow:hidden; padding:1px; width:250px\"> </td></tr></tbody></table>\r\n"
+ "<hr/><p><a href=\"https://hjalmdclm.birlasoft.com:9443/rm/resources/MD_TVFepqfwEeuYp_otMLsSbQ\" id=\"_1617802899853\">Hyperlink:</a></p>\r\n"
+ "<p> </p>\r\n"
+ "</div></jazz_rm:primaryText>\r\n"
+ "    <dcterms:creator rdf:resource=\"https://hjalmdclm.birlasoft.com:9443/jts/users/anurag\"/>\r\n"
+ "  </rdf:Description>\r\n"
+ "</rdf:RDF>";

String xml=noteXml; //response.getEntity(String.class); 


HttpGet httpGet = new HttpGet(urls[0]);
httpGet.setHeader("Content-Type","application/rdf+xml");
httpGet.setHeader("Accept", "application/rdf+xml");
HttpResponse httpResponsepost = clientPost.getHttpClient().execute(httpGet);
System.out.println(httpResponsepost.getStatusLine().getStatusCode()); 

HttpClient httpClient = new DefaultHttpClient();

HttpResponse getResponse = CreateDngArtifact.sendGetForSecureDocument(serverUrlPost, httpGet, usernamePost, passwordPost, httpClient);
System.out.println("etag code :   "+getResponse.getStatusLine().getStatusCode());
System.out.println("etag code :   "+getResponse.getStatusLine());

String etag= CreateDngArtifact .getETag(getResponse); 
System.out.println("etag ::: "+etag);

EntityUtils.consumeQuietly(getResponse.getEntity());
List<String> list = new ArrayList<String>();
String uri = urls[0];


StringEntity stringEntity = new StringEntity(xml,"UTF-8");
HttpPut httpPut= new HttpPut(urls[0]); 
httpPut.setEntity(stringEntity); 
httpPut.addHeader("Content-Type","application/rdf+xml");
httpPut.addHeader("Accept", "application/rdf+xml");
httpPut.setHeader("If-Match", etag); 

HttpResponse responsePut = httpClient.execute(httpPut);

System.out.println("x : "+ responsePut.getStatusLine().getStatusCode());


}


public static String getETag(HttpResponse response){ 

Header[] headers = response.getAllHeaders(); 
for (int i = 0; i < headers.length; i++){ 
if(headers[i].getName().equalsIgnoreCase("etag")){ 
return headers[i].getValue(); 
return null; 




public static HttpResponse sendGetForSecureDocument(String serverURI, HttpGet request, String login, String password, HttpClient httpClient) 
throws IOException, InvalidCredentialsException {

HttpGet documentGet = new HttpGet(serverURI);
documentGet.addHeader("Accept", "application/rdf+xml");
//
// Step (1): Request the protected resource
//
HttpResponse response = httpClient.execute(request);
HttpClient tempClient = httpClient;
if (response.getStatusLine().getStatusCode() == 200) {
Header header =
response.getFirstHeader("x-com-ibm-team-repository-web-auth-msg");
if ((header!=null) && ("authrequired".equals(header.getValue()))) {
response.getEntity().consumeContent();
// The server requires an authentication: Create the login form
HttpPost formPost = new HttpPost(serverURI+"/j_security_check");
List nvps = new ArrayList();
nvps.add(new BasicNameValuePair("j_username", login));
nvps.add(new BasicNameValuePair("j_password", password));
formPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
//
// Step (2): The client submits the login form
//
HttpResponse formResponse = httpClient.execute(formPost);
header = formResponse.getFirstHeader("X-com-ibm-team-repository-web-auth-msg");
if ((header!=null) && ("authfailed".equals(header.getValue()))) {
// The login failed
throw new InvalidCredentialsException("Authentication failed");
} else {
// The login succeed
formResponse.getEntity().consumeContent();
//
// Step (3): Request again the protected resource
//
HttpGet documentGet2 = new HttpGet(serverURI);
documentGet2.addHeader("Accept", "application/rdf+xml");
HttpResponse res = httpClient.execute(request); 
return res;
}
}
}
return response;





}

Your answer


Register or to post your answer.