diff options
13 files changed, 430 insertions, 1141 deletions
diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AaiHttpClientConfig.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AaiHttpClientConfig.java index 0d20c39c..c4566888 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AaiHttpClientConfig.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/configuration/AaiHttpClientConfig.java @@ -23,6 +23,7 @@ package org.onap.dcaegen2.services.prh.configuration; import org.onap.dcaegen2.services.prh.model.AaiJsonBodyBuilderImpl; import org.onap.dcaegen2.services.prh.model.AaiPnfResultModel; import org.onap.dcaegen2.services.prh.model.AaiServiceInstanceResultModel; +import org.onap.dcaegen2.services.prh.model.utils.PrhModelAwareGsonBuilder; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.config.AaiClientConfiguration; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.AaiHttpClientFactory; import org.onap.dcaegen2.services.sdk.rest.services.aai.client.service.http.AaiHttpClient; @@ -37,6 +38,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import java.nio.charset.StandardCharsets; import java.util.function.BiFunction; @Configuration @@ -54,14 +56,16 @@ public class AaiHttpClientConfig { public AaiHttpClient<AaiServiceInstanceQueryModel, AaiServiceInstanceResultModel> getServiceInstanceClient() { return createLazyConfigClient( (config, client) -> new AaiGetServiceInstanceClient(config, client) - .map(x -> x.bodyAsJson(AaiServiceInstanceResultModel.class))); + .map(httpResponse -> httpResponse.bodyAsJson(StandardCharsets.UTF_8, + PrhModelAwareGsonBuilder.createGson(), AaiServiceInstanceResultModel.class))); } @Bean public AaiHttpClient<AaiModel, AaiPnfResultModel> getGetClient() { return createLazyConfigClient( (config, client) -> new AaiHttpGetClient(config, client) - .map(x -> x.bodyAsJson(AaiPnfResultModel.class))); + .map(httpResponse -> httpResponse.bodyAsJson(StandardCharsets.UTF_8, + PrhModelAwareGsonBuilder.createGson(), AaiPnfResultModel.class))); } private <T, U> AaiHttpClient<T, U> createLazyConfigClient( diff --git a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTaskImpl.java b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTaskImpl.java index 0b26890d..a0d844b1 100644 --- a/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTaskImpl.java +++ b/prh-app-server/src/main/java/org/onap/dcaegen2/services/prh/tasks/BbsActionsTaskImpl.java @@ -30,8 +30,8 @@ import org.onap.dcaegen2.services.prh.model.bbs.ImmutableLogicalLink; import org.onap.dcaegen2.services.prh.model.bbs.ImmutableRelationship; import org.onap.dcaegen2.services.prh.model.bbs.ImmutableRelationshipWrapper; import org.onap.dcaegen2.services.prh.model.bbs.RelationshipWrapper; -import org.onap.dcaegen2.services.prh.model.utils.GsonSerializer; import org.onap.dcaegen2.services.prh.model.utils.HttpUtils; +import org.onap.dcaegen2.services.prh.model.utils.PrhModelAwareGsonBuilder; import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.*; import org.onap.dcaegen2.services.sdk.rest.services.uri.URI.URIBuilder; import org.slf4j.Logger; @@ -98,7 +98,7 @@ public class BbsActionsTaskImpl implements BbsActionsTask { private ImmutableHttpRequest buildLogicalLinkRequest(String linkName, String pnfName) { String uri = buildLogicalLinkUri(linkName); ImmutableLogicalLink logicalLink = buildModel(linkName, pnfName); - RequestBody requestBody = RequestBody.fromString(GsonSerializer.createJsonBody(logicalLink)); + RequestBody requestBody = RequestBody.fromString(PrhModelAwareGsonBuilder.createGson().toJson(logicalLink)); // FIXME: AAI headers for PUT are different than PATCH (taken from prh_endpoints.json) Map<String, String> aaiHeaders = HashMap diff --git a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiQueryTaskImplTest.java b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiQueryTaskImplTest.java index 4b6d7a61..26a6060f 100644 --- a/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiQueryTaskImplTest.java +++ b/prh-app-server/src/test/java/org/onap/dcaegen2/services/prh/tasks/AaiQueryTaskImplTest.java @@ -38,6 +38,7 @@ import java.util.List; import static org.mockito.ArgumentMatchers.any; import static org.mockito.BDDMockito.given; +import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) public class AaiQueryTaskImplTest { @@ -59,9 +60,14 @@ public class AaiQueryTaskImplTest { @Mock private AaiServiceInstanceResultModel serviceModel; - private final RelationshipData customer = new RelationshipData(); - private final RelationshipData serviceType = new RelationshipData(); - private final RelationshipData serviceInstanceId = new RelationshipData(); + @Mock + private RelationshipData customer; + + @Mock + private RelationshipData serviceType; + + @Mock + private RelationshipData serviceInstanceId; private List<RelationshipData> allRelationData; @@ -71,14 +77,14 @@ public class AaiQueryTaskImplTest { @BeforeEach void setUp() { - customer.setRelationshipKey(AaiQueryTaskImpl.CUSTOMER); - customer.setRelationshipValue("Foo"); + when(customer.getRelationshipKey()).thenReturn(AaiQueryTaskImpl.CUSTOMER); + when(customer.getRelationshipValue()).thenReturn("Foo"); - serviceType.setRelationshipKey(AaiQueryTaskImpl.SERVICE_TYPE); - serviceType.setRelationshipValue("Bar"); + when(serviceType.getRelationshipKey()).thenReturn(AaiQueryTaskImpl.SERVICE_TYPE); + when(serviceType.getRelationshipValue()).thenReturn("Bar"); - serviceInstanceId.setRelationshipKey(AaiQueryTaskImpl.SERVICE_INSTANCE_ID); - serviceInstanceId.setRelationshipValue("Baz"); + when(serviceInstanceId.getRelationshipKey()).thenReturn(AaiQueryTaskImpl.SERVICE_INSTANCE_ID); + when(serviceInstanceId.getRelationshipValue()).thenReturn("Baz"); allRelationData = Lists.list(customer, serviceType, serviceInstanceId); diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModel.java index e6d813f7..424d7f83 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModel.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModel.java @@ -21,438 +21,186 @@ package org.onap.dcaegen2.services.prh.model; import com.google.gson.annotations.SerializedName; +import org.immutables.gson.Gson; +import org.immutables.value.Value; +import org.springframework.lang.Nullable; + /** * PNF represents a physical network function. typically equipment used in the D1 world. in 1607, this will be populated by SDN-C to represent a premises router that a uCPE connects to. But this can be used to represent any physical device that is not an AIC node or uCPE. ###### Related Nodes - TO complex( pnf LocatedIn complex, MANY2ONE) - TO instance-group( pnf MemberOf instance-group, MANY2MANY) - TO zone( pnf LocatedIn zone, MANY2ONE) - FROM configuration( configuration AppliesTo pnf, ONE2MANY) - FROM esr-thirdparty-sdnc( esr-thirdparty-sdnc AppliesTo pnf, ONE2MANY) - FROM generic-vnf( generic-vnf HostedOn pnf, MANY2MANY) - FROM lag-interface (CHILD of pnf, lag-interface BindsTo pnf, MANY2ONE)(1) - FROM logical-link( logical-link BridgedTo pnf, MANY2MANY) - FROM p-interface (CHILD of pnf, p-interface BindsTo pnf, MANY2ONE)(1) - FROM service-instance( service-instance ComposedOf pnf, ONE2MANY) -(1) IF this PNF node is deleted, this FROM node is DELETED also */ - -public class AaiPnfResultModel { - @SerializedName("pnf-name") - private String pnfName = null; - - @SerializedName("pnf-name2") - private String pnfName2 = null; - - @SerializedName("selflink") - private String selflink = null; - - @SerializedName("pnf-name2-source") - private String pnfName2Source = null; - - @SerializedName("pnf-id") - private String pnfId = null; - - @SerializedName("equip-type") - private String equipType = null; - - @SerializedName("equip-vendor") - private String equipVendor = null; - - @SerializedName("equip-model") - private String equipModel = null; - - @SerializedName("management-option") - private String managementOption = null; - - @SerializedName("ipaddress-v4-oam") - private String ipaddressV4Oam = null; - - @SerializedName("sw-version") - private String swVersion = null; - - @SerializedName("in-maint") - private Boolean inMaint = null; - - @SerializedName("frame-id") - private String frameId = null; - - @SerializedName("serial-number") - private String serialNumber = null; - - @SerializedName("ipaddress-v4-loopback-0") - private String ipaddressV4Loopback0 = null; - - @SerializedName("ipaddress-v6-loopback-0") - private String ipaddressV6Loopback0 = null; - - @SerializedName("ipaddress-v4-aim") - private String ipaddressV4Aim = null; - - @SerializedName("ipaddress-v6-aim") - private String ipaddressV6Aim = null; - - @SerializedName("ipaddress-v6-oam") - private String ipaddressV6Oam = null; - - @SerializedName("inv-status") - private String invStatus = null; - - @SerializedName("resource-version") - private String resourceVersion = null; - - @SerializedName("prov-status") - private String provStatus = null; - - @SerializedName("nf-role") - private String nfRole = null; - - @SerializedName("relationship-list") - private Relationship relationshipList = null; +@Value.Immutable +@Gson.TypeAdapters(fieldNamingStrategy = true) +public interface AaiPnfResultModel { /** * unique name of Physical Network Function. - * - * @return pnfName **/ - public String getPnfName() { - return pnfName; - } - - public void setPnfName(String pnfName) { - this.pnfName = pnfName; - } + @Nullable + @SerializedName("pnf-name") + String getPnfName(); /** * name of Physical Network Function. - * - * @return pnfName2 **/ - public String getPnfName2() { - return pnfName2; - } - - public void setPnfName2(String pnfName2) { - this.pnfName2 = pnfName2; - } + @Nullable + @SerializedName("pnf-name2") + String getPnfName2(); /** * URL to endpoint where AAI can get more details. - * - * @return selflink **/ - public String getSelflink() { - return selflink; - } - - public void setSelflink(String selflink) { - this.selflink = selflink; - } + @Nullable + @SerializedName("selflink") + String getSelflink(); /** * source of name2 - * - * @return pnfName2Source **/ - public String getPnfName2Source() { - return pnfName2Source; - } - - public void setPnfName2Source(String pnfName2Source) { - this.pnfName2Source = pnfName2Source; - } + @Nullable + @SerializedName("pnf-name2-source") + String getPnfName2Source(); /** * id of pnf - * - * @return pnfId **/ - public String getPnfId() { - return pnfId; - } - - public void setPnfId(String pnfId) { - this.pnfId = pnfId; - } + @Nullable + @SerializedName("pnf-id") + String getPnfId(); /** * Equipment type. Source of truth should define valid values. - * - * @return equipType **/ - public String getEquipType() { - return equipType; - } - - public void setEquipType(String equipType) { - this.equipType = equipType; - } + @Nullable + @SerializedName("equip-type") + String getEquipType(); /** * Equipment vendor. Source of truth should define valid values. - * - * @return equipVendor **/ - public String getEquipVendor() { - return equipVendor; - } - - public void setEquipVendor(String equipVendor) { - this.equipVendor = equipVendor; - } + @Nullable + @SerializedName("equip-vendor") + String getEquipVendor(); /** * Equipment model. Source of truth should define valid values. - * - * @return equipModel **/ - public String getEquipModel() { - return equipModel; - } - - public void setEquipModel(String equipModel) { - this.equipModel = equipModel; - } + @Nullable + @SerializedName("equip-model") + String getEquipModel(); /** * identifier of managed by ATT or customer - * - * @return managementOption **/ - public String getManagementOption() { - return managementOption; - } - - public void setManagementOption(String managementOption) { - this.managementOption = managementOption; - } + @Nullable + @SerializedName("management-option") + String getManagementOption(); /** * ipv4-oam-address with new naming convention for IP addresses - * - * @return ipaddressV4Oam **/ - public String getIpaddressV4Oam() { - return ipaddressV4Oam; - } - - public void setIpaddressV4Oam(String ipaddressV4Oam) { - this.ipaddressV4Oam = ipaddressV4Oam; - } + @Nullable + @SerializedName("ipaddress-v4-oam") + String getIpaddressV4Oam(); /** * sw-version is the version of SW for the hosted application on the PNF. - * - * @return swVersion **/ - public String getSwVersion() { - return swVersion; - } - - public void setSwVersion(String swVersion) { - this.swVersion = swVersion; - } + @Nullable + @SerializedName("sw-version") + String getSwVersion(); /** * Used to indicate whether or not this object is in maintenance mode (maintenance mode = true). This field (in conjunction with prov-status) is used to suppress alarms and vSCL on VNFs/VMs. - * - * @return inMaint **/ - public Boolean isInMaint() { - return inMaint; - } - - public void setInMaint(Boolean inMaint) { - this.inMaint = inMaint; - } + @Nullable + @SerializedName("in-maint") + Boolean isInMaint(); /** * ID of the physical frame (relay rack) where pnf is installed. - * - * @return frameId **/ - public String getFrameId() { - return frameId; - } - - public void setFrameId(String frameId) { - this.frameId = frameId; - } + @Nullable + @SerializedName("frame-id") + String getFrameId(); /** * Serial number of the device - * - * @return serialNumber **/ - public String getSerialNumber() { - return serialNumber; - } - - public void setSerialNumber(String serialNumber) { - this.serialNumber = serialNumber; - } + @Nullable + @SerializedName("serial-number") + String getSerialNumber(); /** * IPV4 Loopback 0 address - * - * @return ipaddressV4Loopback0 **/ - public String getIpaddressV4Loopback0() { - return ipaddressV4Loopback0; - } - - public void setIpaddressV4Loopback0(String ipaddressV4Loopback0) { - this.ipaddressV4Loopback0 = ipaddressV4Loopback0; - } + @Nullable + @SerializedName("ipaddress-v4-loopback-0") + String getIpaddressV4Loopback0(); /** * IPV6 Loopback 0 address - * - * @return ipaddressV6Loopback0 **/ - public String getIpaddressV6Loopback0() { - return ipaddressV6Loopback0; - } - - public void setIpaddressV6Loopback0(String ipaddressV6Loopback0) { - this.ipaddressV6Loopback0 = ipaddressV6Loopback0; - } + @Nullable + @SerializedName("ipaddress-v6-loopback-0") + String getIpaddressV6Loopback0(); /** * IPV4 AIM address - * - * @return ipaddressV4Aim **/ - public String getIpaddressV4Aim() { - return ipaddressV4Aim; - } - - public void setIpaddressV4Aim(String ipaddressV4Aim) { - this.ipaddressV4Aim = ipaddressV4Aim; - } + @Nullable + @SerializedName("ipaddress-v4-aim") + String getIpaddressV4Aim(); /** * IPV6 AIM address - * - * @return ipaddressV6Aim **/ - public String getIpaddressV6Aim() { - return ipaddressV6Aim; - } - - public void setIpaddressV6Aim(String ipaddressV6Aim) { - this.ipaddressV6Aim = ipaddressV6Aim; - } + @Nullable + @SerializedName("ipaddress-v6-aim") + String getIpaddressV6Aim(); /** * IPV6 OAM address - * - * @return ipaddressV6Oam **/ - public String getIpaddressV6Oam() { - return ipaddressV6Oam; - } - - public void setIpaddressV6Oam(String ipaddressV6Oam) { - this.ipaddressV6Oam = ipaddressV6Oam; - } + @Nullable + @SerializedName("ipaddress-v6-oam") + String getIpaddressV6Oam(); /** * CANOPI's inventory status. Only set with values exactly as defined by CANOPI. - * - * @return invStatus **/ - public String getInvStatus() { - return invStatus; - } - - public void setInvStatus(String invStatus) { - this.invStatus = invStatus; - } + @Nullable + @SerializedName("inv-status") + String getInvStatus(); /** - * Used for optimistic concurrency. Must be empty on create, valid on update and delete. - * - * @return resourceVersion + * Used for optimistic concurrency. Must be empty on createGson, valid on update and delete. **/ - public String getResourceVersion() { - return resourceVersion; - } - - public void setResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } + @Nullable + @SerializedName("resource-version") + String getResourceVersion(); /** * Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV] - * - * @return provStatus **/ - public String getProvStatus() { - return provStatus; - } - - public void setProvStatus(String provStatus) { - this.provStatus = provStatus; - } + @Nullable + @SerializedName("prov-status") + String getProvStatus(); /** * Nf Role is the role performed by this instance in the network. - * - * @return nfRole **/ - public String getNfRole() { - return nfRole; - } - - public void setNfRole(String nfRole) { - this.nfRole = nfRole; - } + @Nullable + @SerializedName("nf-role") + String getNfRole(); /** * Get relationshipList - * - * @return relationshipList **/ - public Relationship getRelationshipList() { - return relationshipList; - } - - public void setRelationshipList(Relationship relationshipList) { - this.relationshipList = relationshipList; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class AaiPnfResultModel {\n"); - - sb.append(" pnfName: ").append(toIndentedString(pnfName)).append("\n"); - sb.append(" pnfName2: ").append(toIndentedString(pnfName2)).append("\n"); - sb.append(" selflink: ").append(toIndentedString(selflink)).append("\n"); - sb.append(" pnfName2Source: ").append(toIndentedString(pnfName2Source)).append("\n"); - sb.append(" pnfId: ").append(toIndentedString(pnfId)).append("\n"); - sb.append(" equipType: ").append(toIndentedString(equipType)).append("\n"); - sb.append(" equipVendor: ").append(toIndentedString(equipVendor)).append("\n"); - sb.append(" equipModel: ").append(toIndentedString(equipModel)).append("\n"); - sb.append(" managementOption: ").append(toIndentedString(managementOption)).append("\n"); - sb.append(" ipaddressV4Oam: ").append(toIndentedString(ipaddressV4Oam)).append("\n"); - sb.append(" swVersion: ").append(toIndentedString(swVersion)).append("\n"); - sb.append(" inMaint: ").append(toIndentedString(inMaint)).append("\n"); - sb.append(" frameId: ").append(toIndentedString(frameId)).append("\n"); - sb.append(" serialNumber: ").append(toIndentedString(serialNumber)).append("\n"); - sb.append(" ipaddressV4Loopback0: ").append(toIndentedString(ipaddressV4Loopback0)).append("\n"); - sb.append(" ipaddressV6Loopback0: ").append(toIndentedString(ipaddressV6Loopback0)).append("\n"); - sb.append(" ipaddressV4Aim: ").append(toIndentedString(ipaddressV4Aim)).append("\n"); - sb.append(" ipaddressV6Aim: ").append(toIndentedString(ipaddressV6Aim)).append("\n"); - sb.append(" ipaddressV6Oam: ").append(toIndentedString(ipaddressV6Oam)).append("\n"); - sb.append(" invStatus: ").append(toIndentedString(invStatus)).append("\n"); - sb.append(" resourceVersion: ").append(toIndentedString(resourceVersion)).append("\n"); - sb.append(" provStatus: ").append(toIndentedString(provStatus)).append("\n"); - sb.append(" nfRole: ").append(toIndentedString(nfRole)).append("\n"); - sb.append(" relationshipList: ").append(toIndentedString(relationshipList)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + @SerializedName("relationship-list") + @Value.Default + default Relationship getRelationshipList() { + return ImmutableRelationship.builder().build(); } } diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModel.java index 7bf8e2e4..67d6ff90 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModel.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModel.java @@ -21,452 +21,189 @@ package org.onap.dcaegen2.services.prh.model; import com.google.gson.annotations.SerializedName; +import org.immutables.gson.Gson; +import org.immutables.value.Value; +import org.springframework.lang.Nullable; -public class AaiServiceInstanceResultModel { - @SerializedName("service-instance-id") - private String serviceInstanceId = null; - - @SerializedName("service-instance-name") - private String serviceInstanceName = null; - - @SerializedName("service-type") - private String serviceType = null; - - @SerializedName("service-role") - private String serviceRole = null; - - @SerializedName("environment-context") - private String environmentContext = null; - - @SerializedName("workload-context") - private String workloadContext = null; - - @SerializedName("created-at") - private String createdAt = null; - - @SerializedName("updated-at") - private String updatedAt = null; - - @SerializedName("description") - private String description = null; - - @SerializedName("model-invariant-id") - private String modelInvariantId = null; - - @SerializedName("model-version-id") - private String modelVersionId = null; - - @SerializedName("persona-model-version") - private String personaModelVersion = null; - - @SerializedName("widget-model-id") - private String widgetModelId = null; - - @SerializedName("widget-model-version") - private String widgetModelVersion = null; - - @SerializedName("bandwidth-total") - private String bandwidthTotal = null; - - @SerializedName("bandwidth-up-wan1") - private String bandwidthUpWan1 = null; - - @SerializedName("bandwidth-down-wan1") - private String bandwidthDownWan1 = null; - - @SerializedName("bandwidth-up-wan2") - private String bandwidthUpWan2 = null; - - @SerializedName("bandwidth-down-wan2") - private String bandwidthDownWan2 = null; - - @SerializedName("vhn-portal-url") - private String vhnPortalUrl = null; - - @SerializedName("service-instance-location-id") - private String serviceInstanceLocationId = null; - - @SerializedName("resource-version") - private String resourceVersion = null; - - @SerializedName("selflink") - private String selflink = null; - - @SerializedName("orchestration-status") - private String orchestrationStatus = null; - - @SerializedName("relationship-list") - private Relationship relationshipList = null; +@Value.Immutable +@Gson.TypeAdapters(fieldNamingStrategy = true) +public interface AaiServiceInstanceResultModel { /** * Uniquely identifies this instance of a service - * - * @return serviceInstanceId **/ - public String getServiceInstanceId() { - return serviceInstanceId; - } - - public void setServiceInstanceId(String serviceInstanceId) { - this.serviceInstanceId = serviceInstanceId; - } + @Nullable + @SerializedName("service-instance-id") + String getServiceInstanceId(); /** * This field will store a name assigned to the service-instance. - * - * @return serviceInstanceName **/ - public String getServiceInstanceName() { - return serviceInstanceName; - } - - public void setServiceInstanceName(String serviceInstanceName) { - this.serviceInstanceName = serviceInstanceName; - } + @Nullable + @SerializedName("service-instance-name") + String getServiceInstanceName(); /** * String capturing type of service. - * - * @return serviceType **/ - public String getServiceType() { - return serviceType; - } - - public void setServiceType(String serviceType) { - this.serviceType = serviceType; - } + @Nullable + @SerializedName("service-type") + String getServiceType(); /** * String capturing the service role. - * - * @return serviceRole **/ - public String getServiceRole() { - return serviceRole; - } - - public void setServiceRole(String serviceRole) { - this.serviceRole = serviceRole; - } + @Nullable + @SerializedName("service-role") + String getServiceRole(); /** * This field will store the environment context assigned to the service-instance. - * - * @return environmentContext - **/ - public String getEnvironmentContext() { - return environmentContext; - } - - public void setEnvironmentContext(String environmentContext) { - this.environmentContext = environmentContext; - } + **/ + @Nullable + @SerializedName("environment-context") + String getEnvironmentContext(); /** * This field will store the workload context assigned to the service-instance. - * - * @return workloadContext - **/ - public String getWorkloadContext() { - return workloadContext; - } - - public void setWorkloadContext(String workloadContext) { - this.workloadContext = workloadContext; - } + **/ + @Nullable + @SerializedName("workload-context") + String getWorkloadContext(); /** - * create time of Network Service. - * - * @return createdAt - **/ - public String getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(String createdAt) { - this.createdAt = createdAt; - } + * createGson time of Network Service. + **/ + @Nullable + @SerializedName("created-at") + String getCreatedAt(); /** * last update of Network Service. - * - * @return updatedAt - **/ - public String getUpdatedAt() { - return updatedAt; - } - - public void setUpdatedAt(String updatedAt) { - this.updatedAt = updatedAt; - } + **/ + @Nullable + @SerializedName("updated-at") + String getUpdatedAt(); /** * short description for service-instance. - * - * @return description - **/ - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } + **/ + @Nullable + @SerializedName("description") + String getDescription(); /** * the ASDC model id for this resource or service model. - * - * @return modelInvariantId - **/ - public String getModelInvariantId() { - return modelInvariantId; - } - - public void setModelInvariantId(String modelInvariantId) { - this.modelInvariantId = modelInvariantId; - } + **/ + @Nullable + @SerializedName("model-invariant-id") + String getModelInvariantId(); /** * the ASDC model version for this resource or service model. - * - * @return modelVersionId - **/ - public String getModelVersionId() { - return modelVersionId; - } - - public void setModelVersionId(String modelVersionId) { - this.modelVersionId = modelVersionId; - } + **/ + @Nullable + @SerializedName("model-version-id") + String getModelVersionId(); /** * the ASDC model version for this resource or service model. - * - * @return personaModelVersion - **/ - public String getPersonaModelVersion() { - return personaModelVersion; - } - - public void setPersonaModelVersion(String personaModelVersion) { - this.personaModelVersion = personaModelVersion; - } + **/ + @Nullable + @SerializedName("persona-model-version") + String getPersonaModelVersion(); /** * the ASDC data dictionary widget model. This maps directly to the A&AI widget. - * - * @return widgetModelId - **/ - public String getWidgetModelId() { - return widgetModelId; - } - - public void setWidgetModelId(String widgetModelId) { - this.widgetModelId = widgetModelId; - } + **/ + @Nullable + @SerializedName("widget-model-id") + String getWidgetModelId(); /** * the ASDC data dictionary version of the widget model.This maps directly to the A&AI version of the widget. - * - * @return widgetModelVersion - **/ - public String getWidgetModelVersion() { - return widgetModelVersion; - } - - public void setWidgetModelVersion(String widgetModelVersion) { - this.widgetModelVersion = widgetModelVersion; - } + **/ + @Nullable + @SerializedName("widget-model-version") + String getWidgetModelVersion(); /** * Indicates the total bandwidth to be used for this service. - * - * @return bandwidthTotal - **/ - public String getBandwidthTotal() { - return bandwidthTotal; - } - - public void setBandwidthTotal(String bandwidthTotal) { - this.bandwidthTotal = bandwidthTotal; - } + **/ + @Nullable + @SerializedName("bandwidth-total") + String getBandwidthTotal(); /** * indicates the upstream bandwidth this service will use on the WAN1 port of the physical device. - * - * @return bandwidthUpWan1 - **/ - public String getBandwidthUpWan1() { - return bandwidthUpWan1; - } - - public void setBandwidthUpWan1(String bandwidthUpWan1) { - this.bandwidthUpWan1 = bandwidthUpWan1; - } + **/ + @Nullable + @SerializedName("bandwidth-up-wan1") + String getBandwidthUpWan1(); /** * indicates the downstream bandwidth this service will use on the WAN1 port of the physical device. - * - * @return bandwidthDownWan1 - **/ - public String getBandwidthDownWan1() { - return bandwidthDownWan1; - } - - public void setBandwidthDownWan1(String bandwidthDownWan1) { - this.bandwidthDownWan1 = bandwidthDownWan1; - } + **/ + @Nullable + @SerializedName("bandwidth-down-wan1") + String getBandwidthDownWan1(); /** * indicates the upstream bandwidth this service will use on the WAN2 port of the physical device. - * - * @return bandwidthUpWan2 - **/ - public String getBandwidthUpWan2() { - return bandwidthUpWan2; - } - - public void setBandwidthUpWan2(String bandwidthUpWan2) { - this.bandwidthUpWan2 = bandwidthUpWan2; - } + **/ + @Nullable + @SerializedName("bandwidth-up-wan2") + String getBandwidthUpWan2(); /** * indicates the downstream bandwidth this service will use on the WAN2 port of the physical device. - * - * @return bandwidthDownWan2 - **/ - public String getBandwidthDownWan2() { - return bandwidthDownWan2; - } - - public void setBandwidthDownWan2(String bandwidthDownWan2) { - this.bandwidthDownWan2 = bandwidthDownWan2; - } + **/ + @Nullable + @SerializedName("bandwidth-down-wan2") + String getBandwidthDownWan2(); /** * URL customers will use to access the vHN Portal. - * - * @return vhnPortalUrl - **/ - public String getVhnPortalUrl() { - return vhnPortalUrl; - } - - public void setVhnPortalUrl(String vhnPortalUrl) { - this.vhnPortalUrl = vhnPortalUrl; - } + **/ + @Nullable + @SerializedName("vhn-portal-url") + String getVhnPortalUrl(); /** * An identifier that customers assign to the location where this service is being used. - * - * @return serviceInstanceLocationId - **/ - public String getServiceInstanceLocationId() { - return serviceInstanceLocationId; - } - - public void setServiceInstanceLocationId(String serviceInstanceLocationId) { - this.serviceInstanceLocationId = serviceInstanceLocationId; - } + **/ + @Nullable + @SerializedName("service-instance-location-id") + String getServiceInstanceLocationId(); /** - * Used for optimistic concurrency. Must be empty on create, valid on update and delete. - * - * @return resourceVersion - **/ - public String getResourceVersion() { - return resourceVersion; - } - - public void setResourceVersion(String resourceVersion) { - this.resourceVersion = resourceVersion; - } + * Used for optimistic concurrency. Must be empty on createGson, valid on update and delete. + **/ + @Nullable + @SerializedName("resource-version") + String getResourceVersion(); /** * Path to the controller object. - * - * @return selflink - **/ - public String getSelflink() { - return selflink; - } - - public void setSelflink(String selflink) { - this.selflink = selflink; - } + **/ + @Nullable + @SerializedName("selflink") + String getSelflink(); /** * Orchestration status of this service. - * - * @return orchestrationStatus - **/ - public String getOrchestrationStatus() { - return orchestrationStatus; - } - - public void setOrchestrationStatus(String orchestrationStatus) { - this.orchestrationStatus = orchestrationStatus; - } - + **/ + @Nullable + @SerializedName("orchestration-status") + String getOrchestrationStatus(); /** * Get relationshipList - * - * @return relationshipList - **/ - public Relationship getRelationshipList() { - return relationshipList; - } - - public void setRelationshipList(Relationship relationshipList) { - this.relationshipList = relationshipList; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class AaiServiceInstanceResultModel {\n"); - - sb.append(" serviceInstanceId: ").append(toIndentedString(serviceInstanceId)).append("\n"); - sb.append(" serviceInstanceName: ").append(toIndentedString(serviceInstanceName)).append("\n"); - sb.append(" serviceType: ").append(toIndentedString(serviceType)).append("\n"); - sb.append(" serviceRole: ").append(toIndentedString(serviceRole)).append("\n"); - sb.append(" environmentContext: ").append(toIndentedString(environmentContext)).append("\n"); - sb.append(" workloadContext: ").append(toIndentedString(workloadContext)).append("\n"); - sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); - sb.append(" updatedAt: ").append(toIndentedString(updatedAt)).append("\n"); - sb.append(" description: ").append(toIndentedString(description)).append("\n"); - sb.append(" modelInvariantId: ").append(toIndentedString(modelInvariantId)).append("\n"); - sb.append(" modelVersionId: ").append(toIndentedString(modelVersionId)).append("\n"); - sb.append(" personaModelVersion: ").append(toIndentedString(personaModelVersion)).append("\n"); - sb.append(" widgetModelId: ").append(toIndentedString(widgetModelId)).append("\n"); - sb.append(" widgetModelVersion: ").append(toIndentedString(widgetModelVersion)).append("\n"); - sb.append(" bandwidthTotal: ").append(toIndentedString(bandwidthTotal)).append("\n"); - sb.append(" bandwidthUpWan1: ").append(toIndentedString(bandwidthUpWan1)).append("\n"); - sb.append(" bandwidthDownWan1: ").append(toIndentedString(bandwidthDownWan1)).append("\n"); - sb.append(" bandwidthUpWan2: ").append(toIndentedString(bandwidthUpWan2)).append("\n"); - sb.append(" bandwidthDownWan2: ").append(toIndentedString(bandwidthDownWan2)).append("\n"); - sb.append(" vhnPortalUrl: ").append(toIndentedString(vhnPortalUrl)).append("\n"); - sb.append(" serviceInstanceLocationId: ").append(toIndentedString(serviceInstanceLocationId)).append("\n"); - sb.append(" resourceVersion: ").append(toIndentedString(resourceVersion)).append("\n"); - sb.append(" selflink: ").append(toIndentedString(selflink)).append("\n"); - sb.append(" orchestrationStatus: ").append(toIndentedString(orchestrationStatus)).append("\n"); - sb.append(" relationshipList: ").append(toIndentedString(relationshipList)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + **/ + @SerializedName("relationship-list") + @Value.Default + default Relationship getRelationshipList() { + return ImmutableRelationship.builder().build(); } }
\ No newline at end of file diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/Relationship.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/Relationship.java index 094e1a62..d92b7c75 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/Relationship.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/Relationship.java @@ -21,62 +21,15 @@ package org.onap.dcaegen2.services.prh.model; import com.google.gson.annotations.SerializedName; +import org.immutables.gson.Gson; +import org.immutables.value.Value; -import java.util.ArrayList; import java.util.List; -/** - * dictionary of relationship - */ -public class Relationship { - @SerializedName("relationship") - private List<RelationshipDict> relationship = null; - - public Relationship relationship(List<RelationshipDict> relationship) { - this.relationship = relationship; - return this; - } - - public Relationship addRelationshipItem(RelationshipDict relationshipItem) { - if (this.relationship == null) { - this.relationship = new ArrayList<>(); - } - this.relationship.add(relationshipItem); - return this; - } - - /** - * Get relationship - * - * @return relationship - **/ - public List<RelationshipDict> getRelationship() { - return relationship; - } - - public void setRelationship(List<RelationshipDict> relationship) { - this.relationship = relationship; - } - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class Relationship {\n"); - - sb.append(" relationship: ").append(toIndentedString(relationship)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } +@Value.Immutable +@Gson.TypeAdapters(fieldNamingStrategy = true) +public interface Relationship { + @SerializedName("relationship") + List<RelationshipDict> getRelationship(); }
\ No newline at end of file diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipData.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipData.java index 8b33b650..4b1670c6 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipData.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipData.java @@ -21,64 +21,29 @@ package org.onap.dcaegen2.services.prh.model; import com.google.gson.annotations.SerializedName; +import org.immutables.gson.Gson; +import org.immutables.value.Value; /** * RelationshipData */ -public class RelationshipData { - @SerializedName("relationship-key") - private String relationshipKey = null; - - @SerializedName("relationship-value") - private String relationshipValue = null; +@Value.Immutable +@Gson.TypeAdapters(fieldNamingStrategy = true) +public interface RelationshipData { /** * A keyword provided by A&AI to indicate an attribute. * * @return relationshipKey **/ - public String getRelationshipKey() { - return relationshipKey; - } - - public void setRelationshipKey(String relationshipKey) { - this.relationshipKey = relationshipKey; - } + @SerializedName("relationship-key") + String getRelationshipKey(); /** * Value of the attribute. * * @return relationshipValue **/ - public String getRelationshipValue() { - return relationshipValue; - } - - public void setRelationshipValue(String relationshipValue) { - this.relationshipValue = relationshipValue; - } - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class RelationshipData {\n"); - - sb.append(" relationshipKey: ").append(toIndentedString(relationshipKey)).append("\n"); - sb.append(" relationshipValue: ").append(toIndentedString(relationshipValue)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); - } - + @SerializedName("relationship-value") + String getRelationshipValue(); }
\ No newline at end of file diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipDict.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipDict.java index 0a7a9459..007f371b 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipDict.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/RelationshipDict.java @@ -21,109 +21,48 @@ package org.onap.dcaegen2.services.prh.model; import com.google.gson.annotations.SerializedName; +import org.immutables.gson.Gson; +import org.immutables.value.Value; +import org.springframework.lang.Nullable; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; /** * RelationshipDict */ -public class RelationshipDict { - @SerializedName("related-to") - private String relatedTo = null; - - @SerializedName("relationship-label") - private String relationshipLabel = null; - - @SerializedName("related-link") - private String relatedLink = null; - - @SerializedName("relationship-data") - private List<RelationshipData> relationshipData = null; +@Value.Immutable +@Gson.TypeAdapters(fieldNamingStrategy = true) +public interface RelationshipDict { /** * A keyword provided by A&AI to indicate type of node. - * - * @return relatedTo **/ - public String getRelatedTo() { - return relatedTo; - } - - public void setRelatedTo(String relatedTo) { - this.relatedTo = relatedTo; - } + @Nullable + @SerializedName("related-to") + String getRelatedTo(); /** * The edge label for this relationship. - * - * @return relationshipLabel **/ - public String getRelationshipLabel() { - return relationshipLabel; - } - - public void setRelationshipLabel(String relationshipLabel) { - this.relationshipLabel = relationshipLabel; - } + @Nullable + @SerializedName("relationship-label") + String getRelationshipLabel(); /** * URL to the object in A&AI. - * - * @return relatedLink **/ - public String getRelatedLink() { - return relatedLink; - } - - public void setRelatedLink(String relatedLink) { - this.relatedLink = relatedLink; - } - - public RelationshipDict addRelationshipDataItem(RelationshipData relationshipDataItem) { - if (this.relationshipData == null) { - this.relationshipData = new ArrayList<RelationshipData>(); - } - this.relationshipData.add(relationshipDataItem); - return this; - } + @Nullable + @SerializedName("related-link") + String getRelatedLink(); /** - * Get relationshipData - * - * @return relationshipData + * relationship Data **/ - public List<RelationshipData> getRelationshipData() { - return relationshipData; - } - - public void setRelationshipData(List<RelationshipData> relationshipData) { - this.relationshipData = relationshipData; - } - - - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("class RelationshipDict {\n"); - - sb.append(" relatedTo: ").append(toIndentedString(relatedTo)).append("\n"); - sb.append(" relationshipLabel: ").append(toIndentedString(relationshipLabel)).append("\n"); - sb.append(" relatedLink: ").append(toIndentedString(relatedLink)).append("\n"); - sb.append(" relationshipData: ").append(toIndentedString(relationshipData)).append("\n"); - sb.append("}"); - return sb.toString(); - } - - /** - * Convert the given object to string with each line indented by 4 spaces - * (except the first line). - */ - private String toIndentedString(java.lang.Object o) { - if (o == null) { - return "null"; - } - return o.toString().replace("\n", "\n "); + @SerializedName("relationship-data") + @Value.Default + default List<RelationshipData> getRelationshipData() { + return Collections.emptyList(); } }
\ No newline at end of file diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/utils/GsonSerializer.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/utils/PrhModelAwareGsonBuilder.java index 9b6a7e60..1974f6da 100644 --- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/utils/GsonSerializer.java +++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/model/utils/PrhModelAwareGsonBuilder.java @@ -20,18 +20,20 @@ package org.onap.dcaegen2.services.prh.model.utils; +import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.TypeAdapterFactory; + import java.util.ServiceLoader; -public class GsonSerializer { +public final class PrhModelAwareGsonBuilder { - private GsonSerializer() { - } + private static final Iterable<TypeAdapterFactory> TYPE_ADAPTER_FACTORIES = + ServiceLoader.load(TypeAdapterFactory.class); - public static <T> String createJsonBody(T type) { + public static Gson createGson() { GsonBuilder gsonBuilder = new GsonBuilder(); - ServiceLoader.load(TypeAdapterFactory.class).forEach(gsonBuilder::registerTypeAdapterFactory); - return gsonBuilder.create().toJson(type); + TYPE_ADAPTER_FACTORIES.forEach(gsonBuilder::registerTypeAdapterFactory); + return gsonBuilder.create(); } -}
\ No newline at end of file +} diff --git a/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModelTest.java b/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModelTest.java index 4bafd90e..3f396e82 100644 --- a/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModelTest.java +++ b/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiPnfResultModelTest.java @@ -20,139 +20,68 @@ package org.onap.dcaegen2.services.prh.model; -import com.google.gson.GsonBuilder; +import com.google.gson.Gson; import org.junit.jupiter.api.Test; +import org.onap.dcaegen2.services.prh.model.utils.PrhModelAwareGsonBuilder; + +import java.io.InputStreamReader; +import java.util.Objects; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; class AaiPnfResultModelTest { - private static final String SOME_AAI_PNF_JSON = "{" + - "\"pnf-name\":\"some pnfName\"," + - "\"pnf-name2\":\"some pnfName2\"," + - "\"selflink\":\"some selflink\"," + - "\"pnf-name2-source\":\"some pnfName2Source\"," + - "\"pnf-id\":\"some pnfId\"," + - "\"equip-type\":\"some equipType\"," + - "\"equip-vendor\":\"some equipVendor\"," + - "\"equip-model\":\"some equipModel\"," + - "\"management-option\":\"some managementOption\"," + - "\"ipaddress-v4-oam\":\"some ipaddressV4Oam\"," + - "\"sw-version\":\"some swVersion\"," + - "\"in-maint\":false," + - "\"frame-id\":\"some frameId\"," + - "\"serial-number\":\"some serialNumber\"," + - "\"ipaddress-v4-loopback-0\":\"some ipaddressV4Loopback0\"," + - "\"ipaddress-v6-loopback-0\":\"some ipaddressV6Loopback0\"," + - "\"ipaddress-v4-aim\":\"some ipaddressV4Aim\"," + - "\"ipaddress-v6-aim\":\"some ipaddressV6Aim\"," + - "\"ipaddress-v6-oam\":\"some ipaddressV6Oam\"," + - "\"inv-status\":\"some invStatus\"," + - "\"resource-version\":\"some resourceVersion\"," + - "\"prov-status\":\"some provStatus\"," + - "\"nf-role\":\"some nfRole\"," + - "\"relationship-list\":{\"relationship\":[{}]}" + - "}"; - - private static AaiPnfResultModel getAaiPnfResultModel() { - AaiPnfResultModel aaiPnf = new AaiPnfResultModel(); - aaiPnf.setPnfName("some pnfName"); - aaiPnf.setPnfName2("some pnfName2"); - aaiPnf.setSelflink("some selflink"); - aaiPnf.setPnfName2Source("some pnfName2Source"); - aaiPnf.setPnfId("some pnfId"); - aaiPnf.setEquipType("some equipType"); - aaiPnf.setEquipVendor("some equipVendor"); - aaiPnf.setEquipModel("some equipModel"); - aaiPnf.setManagementOption("some managementOption"); - aaiPnf.setIpaddressV4Oam("some ipaddressV4Oam"); - aaiPnf.setSwVersion("some swVersion"); - aaiPnf.setInMaint(false); - aaiPnf.setFrameId("some frameId"); - aaiPnf.setSerialNumber("some serialNumber"); - aaiPnf.setIpaddressV4Loopback0("some ipaddressV4Loopback0"); - aaiPnf.setIpaddressV6Loopback0("some ipaddressV6Loopback0"); - aaiPnf.setIpaddressV4Aim("some ipaddressV4Aim"); - aaiPnf.setIpaddressV6Aim("some ipaddressV6Aim"); - aaiPnf.setIpaddressV6Oam("some ipaddressV6Oam"); - aaiPnf.setInvStatus("some invStatus"); - aaiPnf.setResourceVersion("some resourceVersion"); - aaiPnf.setProvStatus("some provStatus"); - aaiPnf.setNfRole("some nfRole"); - aaiPnf.setRelationshipList(getSomeRelationshipList()); - return aaiPnf; - } - - private static Relationship getSomeRelationshipList() { - return new Relationship().addRelationshipItem( - new RelationshipDict()); - } - @Test - void shouldSerializeAaiPnf() { - String json = new GsonBuilder().create().toJson(getAaiPnfResultModel()); + void shouldParseAaiPnf() { + Gson gson = PrhModelAwareGsonBuilder.createGson(); + AaiPnfResultModel pnf = gson.fromJson(new InputStreamReader(Objects.requireNonNull( + ClassLoader.getSystemResourceAsStream("some_aai_pnf.json"))), AaiPnfResultModel.class); + + assertThat(pnf.getPnfName()).isEqualTo("some pnfName"); + assertThat(pnf.getPnfName2()).isEqualTo("some pnfName2"); + assertThat(pnf.getSelflink()).isEqualTo("some selflink"); + assertThat(pnf.getPnfName2Source()).isEqualTo("some pnfName2Source"); + assertThat(pnf.getPnfId()).isEqualTo("some pnfId"); + assertThat(pnf.getEquipType()).isEqualTo("some equipType"); + assertThat(pnf.getEquipVendor()).isEqualTo("some equipVendor"); + assertThat(pnf.getEquipModel()).isEqualTo("some equipModel"); + assertThat(pnf.getManagementOption()).isEqualTo("some managementOption"); + assertThat(pnf.getIpaddressV4Oam()).isEqualTo("some ipaddressV4Oam"); + assertThat(pnf.getSwVersion()).isEqualTo("some swVersion"); + assertThat(pnf.isInMaint()).isFalse(); + assertThat(pnf.getFrameId()).isEqualTo("some frameId"); + assertThat(pnf.getSerialNumber()).isEqualTo("some serialNumber"); + assertThat(pnf.getIpaddressV4Loopback0()).isEqualTo("some ipaddressV4Loopback0"); + assertThat(pnf.getIpaddressV6Loopback0()).isEqualTo("some ipaddressV6Loopback0"); + assertThat(pnf.getIpaddressV4Aim()).isEqualTo("some ipaddressV4Aim"); + assertThat(pnf.getIpaddressV6Aim()).isEqualTo("some ipaddressV6Aim"); + assertThat(pnf.getIpaddressV6Oam()).isEqualTo("some ipaddressV6Oam"); + assertThat(pnf.getInvStatus()).isEqualTo("some invStatus"); + assertThat(pnf.getResourceVersion()).isEqualTo("some resourceVersion"); + assertThat(pnf.getProvStatus()).isEqualTo("some provStatus"); + assertThat(pnf.getNfRole()).isEqualTo("some nfRole"); - assertEquals(SOME_AAI_PNF_JSON, json); + assertThat(pnf.getRelationshipList().getRelationship()).hasSize(1); + RelationshipDict relationshipDict = pnf.getRelationshipList().getRelationship().get(0); + assertThat(relationshipDict.getRelatedTo()).isEqualTo("some relatedTo"); + assertThat(relationshipDict.getRelationshipData()).hasSize(1); + RelationshipData relationshipData = relationshipDict.getRelationshipData().get(0); + assertThat(relationshipData.getRelationshipKey()).isEqualTo("some relationshipKey"); + assertThat(relationshipData.getRelationshipValue()).isEqualTo("some relationshipValue"); } @Test - void shouldParseAaiPnf() { - AaiPnfResultModel pnf = new GsonBuilder().create().fromJson(SOME_AAI_PNF_JSON, AaiPnfResultModel.class); - - assertEquals("some pnfName", pnf.getPnfName()); - assertEquals("some pnfName2", pnf.getPnfName2()); - assertEquals("some selflink", pnf.getSelflink()); - assertEquals("some pnfName2Source", pnf.getPnfName2Source()); - assertEquals("some pnfId", pnf.getPnfId()); - assertEquals("some equipType", pnf.getEquipType()); - assertEquals("some equipVendor", pnf.getEquipVendor()); - assertEquals("some equipModel", pnf.getEquipModel()); - assertEquals("some managementOption", pnf.getManagementOption()); - assertEquals("some ipaddressV4Oam", pnf.getIpaddressV4Oam()); - assertEquals("some swVersion", pnf.getSwVersion()); - assertEquals(false, pnf.isInMaint()); - assertEquals("some frameId", pnf.getFrameId()); - assertEquals("some serialNumber", pnf.getSerialNumber()); - assertEquals("some ipaddressV4Loopback0", pnf.getIpaddressV4Loopback0()); - assertEquals("some ipaddressV6Loopback0", pnf.getIpaddressV6Loopback0()); - assertEquals("some ipaddressV4Aim", pnf.getIpaddressV4Aim()); - assertEquals("some ipaddressV6Aim", pnf.getIpaddressV6Aim()); - assertEquals("some ipaddressV6Oam", pnf.getIpaddressV6Oam()); - assertEquals("some invStatus", pnf.getInvStatus()); - assertEquals("some resourceVersion", pnf.getResourceVersion()); - assertEquals("some provStatus", pnf.getProvStatus()); - assertEquals("some nfRole", pnf.getNfRole()); - assertEquals(1, pnf.getRelationshipList().getRelationship().size()); + void shouldProvideEmptyRelationshipListForEmptyJson() { + Gson gson = PrhModelAwareGsonBuilder.createGson(); + AaiPnfResultModel pnf = gson.fromJson("{}", AaiPnfResultModel.class); + assertThat(pnf.getRelationshipList()).isNotNull(); + assertThat(pnf.getRelationshipList().getRelationship()).isEmpty(); } @Test - void shouldBePrintable() { - String s = getAaiPnfResultModel().toString(); - assertThat(s).contains("some pnfName"); - assertThat(s).contains("some pnfName2"); - assertThat(s).contains("some selflink"); - assertThat(s).contains("some pnfName2Source"); - assertThat(s).contains("some pnfId"); - assertThat(s).contains("some equipType"); - assertThat(s).contains("some equipVendor"); - assertThat(s).contains("some equipModel"); - assertThat(s).contains("some managementOption"); - assertThat(s).contains("some ipaddressV4Oam"); - assertThat(s).contains("some swVersion"); - assertThat(s).contains("false"); - assertThat(s).contains("some frameId"); - assertThat(s).contains("some serialNumber"); - assertThat(s).contains("some ipaddressV4Loopback0"); - assertThat(s).contains("some ipaddressV6Loopback0"); - assertThat(s).contains("some ipaddressV4Aim"); - assertThat(s).contains("some ipaddressV6Aim"); - assertThat(s).contains("some ipaddressV6Oam"); - assertThat(s).contains("some invStatus"); - assertThat(s).contains("some resourceVersion"); - assertThat(s).contains("some provStatus"); - assertThat(s).contains("some nfRole"); + void shouldIgnoreUnexpectedFieldsInJson() { + Gson gson = PrhModelAwareGsonBuilder.createGson(); + gson.fromJson("{\"foo\":\"bar\"}", AaiPnfResultModel.class); } - }
\ No newline at end of file diff --git a/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModelTest.java b/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModelTest.java index 2b02436b..5f9ca14d 100644 --- a/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModelTest.java +++ b/prh-commons/src/test/java/org/onap/dcaegen2/services/prh/model/AaiServiceInstanceResultModelTest.java @@ -20,141 +20,70 @@ package org.onap.dcaegen2.services.prh.model; -import com.google.gson.GsonBuilder; +import com.google.gson.Gson; import org.junit.jupiter.api.Test; +import org.onap.dcaegen2.services.prh.model.utils.PrhModelAwareGsonBuilder; + +import java.io.InputStreamReader; +import java.util.Objects; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.jupiter.api.Assertions.assertEquals; class AaiServiceInstanceResultModelTest { - private static final String SOME_AAI_SERVICE_INSTANCE_JSON = "{" + - "\"service-instance-id\":\"some serviceInstanceId\"," + - "\"service-instance-name\":\"some serviceInstanceName\"," + - "\"service-type\":\"some serviceType\"," + - "\"service-role\":\"some serviceRole\"," + - "\"environment-context\":\"some environmentContext\"," + - "\"workload-context\":\"some workloadContext\"," + - "\"created-at\":\"some createdAt\"," + - "\"updated-at\":\"some updatedAt\"," + - "\"description\":\"some description\"," + - "\"model-invariant-id\":\"some modelInvariantId\"," + - "\"model-version-id\":\"some modelVersionId\"," + - "\"persona-model-version\":\"some personaModelVersion\"," + - "\"widget-model-id\":\"some widgetModelId\"," + - "\"widget-model-version\":\"some widgetModelVersion\"," + - "\"bandwidth-total\":\"some bandwidthTotal\"," + - "\"bandwidth-up-wan1\":\"some bandwidthUpWan1\"," + - "\"bandwidth-down-wan1\":\"some bandwidthDownWan1\"," + - "\"bandwidth-up-wan2\":\"some bandwidthUpWan2\"," + - "\"bandwidth-down-wan2\":\"some bandwidthDownWan2\"," + - "\"vhn-portal-url\":\"some vhnPortalUrl\"," + - "\"service-instance-location-id\":\"some serviceInstanceLocationId\"," + - "\"resource-version\":\"some resourceVersion\"," + - "\"selflink\":\"some selflink\"," + - "\"orchestration-status\":\"some orchestrationStatus\"," + - "\"relationship-list\":{\"relationship\":[{}]}" + - "}"; + @Test + void shouldParseAaiServiceInstance() { + AaiServiceInstanceResultModel serviceInstance = PrhModelAwareGsonBuilder.createGson().fromJson( + new InputStreamReader(Objects.requireNonNull( + ClassLoader.getSystemResourceAsStream("some_aai_service_instance.json"))), + AaiServiceInstanceResultModel.class); - private static AaiServiceInstanceResultModel getSomeAaiServiceInstance() { - AaiServiceInstanceResultModel serviceInstance = new AaiServiceInstanceResultModel(); - serviceInstance.setServiceInstanceId("some serviceInstanceId"); - serviceInstance.setServiceInstanceName("some serviceInstanceName"); - serviceInstance.setServiceType("some serviceType"); - serviceInstance.setServiceRole("some serviceRole"); - serviceInstance.setEnvironmentContext("some environmentContext"); - serviceInstance.setWorkloadContext("some workloadContext"); - serviceInstance.setCreatedAt("some createdAt"); - serviceInstance.setUpdatedAt("some updatedAt"); - serviceInstance.setDescription("some description"); - serviceInstance.setModelInvariantId("some modelInvariantId"); - serviceInstance.setModelVersionId("some modelVersionId"); - serviceInstance.setPersonaModelVersion("some personaModelVersion"); - serviceInstance.setWidgetModelId("some widgetModelId"); - serviceInstance.setWidgetModelVersion("some widgetModelVersion"); - serviceInstance.setBandwidthTotal("some bandwidthTotal"); - serviceInstance.setBandwidthUpWan1("some bandwidthUpWan1"); - serviceInstance.setBandwidthDownWan1("some bandwidthDownWan1"); - serviceInstance.setBandwidthUpWan2("some bandwidthUpWan2"); - serviceInstance.setBandwidthDownWan2("some bandwidthDownWan2"); - serviceInstance.setVhnPortalUrl("some vhnPortalUrl"); - serviceInstance.setServiceInstanceLocationId("some serviceInstanceLocationId"); - serviceInstance.setResourceVersion("some resourceVersion"); - serviceInstance.setSelflink("some selflink"); - serviceInstance.setOrchestrationStatus("some orchestrationStatus"); - serviceInstance.setRelationshipList(getSomeRelationshipList()); - return serviceInstance; - } + assertThat(serviceInstance.getServiceInstanceId()).isEqualTo("some serviceInstanceId"); + assertThat(serviceInstance.getServiceInstanceName()).isEqualTo("some serviceInstanceName"); + assertThat(serviceInstance.getServiceType()).isEqualTo("some serviceType"); + assertThat(serviceInstance.getServiceRole()).isEqualTo("some serviceRole"); + assertThat(serviceInstance.getEnvironmentContext()).isEqualTo("some environmentContext"); + assertThat(serviceInstance.getWorkloadContext()).isEqualTo("some workloadContext"); + assertThat(serviceInstance.getCreatedAt()).isEqualTo("some createdAt"); + assertThat(serviceInstance.getUpdatedAt()).isEqualTo("some updatedAt"); + assertThat(serviceInstance.getDescription()).isEqualTo("some description"); + assertThat(serviceInstance.getModelInvariantId()).isEqualTo("some modelInvariantId"); + assertThat(serviceInstance.getModelVersionId()).isEqualTo("some modelVersionId"); + assertThat(serviceInstance.getPersonaModelVersion()).isEqualTo("some personaModelVersion"); + assertThat(serviceInstance.getWidgetModelId()).isEqualTo("some widgetModelId"); + assertThat(serviceInstance.getWidgetModelVersion()).isEqualTo("some widgetModelVersion"); + assertThat(serviceInstance.getBandwidthTotal()).isEqualTo("some bandwidthTotal"); + assertThat(serviceInstance.getBandwidthUpWan1()).isEqualTo("some bandwidthUpWan1"); + assertThat(serviceInstance.getBandwidthDownWan1()).isEqualTo("some bandwidthDownWan1"); + assertThat(serviceInstance.getBandwidthUpWan2()).isEqualTo("some bandwidthUpWan2"); + assertThat(serviceInstance.getBandwidthDownWan2()).isEqualTo("some bandwidthDownWan2"); + assertThat(serviceInstance.getVhnPortalUrl()).isEqualTo("some vhnPortalUrl"); + assertThat(serviceInstance.getServiceInstanceLocationId()).isEqualTo("some serviceInstanceLocationId"); + assertThat(serviceInstance.getResourceVersion()).isEqualTo("some resourceVersion"); + assertThat(serviceInstance.getSelflink()).isEqualTo("some selflink"); + assertThat(serviceInstance.getOrchestrationStatus()).isEqualTo("some orchestrationStatus"); - private static Relationship getSomeRelationshipList() { - return new Relationship().addRelationshipItem( - new RelationshipDict()); + RelationshipDict relationshipDict = serviceInstance.getRelationshipList().getRelationship().get(0); + assertThat(relationshipDict.getRelatedTo()).isEqualTo("some relatedTo"); + assertThat(relationshipDict.getRelationshipData()).hasSize(1); + RelationshipData relationshipData = relationshipDict.getRelationshipData().get(0); + assertThat(relationshipData.getRelationshipKey()).isEqualTo("some relationshipKey"); + assertThat(relationshipData.getRelationshipValue()).isEqualTo("some relationshipValue"); } - @Test - void shouldSerializeAaiServiceInstance() { - String json = new GsonBuilder().create().toJson(getSomeAaiServiceInstance()); - assertEquals(SOME_AAI_SERVICE_INSTANCE_JSON, json); - } @Test - void shouldParseAaiServiceInstance() { - AaiServiceInstanceResultModel serviceInstance = new GsonBuilder().create() - .fromJson(SOME_AAI_SERVICE_INSTANCE_JSON, AaiServiceInstanceResultModel.class); - - assertEquals("some serviceInstanceId", serviceInstance.getServiceInstanceId()); - assertEquals("some serviceInstanceName", serviceInstance.getServiceInstanceName()); - assertEquals("some serviceType", serviceInstance.getServiceType()); - assertEquals("some serviceRole", serviceInstance.getServiceRole()); - assertEquals("some environmentContext", serviceInstance.getEnvironmentContext()); - assertEquals("some workloadContext", serviceInstance.getWorkloadContext()); - assertEquals("some createdAt", serviceInstance.getCreatedAt()); - assertEquals("some updatedAt", serviceInstance.getUpdatedAt()); - assertEquals("some description", serviceInstance.getDescription()); - assertEquals("some modelInvariantId", serviceInstance.getModelInvariantId()); - assertEquals("some modelVersionId", serviceInstance.getModelVersionId()); - assertEquals("some personaModelVersion", serviceInstance.getPersonaModelVersion()); - assertEquals("some widgetModelId", serviceInstance.getWidgetModelId()); - assertEquals("some widgetModelVersion", serviceInstance.getWidgetModelVersion()); - assertEquals("some bandwidthTotal", serviceInstance.getBandwidthTotal()); - assertEquals("some bandwidthUpWan1", serviceInstance.getBandwidthUpWan1()); - assertEquals("some bandwidthDownWan1", serviceInstance.getBandwidthDownWan1()); - assertEquals("some bandwidthUpWan2", serviceInstance.getBandwidthUpWan2()); - assertEquals("some bandwidthDownWan2", serviceInstance.getBandwidthDownWan2()); - assertEquals("some vhnPortalUrl", serviceInstance.getVhnPortalUrl()); - assertEquals("some serviceInstanceLocationId", serviceInstance.getServiceInstanceLocationId()); - assertEquals("some resourceVersion", serviceInstance.getResourceVersion()); - assertEquals("some selflink", serviceInstance.getSelflink()); - assertEquals("some orchestrationStatus", serviceInstance.getOrchestrationStatus()); - assertEquals(1, serviceInstance.getRelationshipList().getRelationship().size()); + void shouldProvideEmptyRelationshipListForEmptyJson() { + Gson gson = PrhModelAwareGsonBuilder.createGson(); + AaiServiceInstanceResultModel serviceInstance = gson.fromJson("{}", AaiServiceInstanceResultModel.class); + assertThat(serviceInstance.getRelationshipList()).isNotNull(); + assertThat(serviceInstance.getRelationshipList().getRelationship()).isEmpty(); } @Test - void shouldBePrintable() { - String s = getSomeAaiServiceInstance().toString(); - assertThat(s).contains("some serviceInstanceId"); - assertThat(s).contains("some serviceInstanceName"); - assertThat(s).contains("some serviceType"); - assertThat(s).contains("some serviceRole"); - assertThat(s).contains("some environmentContext"); - assertThat(s).contains("some workloadContext"); - assertThat(s).contains("some createdAt"); - assertThat(s).contains("some updatedAt"); - assertThat(s).contains("some description"); - assertThat(s).contains("some modelInvariantId"); - assertThat(s).contains("some modelVersionId"); - assertThat(s).contains("some personaModelVersion"); - assertThat(s).contains("some widgetModelId"); - assertThat(s).contains("some widgetModelVersion"); - assertThat(s).contains("some bandwidthTotal"); - assertThat(s).contains("some bandwidthUpWan1"); - assertThat(s).contains("some bandwidthDownWan1"); - assertThat(s).contains("some bandwidthUpWan2"); - assertThat(s).contains("some bandwidthDownWan2"); - assertThat(s).contains("some vhnPortalUrl"); - assertThat(s).contains("some serviceInstanceLocationId"); - assertThat(s).contains("some resourceVersion"); - assertThat(s).contains("some selflink"); - assertThat(s).contains("some orchestrationStatus"); + void shouldIgnoreUnexpectedFieldsInJson() { + Gson gson = PrhModelAwareGsonBuilder.createGson(); + gson.fromJson("{\"foo\":\"bar\"}", AaiServiceInstanceResultModel.class); } + }
\ No newline at end of file diff --git a/prh-commons/src/test/resources/some_aai_pnf.json b/prh-commons/src/test/resources/some_aai_pnf.json new file mode 100644 index 00000000..ee158dff --- /dev/null +++ b/prh-commons/src/test/resources/some_aai_pnf.json @@ -0,0 +1,38 @@ +{ + "pnf-name": "some pnfName", + "pnf-name2": "some pnfName2", + "selflink": "some selflink", + "pnf-name2-source": "some pnfName2Source", + "pnf-id": "some pnfId", + "equip-type": "some equipType", + "equip-vendor": "some equipVendor", + "equip-model": "some equipModel", + "management-option": "some managementOption", + "ipaddress-v4-oam": "some ipaddressV4Oam", + "sw-version": "some swVersion", + "in-maint": false, + "frame-id": "some frameId", + "serial-number": "some serialNumber", + "ipaddress-v4-loopback-0": "some ipaddressV4Loopback0", + "ipaddress-v6-loopback-0": "some ipaddressV6Loopback0", + "ipaddress-v4-aim": "some ipaddressV4Aim", + "ipaddress-v6-aim": "some ipaddressV6Aim", + "ipaddress-v6-oam": "some ipaddressV6Oam", + "inv-status": "some invStatus", + "resource-version": "some resourceVersion", + "prov-status": "some provStatus", + "nf-role": "some nfRole", + "relationship-list": { + "relationship": [ + { + "related-to": "some relatedTo", + "relationship-data": [ + { + "relationship-key": "some relationshipKey", + "relationship-value": "some relationshipValue" + } + ] + } + ] + } +}
\ No newline at end of file diff --git a/prh-commons/src/test/resources/some_aai_service_instance.json b/prh-commons/src/test/resources/some_aai_service_instance.json new file mode 100644 index 00000000..31857314 --- /dev/null +++ b/prh-commons/src/test/resources/some_aai_service_instance.json @@ -0,0 +1,39 @@ +{ + "service-instance-id": "some serviceInstanceId", + "service-instance-name": "some serviceInstanceName", + "service-type": "some serviceType", + "service-role": "some serviceRole", + "environment-context": "some environmentContext", + "workload-context": "some workloadContext", + "created-at": "some createdAt", + "updated-at": "some updatedAt", + "description": "some description", + "model-invariant-id": "some modelInvariantId", + "model-version-id": "some modelVersionId", + "persona-model-version": "some personaModelVersion", + "widget-model-id": "some widgetModelId", + "widget-model-version": "some widgetModelVersion", + "bandwidth-total": "some bandwidthTotal", + "bandwidth-up-wan1": "some bandwidthUpWan1", + "bandwidth-down-wan1": "some bandwidthDownWan1", + "bandwidth-up-wan2": "some bandwidthUpWan2", + "bandwidth-down-wan2": "some bandwidthDownWan2", + "vhn-portal-url": "some vhnPortalUrl", + "service-instance-location-id": "some serviceInstanceLocationId", + "resource-version": "some resourceVersion", + "selflink": "some selflink", + "orchestration-status": "some orchestrationStatus", + "relationship-list": { + "relationship": [ + { + "related-to": "some relatedTo", + "relationship-data": [ + { + "relationship-key": "some relationshipKey", + "relationship-value": "some relationshipValue" + } + ] + } + ] + } +}
\ No newline at end of file |