From 28f9fa1399f5e513a3d5860c52cd51b615bc0a2c Mon Sep 17 00:00:00 2001 From: "Sotiropoulos, Ioannis (is948x)" Date: Mon, 11 Jun 2018 09:54:54 +0100 Subject: Process multi-OXM files Gizmo service uses common OXM consumer to process multi-OXM files Issue-ID: AAI-1196 Change-Id: If6dd50413a914984948272cd6bd98e2eeeaecedb Signed-off-by: Sotiropoulos, Ioannis (is948x) --- src/main/java/org/onap/crud/entity/Vertex.java | 32 ++++++++++------------ .../org/onap/crud/exception/CrudException.java | 4 +++ .../org/onap/crud/logging/CrudServiceMsgs.java | 7 ++++- .../java/org/onap/crud/util/CrudServiceUtil.java | 8 ++++-- 4 files changed, 30 insertions(+), 21 deletions(-) (limited to 'src/main/java/org/onap/crud') diff --git a/src/main/java/org/onap/crud/entity/Vertex.java b/src/main/java/org/onap/crud/entity/Vertex.java index efe2d5a..cffdcf1 100644 --- a/src/main/java/org/onap/crud/entity/Vertex.java +++ b/src/main/java/org/onap/crud/entity/Vertex.java @@ -20,30 +20,26 @@ */ package org.onap.crud.entity; -import net.dongliu.gson.GsonJava8TypeAdapterFactory; - -import com.google.common.base.CaseFormat; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.annotations.SerializedName; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.Set; - import org.eclipse.persistence.dynamic.DynamicType; import org.eclipse.persistence.internal.helper.DatabaseField; import org.eclipse.persistence.jaxb.dynamic.DynamicJAXBContext; import org.eclipse.persistence.mappings.DatabaseMapping; import org.json.JSONArray; import org.json.JSONObject; -import org.onap.aaiutils.oxm.OxmModelLoader; import org.onap.crud.exception.CrudException; import org.onap.crud.util.CrudServiceUtil; +import org.onap.schema.OxmModelLoader; import org.onap.schema.OxmModelValidator; +import com.google.common.base.CaseFormat; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.annotations.SerializedName; +import net.dongliu.gson.GsonJava8TypeAdapterFactory; public class Vertex { private static final Gson gson = new GsonBuilder().registerTypeAdapterFactory(new GsonJava8TypeAdapterFactory()) @@ -114,30 +110,30 @@ public class Vertex { try { String type = jsonObject.getString("type"); builder = new Builder(type).id(jsonObject.getString("key")); - + type = OxmModelValidator.resolveCollectionType(version, type); DynamicJAXBContext jaxbContext = OxmModelLoader.getContextForVersion(version); String modelObjectClass = CaseFormat.LOWER_CAMEL.to(CaseFormat.UPPER_CAMEL, CaseFormat.LOWER_HYPHEN.to(CaseFormat.UPPER_CAMEL, type)); final DynamicType modelObjectType = jaxbContext.getDynamicType(modelObjectClass); final DynamicType reservedType = jaxbContext.getDynamicType("ReservedPropNames"); - - + + if (modelObjectType == null) { throw new CrudException("Unable to load oxm version", javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR); } if (jsonObject.has("properties")) { JSONObject jsonProps = jsonObject.getJSONObject("properties"); - for (String key : (Set)jsonProps.keySet()) { + for (String key : jsonProps.keySet()) { String keyJavaName = CaseFormat.LOWER_HYPHEN.to(CaseFormat.LOWER_CAMEL, key); DatabaseMapping mapping = modelObjectType.getDescriptor().getMappingForAttributeName(keyJavaName); - + if (mapping == null) { // This might be one of the reserved properties mapping = reservedType.getDescriptor().getMappingForAttributeName(keyJavaName); } - + if (mapping != null) { DatabaseField field = mapping.getField(); Object value = CrudServiceUtil.validateFieldType(jsonProps.get(key).toString(), field.getType()); @@ -149,8 +145,8 @@ public class Vertex { catch (Exception ex) { throw new CrudException("Unable to transform response: " + jsonObject.toString(), javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR); } - - return builder.build(); + + return builder.build(); } public static List collectionFromJson(String jsonString, String version) throws CrudException { diff --git a/src/main/java/org/onap/crud/exception/CrudException.java b/src/main/java/org/onap/crud/exception/CrudException.java index a4fb3d7..57d9858 100644 --- a/src/main/java/org/onap/crud/exception/CrudException.java +++ b/src/main/java/org/onap/crud/exception/CrudException.java @@ -30,6 +30,10 @@ public class CrudException extends Exception { public CrudException() {} + public CrudException(String message) { + super(message); + } + public CrudException(String message, Status httpStatus) { super(message); this.setHttpStatus(httpStatus); diff --git a/src/main/java/org/onap/crud/logging/CrudServiceMsgs.java b/src/main/java/org/onap/crud/logging/CrudServiceMsgs.java index 36cb3f5..72883a9 100644 --- a/src/main/java/org/onap/crud/logging/CrudServiceMsgs.java +++ b/src/main/java/org/onap/crud/logging/CrudServiceMsgs.java @@ -120,7 +120,12 @@ public enum CrudServiceMsgs implements LogMessageEnum { /** * Arguments: {0} Opertaion {1} URI {2} = Exception */ - EXCEPTION_DURING_METHOD_CALL; + EXCEPTION_DURING_METHOD_CALL, + + /** + * Schema Ingest properties file was not loaded properly + */ + SCHEMA_INGEST_LOAD_ERROR; /** * Static initializer to ensure the resource bundles for this class are diff --git a/src/main/java/org/onap/crud/util/CrudServiceUtil.java b/src/main/java/org/onap/crud/util/CrudServiceUtil.java index 7943218..4d108f2 100644 --- a/src/main/java/org/onap/crud/util/CrudServiceUtil.java +++ b/src/main/java/org/onap/crud/util/CrudServiceUtil.java @@ -21,8 +21,8 @@ package org.onap.crud.util; import org.onap.aai.db.props.AAIProperties; -import org.onap.aaiutils.oxm.OxmModelLoader; import org.onap.crud.exception.CrudException; +import org.onap.schema.OxmModelLoader; import org.onap.schema.RelationshipSchemaLoader; import com.google.gson.Gson; @@ -41,6 +41,8 @@ import javax.ws.rs.core.Response.Status; public class CrudServiceUtil { private static Gson gson = new Gson(); + + @SuppressWarnings({"unchecked", "rawtypes"}) public static Object validateFieldType(String value, Class clazz) throws CrudException { try { if (clazz.isAssignableFrom(Integer.class)) { @@ -88,7 +90,9 @@ public class CrudServiceUtil { * @param isAdd * @return */ - public static JsonElement mergeHeaderInFoToPayload(JsonElement propertiesFromRequest, HttpHeaders headers, boolean isAdd) { + @SuppressWarnings("unchecked") + public static JsonElement mergeHeaderInFoToPayload(JsonElement propertiesFromRequest, HttpHeaders headers, + boolean isAdd) { String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId"); Set> properties = new HashSet>(); properties.addAll(propertiesFromRequest.getAsJsonObject().entrySet()); -- cgit 1.2.3-korg