diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java
index 125fba650f..c4844156aa 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/core/v0/BaseAPI.java
@@ -640,26 +640,4 @@ public abstract class BaseAPI
{
return FILE_PLAN_PATH;
}
-
- /**
- * List of existing records management custom references.
- */
- public enum CUSTOM_DEFINITIONS
- {
- ATTACHMENT("Attachment"),
- MESSAGE("Message"),
- NEXT_VERSION("Next Version"),
- RENDITION("Rendition");
- String definition;
-
- private CUSTOM_DEFINITIONS(String definition)
- {
- this.definition = definition;
- }
-
- public String getDefinition()
- {
- return definition;
- }
- }
}
diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java
new file mode 100644
index 0000000000..5e94f25d91
--- /dev/null
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/rm/community/model/custom/CustomDefinitions.java
@@ -0,0 +1,63 @@
+/*
+ * #%L
+ * Alfresco Records Management Module
+ * %%
+ * Copyright (C) 2005 - 2017 Alfresco Software Limited
+ * %%
+ * This file is part of the Alfresco software.
+ * -
+ * If the software was purchased under a paid Alfresco license, the terms of
+ * the paid license agreement will prevail. Otherwise, the software is
+ * provided under the following open source license terms:
+ * -
+ * Alfresco is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * -
+ * Alfresco is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ * -
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with Alfresco. If not, see .
+ * #L%
+ */
+package org.alfresco.rest.rm.community.model.custom;
+
+/**
+ * List of existing records management custom references.
+ *
+ * @author Rodica Sutu
+ * @since 2.6
+ */
+public enum CustomDefinitions
+{
+ ATTACHMENT("Attachment"),
+ MESSAGE("Message"),
+ NEXT_VERSION("Next Version"),
+ RENDITION("Rendition");
+ /**
+ * The name of custom reference.
+ */
+ private String definition;
+
+ /**
+ * Private constructor.
+ */
+ CustomDefinitions(String definition)
+ {
+ this.definition = definition;
+ }
+
+ /**
+ * Get the name of the custom reference.
+ *
+ * @return The value of custom reference.
+ */
+ public String getDefinition()
+ {
+ return definition;
+ }
+}
diff --git a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java
index 257ac05bb7..fd2ab72a1b 100644
--- a/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java
+++ b/rm-automation/rm-automation-community-rest-api/src/main/java/org/alfresco/rest/v0/CustomDefinitionsAPI.java
@@ -29,6 +29,7 @@ package org.alfresco.rest.v0;
import java.text.MessageFormat;
import org.alfresco.rest.core.v0.BaseAPI;
+import org.alfresco.rest.rm.community.model.custom.CustomDefinitions;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -55,35 +56,52 @@ public class CustomDefinitionsAPI extends BaseAPI
*/
private static final String CREATE_RELATIONSHIP_API_ENDPOINT = "{0}node/{1}/customreferences";
- // logger
+ /**
+ * logger
+ */
private static final Logger LOGGER = LoggerFactory.getLogger(CustomDefinitionsAPI.class);
/**
- * Helper method to get custom references definitions
+ * Helper method to get the reference id for a custom reference
*
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param customDefinition custom reference definition name
+ * @return reference id
if the customDefinition is found
+ * null
otherwise
+ *
*/
-
- public String getCustomReferencesId(String adminUser, String adminPassword, String customDefinition)
+ public String getCustomReferenceId(String adminUser, String adminPassword, String customDefinition)
{
JSONObject getResponse = doGetRequest(adminUser, adminPassword, CUSTOM_REFERENCE_API_ENDPOINT);
if (getResponse != null)
+ {
try
{
JSONArray customDefinitions = getResponse.getJSONObject("data").getJSONArray("customReferences");
for (int i = 0; i < customDefinitions.length(); i++)
{
JSONObject item = customDefinitions.getJSONObject(i);
- if (customDefinition.equalsIgnoreCase(item.has("source") ? item.getString("source") : null) ||
- customDefinition.equalsIgnoreCase(item.has("target") ? item.getString("target") : null) ||
- customDefinition.equalsIgnoreCase(item.has("label") ? item.getString("label") : null)
- )
+ boolean hasSource = customDefinition.equalsIgnoreCase(
+ item.has("source") ? item.getString("source") : null
+ );
+
+ boolean hasTarget = customDefinition.equalsIgnoreCase(
+ item.has("target") ? item.getString("target") : null
+ );
+
+ boolean hasLabel = customDefinition.equalsIgnoreCase(
+ item.has("label") ? item.getString("label") : null
+ );
+ if ( hasSource || hasTarget || hasLabel)
{
return item.getString("refId");
}
+ else
+ {
+ return null;
+ }
}
}
@@ -91,6 +109,7 @@ public class CustomDefinitionsAPI extends BaseAPI
{
LOGGER.error("Unable to get the refId for the custom reference definition " + customDefinition);
}
+ }
return null;
}
@@ -100,23 +119,24 @@ public class CustomDefinitionsAPI extends BaseAPI
* @param adminUser user with administrative privileges
* @param adminPassword password for adminUser
* @param recordNodeIdFrom node ref to set a custom reference
- * @param recordNodeIdto node ref of the to record
- * @return true
if creating relationship was successful,
- * false
otherwise
+ * @param recordNodeIdTo node ref of the to record
+ * @param relationshipType relation type to be created
+ * @return true
if creating relationship was successful,
+ * false
otherwise
*/
public boolean createRelationship(
String adminUser,
String adminPassword,
String recordNodeIdFrom,
- String recordNodeIdto,
- CUSTOM_DEFINITIONS relationshipType)
+ String recordNodeIdTo,
+ CustomDefinitions relationshipType)
{
try
{
//create the request body
JSONObject requestParams = new JSONObject();
- requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdto);
- requestParams.put("refId", getCustomReferencesId(adminUser, adminPassword, relationshipType
+ requestParams.put("toNode", NODE_REF_WORKSPACE_SPACES_STORE + recordNodeIdTo);
+ requestParams.put("refId", getCustomReferenceId(adminUser, adminPassword, relationshipType
.getDefinition()));
//send the API request to create the relationship
JSONObject setRelationshipStatus = doPostRequest(adminUser, adminPassword, requestParams,