Create a new relation
This article shows how to use the ADOXX API to create new relations
.
The Java snippet below will create a new relation in the repository
between a source object
and a target object
.
note
The Java snippet below uses Basic Authentication.
Replace the values in angle brackets with values that fit your setup, e.g. instead of <HOST> use the host at which you access your ADOXX instance.
Click to view the code!
public class CreateRelation
{
public static void main (final String [] args) throws ClientProtocolException, IOException
{
final CloseableHttpClient aClient = HttpClients.createDefault ();
final String sUser = "<USER>";
final String sPass = "<PASSWORD>";
final String sRepoID = "<REPO_ID>";
final String sSrcObjectID = "<SRC_OBJECT_ID>";
final String sTrgObjectID = "<TRG_OBJECT_ID>";
final String sDirection = "outgoing";
final String sRelClass = "RC_EAM_COMPOSITION";
final String sPath = "http://<HOST>:<PORT>/ADOIT/rest/2.0/repos/" + sRepoID + "/objects/"+sSrcObjectID+"/relations/"+sDirection+"/"+sRelClass;
final HttpPost aMethod = new HttpPost (sPath);
final StringBuilder aCreationParams = new StringBuilder ();
aCreationParams.append ("{");
aCreationParams.append ("\"toId\":\""+sTrgObjectID+"\"");
aCreationParams.append ("}");
final StringEntity aJSON = new StringEntity (aCreationParams.toString (),
ContentType.APPLICATION_JSON);
aMethod.setEntity (aJSON);
// The headers controlling the return type and the language do not have to be considered for
// token generation
aMethod.addHeader ("Accept", "application/json");
aMethod.addHeader ("Accept-Language", "en");
// Construction of the header to pass the basic authentication information
aMethod.addHeader ("Authorization",
"Basic " +
DatatypeConverter.printBase64Binary ((sUser + ":" + sPass).getBytes ()));
final CloseableHttpResponse aResponse = aClient.execute (aMethod);
try
{
final String sResult = EntityUtils.toString (aResponse.getEntity (), "UTF-8");
final StatusLine aStatusLine = aResponse.getStatusLine ();
System.out.println ("Status Code: " + aStatusLine.getStatusCode ());
System.out.println ("Result: \n" + sResult);
}
catch (final Exception aEx)
{
aEx.printStackTrace ();
}
finally
{
aResponse.close ();
}
}
}
The result should look similar to the following:
Status Code: 201
Result:
{
"locale": "en",
"item": {
"rest_links": [ ... ],
"id": " ... ",
"name": "MyArtifact",
"type": "Artifact",
"artefactType": " ... ",
"metaName": "C_ARTIFACT",
"link": { ... },
"icon": { ... },
"attributes": [ ... ],
"relations": [ ... ]
}
}
Status Code: 201
Result:
{
"locale":"en",
"rest_links":[ ... ],
"from":
{
"rest_links":[ ... ],
"id":" ... ",
"metaName":"C_ARTIFACT",
"name":"MyArtifact",
"type":"Artifact",
"artefactType":"REPOSITORY_OBJECT"
},
"to":
{
"rest_links":[ ... ],
"id":" ... ",
"metaName":"C_ARTIFACT",
"name":"MyTargetArtifact",
"type":"Artifact",
"artefactType":"REPOSITORY_OBJECT"
},
"attributes":[ ... ]
}