X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fonap%2Fcrud%2Fentity%2FVertex.java;h=fd03827de6a5fe1ff5423f941d20620ecd97361a;hb=d10a218c76633374f083f7a2802c198e93a6abae;hp=8fddaa3ebe77cc43eaea47ec10836bf5c199ed7b;hpb=c8d962ad88da4403ae9186e7213a7ce28b82aaa1;p=aai%2Fgizmo.git diff --git a/src/main/java/org/onap/crud/entity/Vertex.java b/src/main/java/org/onap/crud/entity/Vertex.java index 8fddaa3..fd03827 100644 --- a/src/main/java/org/onap/crud/entity/Vertex.java +++ b/src/main/java/org/onap/crud/entity/Vertex.java @@ -1,16 +1,15 @@ /** * ============LICENSE_START======================================================= - * Gizmo + * org.onap.aai * ================================================================================ - * Copyright © 2017 AT&T Intellectual Property. - * Copyright © 2017 Amdocs - * All rights reserved. + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * - * http://www.apache.org/licenses/LICENSE-2.0 + * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, @@ -18,32 +17,29 @@ * See the License for the specific language governing permissions and * limitations under the License. * ============LICENSE_END========================================================= - * - * ECOMP is a trademark and service mark of AT&T Intellectual Property. */ 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.OxmModelValidator; +import org.onap.schema.OxmModelLoader; +import org.onap.schema.validation.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()) @@ -104,36 +100,40 @@ public class Vertex { } public static Vertex fromJson(String jsonString, String version) throws CrudException { + JSONObject doc = new JSONObject(jsonString); + return fromJson(doc, version); + } + + public static Vertex fromJson(JSONObject jsonObject, String version) throws CrudException { Builder builder; try { - JSONObject doc = new JSONObject(jsonString); - String type = doc.getString("type"); - builder = new Builder(type).id(doc.getString("key")); - + 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 (doc.has("properties")) { - JSONObject jsonProps = doc.getJSONObject("properties"); - for (String key : (Set)jsonProps.keySet()) { + if (jsonObject.has("properties")) { + JSONObject jsonProps = jsonObject.getJSONObject("properties"); + 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()); @@ -143,10 +143,21 @@ public class Vertex { } } catch (Exception ex) { - throw new CrudException("Unable to transform response: " + jsonString, javax.ws.rs.core.Response.Status.INTERNAL_SERVER_ERROR); + 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 { + List result = new ArrayList<>(); + JSONArray array = new JSONArray(jsonString); + + for (Object jsonObject : array) { + result.add(Vertex.fromJson((JSONObject)jsonObject, version)); + } + + return result; } @Override