summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre Rioux <pierre.rioux@amdocs.com>2018-12-20 17:50:49 -0500
committerPierre Rioux <pierre.rioux@amdocs.com>2018-12-20 17:51:21 -0500
commitcd08571c1061eb88bea65c8eca72678661c2f586 (patch)
tree326c81a63d49e8b747199b04e24b5b003070e9a5
parent748e0d7d368936966607ea6a35fe99c93641e242 (diff)
[LOG-404] updating built-in rule for data-dict API
Change-Id: I8b6f79c015507facbd785fed9d9658218f7ae9ac Signed-off-by: Pierre Rioux <pierre.rioux@amdocs.com> Issue-ID: LOG-404
-rw-r--r--src/main/java/org/onap/aai/validation/ruledriven/rule/builtin/DataDictionary.java104
1 files changed, 67 insertions, 37 deletions
diff --git a/src/main/java/org/onap/aai/validation/ruledriven/rule/builtin/DataDictionary.java b/src/main/java/org/onap/aai/validation/ruledriven/rule/builtin/DataDictionary.java
index cddeb85..dc5cdc2 100644
--- a/src/main/java/org/onap/aai/validation/ruledriven/rule/builtin/DataDictionary.java
+++ b/src/main/java/org/onap/aai/validation/ruledriven/rule/builtin/DataDictionary.java
@@ -22,7 +22,6 @@ import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
import com.sun.jersey.core.util.MultivaluedMapImpl;
-import groovy.lang.GString;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Arrays;
@@ -46,6 +45,12 @@ public class DataDictionary {
private static String urlTemplate;
private static org.onap.aai.restclient.client.RestClient restClient;
+ public enum COMMON_MODEL_ELEMENT_TYPE {
+ INSTANCE,
+ ATTRIBUTE,
+ UNSUPPORTED;
+ }
+
private DataDictionary() {
// intentionally empty
@@ -72,33 +77,60 @@ public class DataDictionary {
/**
- * Generates a REST request to data-dictionary to validate the given entities.
- * URI: /commonModelElements/[entityType]~[entityName]~1.0/validateInstance
- * Currently only "instance" is supported for entityType.
+ * Generates a REST request to data-dictionary to validate the given attributes.
+ *
+ * URI: /commonModelElements/[commonModelElementId]/validateInstance
+ * where commonModelElementId is defined as:
+ * [commonModelElementType]~[commonModelElementName]~[commonModelElementVersion]
+ *
+ * Supported commonModelElementType:
+ * instance
+ * attribute
*
- * @param entityType
- * @param entityName
- * @param entities
+ * Examples:
+ * /commonModelElements/instance~nfValuesCatalog~1.0/validateInstance
+ * /commonModelElements/attribute~nfRole~1.0/validateInstance
+ *
+ * @param commonModelElementType "instance" or "attribute"
+ * @param commonModelElementName name of common model element
+ * @param attributeName
+ * @param attributeValue
* @return
*/
- public static String validate(String entityType, String entityName, List<Map<GString, GString>> entities) {
-
- logger.debug("Executing built-in rule with...");
- for(Map<GString, GString> attributes : entities) {
- logger.debug(" " + attributes.toString());
+ public static String validate(String commonModelElementType, String commonModelElementName,
+ String attributeName, String attributeValue) {
+
+ COMMON_MODEL_ELEMENT_TYPE cmeType = COMMON_MODEL_ELEMENT_TYPE.UNSUPPORTED;
+ try {
+ cmeType = COMMON_MODEL_ELEMENT_TYPE.valueOf(commonModelElementType.toUpperCase());
+ } catch(IllegalArgumentException e) {
+ final String error = "unsupported commonModelElementType: " + commonModelElementType;
+ logger.error(ApplicationMsgs.CANNOT_VALIDATE_ERROR, error);
+ return error;
}
- if(entities == null || entities.isEmpty()) {
- final String error = "list of instances missing";
+ if(attributeValue == null || attributeValue.isEmpty()) {
+ final String error = "element value missing";
logger.error(ApplicationMsgs.CANNOT_VALIDATE_ERROR, error);
return error;
}
- String url = MessageFormat.format(urlTemplate, entityType, entityName);
+ logger.debug("Executing built-in rule with: '" + commonModelElementType + "', '" + commonModelElementName +
+ "'; attribute: " + attributeName + "=" + attributeValue);
+
Gson gson = new GsonBuilder().create();
- String payload = gson.toJson(new Request(entities));
+ String payload = gson.toJson(new Request(cmeType, attributeName, attributeValue));
+
+ String url = MessageFormat.format(urlTemplate, commonModelElementType, commonModelElementName);
OperationResult result = post(url, payload);
+ if(result.getResultCode() == 500) {
+ // network unreachable; log a warning and return success
+ logger.warn(ApplicationMsgs.EVENT_CLIENT_CLOSE_UNSENT_MESSAGE,
+ ValidationServiceError.REST_CLIENT_RESPONSE_ERROR.getMessage(result.getResultCode(), result.getFailureCause()));
+ return "";
+ }
+
if(result.getResultCode() != 200 && result.getResultCode() != 204) {
String error = ValidationServiceError.REST_CLIENT_RESPONSE_ERROR.getMessage(result.getResultCode(), result.getFailureCause());
logger.error(ApplicationMsgs.CANNOT_VALIDATE_ERROR, error);
@@ -127,30 +159,28 @@ public class DataDictionary {
public static class Request {
@Expose
@SerializedName("instance")
- private List<Object> instances;
-
- public Request(List<Map<GString, GString>> groovyInstances) {
- instances = new ArrayList<>();
- for(Map<GString, GString> groovyEntry : groovyInstances) {
- instances.add(createInstance(groovyEntry));
+ private Object instance;
+
+ public Request(COMMON_MODEL_ELEMENT_TYPE cmeType, String attributeName, String attributeValue) {
+ switch(cmeType) {
+ case INSTANCE:
+ Map<String, String> map = new HashMap<>();
+ map.put(attributeName, attributeValue);
+ List<Object> list = new ArrayList<>();
+ list.add(map);
+ instance = list;
+ break;
+ case ATTRIBUTE:
+ instance = attributeValue;
+ break;
+ default:
+ logger.error(ApplicationMsgs.CANNOT_VALIDATE_ERROR, "unsupported commonModelElementType");
+ break;
}
}
- public List<Object> getInstance() {
- return instances;
- }
-
- /**
- * Creates an instance entry; converts Groovy's GString into a java String
- * @param groovyMap
- * @return
- */
- private Map<String, String> createInstance(Map<GString, GString> groovyMap) {
- Map<String, String> newMap = new HashMap<>();
- for(Map.Entry<GString, GString> groovyEntry : groovyMap.entrySet()) {
- newMap.put(groovyEntry.getKey().toString(), groovyEntry.getValue().toString());
- }
- return newMap;
+ public Object getInstance() {
+ return instance;
}
}
}