aboutsummaryrefslogtreecommitdiffstats
path: root/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter
diff options
context:
space:
mode:
Diffstat (limited to 'prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter')
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiPnfResultModel.java208
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiServiceInstanceResultModel.java211
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/ConsumerDmaapModel.java75
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiGetServiceInstanceClient.java (renamed from prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiGetServiceInstanceClient.java)4
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpGetClient.java (renamed from prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpGetClient.java)5
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpPatchClient.java (renamed from prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpPatchClient.java)6
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiJsonBodyBuilderImpl.java59
-rw-r--r--prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/PnfReadyJsonBodyBuilder.java49
8 files changed, 611 insertions, 6 deletions
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiPnfResultModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiPnfResultModel.java
new file mode 100644
index 00000000..cae63853
--- /dev/null
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiPnfResultModel.java
@@ -0,0 +1,208 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PNF-REGISTRATION-HANDLER
+ * ================================================================================
+ * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.prh.adapter.aai.api;
+
+import com.google.gson.annotations.SerializedName;
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
+import org.onap.dcaegen2.services.prh.model.ImmutableRelationship;
+import org.onap.dcaegen2.services.prh.model.Relationship;
+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
+ */
+@Value.Immutable
+@Gson.TypeAdapters(fieldNamingStrategy = true)
+public interface AaiPnfResultModel {
+
+ /**
+ * unique name of Physical Network Function.
+ **/
+ @Nullable
+ @SerializedName("pnf-name")
+ String getPnfName();
+
+ /**
+ * name of Physical Network Function.
+ **/
+ @Nullable
+ @SerializedName("pnf-name2")
+ String getPnfName2();
+
+ /**
+ * URL to endpoint where AAI can get more details.
+ **/
+ @Nullable
+ @SerializedName("selflink")
+ String getSelflink();
+
+ /**
+ * source of name2
+ **/
+ @Nullable
+ @SerializedName("pnf-name2-source")
+ String getPnfName2Source();
+
+ /**
+ * id of pnf
+ **/
+ @Nullable
+ @SerializedName("pnf-id")
+ String getPnfId();
+
+ /**
+ * Equipment type. Source of truth should define valid values.
+ **/
+ @Nullable
+ @SerializedName("equip-type")
+ String getEquipType();
+
+ /**
+ * Equipment vendor. Source of truth should define valid values.
+ **/
+ @Nullable
+ @SerializedName("equip-vendor")
+ String getEquipVendor();
+
+ /**
+ * Equipment model. Source of truth should define valid values.
+ **/
+ @Nullable
+ @SerializedName("equip-model")
+ String getEquipModel();
+
+ /**
+ * identifier of managed by ATT or customer
+ **/
+ @Nullable
+ @SerializedName("management-option")
+ String getManagementOption();
+
+ /**
+ * ipv4-oam-address with new naming convention for IP addresses
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v4-oam")
+ String getIpaddressV4Oam();
+
+ /**
+ * sw-version is the version of SW for the hosted application on the PNF.
+ **/
+ @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.
+ **/
+ @Nullable
+ @SerializedName("in-maint")
+ Boolean isInMaint();
+
+ /**
+ * ID of the physical frame (relay rack) where pnf is installed.
+ **/
+ @Nullable
+ @SerializedName("frame-id")
+ String getFrameId();
+
+ /**
+ * Serial number of the device
+ **/
+ @Nullable
+ @SerializedName("serial-number")
+ String getSerialNumber();
+
+ /**
+ * IPV4 Loopback 0 address
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v4-loopback-0")
+ String getIpaddressV4Loopback0();
+
+ /**
+ * IPV6 Loopback 0 address
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v6-loopback-0")
+ String getIpaddressV6Loopback0();
+
+ /**
+ * IPV4 AIM address
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v4-aim")
+ String getIpaddressV4Aim();
+
+ /**
+ * IPV6 AIM address
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v6-aim")
+ String getIpaddressV6Aim();
+
+ /**
+ * IPV6 OAM address
+ **/
+ @Nullable
+ @SerializedName("ipaddress-v6-oam")
+ String getIpaddressV6Oam();
+
+ /**
+ * CANOPI's inventory status. Only set with values exactly as defined by CANOPI.
+ **/
+ @Nullable
+ @SerializedName("inv-status")
+ String getInvStatus();
+
+ /**
+ * Used for optimistic concurrency. Must be empty on createGson, valid on update and delete.
+ **/
+ @Nullable
+ @SerializedName("resource-version")
+ String getResourceVersion();
+
+ /**
+ * Prov Status of this device (not under canopi control) Valid values [PREPROV/NVTPROV/PROV]
+ **/
+ @Nullable
+ @SerializedName("prov-status")
+ String getProvStatus();
+
+ /**
+ * Nf Role is the role performed by this instance in the network.
+ **/
+ @Nullable
+ @SerializedName("nf-role")
+ String getNfRole();
+
+ /**
+ * Get relationshipList
+ **/
+ @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/adapter/aai/api/AaiServiceInstanceResultModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiServiceInstanceResultModel.java
new file mode 100644
index 00000000..f74c1a5a
--- /dev/null
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiServiceInstanceResultModel.java
@@ -0,0 +1,211 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PNF-REGISTRATION-HANDLER
+ * ================================================================================
+ * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.prh.adapter.aai.api;
+
+import com.google.gson.annotations.SerializedName;
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
+import org.onap.dcaegen2.services.prh.model.ImmutableRelationship;
+import org.onap.dcaegen2.services.prh.model.Relationship;
+import org.springframework.lang.Nullable;
+
+@Value.Immutable
+@Gson.TypeAdapters(fieldNamingStrategy = true)
+public interface AaiServiceInstanceResultModel {
+
+ /**
+ * Uniquely identifies this instance of a service
+ **/
+ @Nullable
+ @SerializedName("service-instance-id")
+ String getServiceInstanceId();
+
+ /**
+ * This field will store a name assigned to the service-instance.
+ **/
+ @Nullable
+ @SerializedName("service-instance-name")
+ String getServiceInstanceName();
+
+ /**
+ * String capturing type of service.
+ **/
+ @Nullable
+ @SerializedName("service-type")
+ String getServiceType();
+
+ /**
+ * String capturing the service role.
+ **/
+ @Nullable
+ @SerializedName("service-role")
+ String getServiceRole();
+
+ /**
+ * This field will store the environment context assigned to the service-instance.
+ **/
+ @Nullable
+ @SerializedName("environment-context")
+ String getEnvironmentContext();
+
+ /**
+ * This field will store the workload context assigned to the service-instance.
+ **/
+ @Nullable
+ @SerializedName("workload-context")
+ String getWorkloadContext();
+
+ /**
+ * createGson time of Network Service.
+ **/
+ @Nullable
+ @SerializedName("created-at")
+ String getCreatedAt();
+
+ /**
+ * last update of Network Service.
+ **/
+ @Nullable
+ @SerializedName("updated-at")
+ String getUpdatedAt();
+
+ /**
+ * short description for service-instance.
+ **/
+ @Nullable
+ @SerializedName("description")
+ String getDescription();
+
+ /**
+ * the ASDC model id for this resource or service model.
+ **/
+ @Nullable
+ @SerializedName("model-invariant-id")
+ String getModelInvariantId();
+
+ /**
+ * the ASDC model version for this resource or service model.
+ **/
+ @Nullable
+ @SerializedName("model-version-id")
+ String getModelVersionId();
+
+ /**
+ * the ASDC model version for this resource or service model.
+ **/
+ @Nullable
+ @SerializedName("persona-model-version")
+ String getPersonaModelVersion();
+
+ /**
+ * the ASDC data dictionary widget model. This maps directly to the A&AI widget.
+ **/
+ @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.
+ **/
+ @Nullable
+ @SerializedName("widget-model-version")
+ String getWidgetModelVersion();
+
+ /**
+ * Indicates the total bandwidth to be used for this service.
+ **/
+ @Nullable
+ @SerializedName("bandwidth-total")
+ String getBandwidthTotal();
+
+ /**
+ * indicates the upstream bandwidth this service will use on the WAN1 port of the physical device.
+ **/
+ @Nullable
+ @SerializedName("bandwidth-up-wan1")
+ String getBandwidthUpWan1();
+
+ /**
+ * indicates the downstream bandwidth this service will use on the WAN1 port of the physical device.
+ **/
+ @Nullable
+ @SerializedName("bandwidth-down-wan1")
+ String getBandwidthDownWan1();
+
+ /**
+ * indicates the upstream bandwidth this service will use on the WAN2 port of the physical device.
+ **/
+ @Nullable
+ @SerializedName("bandwidth-up-wan2")
+ String getBandwidthUpWan2();
+
+ /**
+ * indicates the downstream bandwidth this service will use on the WAN2 port of the physical device.
+ **/
+ @Nullable
+ @SerializedName("bandwidth-down-wan2")
+ String getBandwidthDownWan2();
+
+ /**
+ * URL customers will use to access the vHN Portal.
+ **/
+ @Nullable
+ @SerializedName("vhn-portal-url")
+ String getVhnPortalUrl();
+
+ /**
+ * An identifier that customers assign to the location where this service is being used.
+ **/
+ @Nullable
+ @SerializedName("service-instance-location-id")
+ String getServiceInstanceLocationId();
+
+ /**
+ * 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.
+ **/
+ @Nullable
+ @SerializedName("selflink")
+ String getSelflink();
+
+ /**
+ * Orchestration status of this service.
+ **/
+ @Nullable
+ @SerializedName("orchestration-status")
+ String getOrchestrationStatus();
+
+ /**
+ * Get relationshipList
+ **/
+ @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/adapter/aai/api/ConsumerDmaapModel.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/ConsumerDmaapModel.java
new file mode 100644
index 00000000..4d417a5e
--- /dev/null
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/ConsumerDmaapModel.java
@@ -0,0 +1,75 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PNF-REGISTRATION-HANDLER
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.prh.adapter.aai.api;
+
+import com.google.gson.JsonObject;
+import com.google.gson.annotations.SerializedName;
+import org.immutables.gson.Gson;
+import org.immutables.value.Value;
+import org.springframework.lang.Nullable;
+
+/**
+ * @author <a href="mailto:przemyslaw.wasala@nokia.com">Przemysław Wąsala</a> on 5/8/18
+ */
+
+@Value.Immutable
+@Gson.TypeAdapters(fieldNamingStrategy = true)
+public interface ConsumerDmaapModel {
+
+ @SerializedName(value = "correlationId", alternate = "correlationId")
+ String getCorrelationId();
+
+ @Nullable
+ @SerializedName(value = "ipaddress-v4-oam", alternate = "ipaddress-v4-oam")
+ String getIpv4();
+
+ @Nullable
+ @SerializedName(value = "ipaddress-v6-oam", alternate = "ipaddress-v6-oam")
+ String getIpv6();
+
+ @Nullable
+ @SerializedName(value = "serial-number", alternate = "serial-number")
+ String getSerialNumber();
+
+ @Nullable
+ @SerializedName(value = "equip-vendor", alternate = "equip-vendor")
+ String getEquipVendor();
+
+ @Nullable
+ @SerializedName(value = "equip-model", alternate = "equip-model")
+ String getEquipModel();
+
+ @Nullable
+ @SerializedName(value = "equip-type", alternate = "equip-type")
+ String getEquipType();
+
+ @Nullable
+ @SerializedName(value = "nf-role", alternate = "nf-role")
+ String getNfRole();
+
+ @Nullable
+ @SerializedName(value = "sw-version", alternate = "sw-version")
+ String getSwVersion();
+
+ @Nullable
+ @SerializedName(value = "additionalFields", alternate = "additionalFields")
+ JsonObject getAdditionalFields();
+}
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiGetServiceInstanceClient.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiGetServiceInstanceClient.java
index c41bb906..26fb8491 100644
--- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiGetServiceInstanceClient.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiGetServiceInstanceClient.java
@@ -18,13 +18,15 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.prh.adapter.aai.api;
+package org.onap.dcaegen2.services.prh.adapter.aai.impl;
import static org.onap.dcaegen2.services.prh.adapter.aai.main.AaiHttpClientFactory.createRequestDiagnosticContext;
import io.vavr.collection.HashMap;
import io.vavr.collection.Map;
import org.apache.commons.text.StringSubstitutor;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.AaiHttpClient;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.AaiServiceInstanceQueryModel;
import org.onap.dcaegen2.services.prh.adapter.aai.main.AaiClientConfiguration;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse;
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpGetClient.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpGetClient.java
index d50344ee..2ae28089 100644
--- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpGetClient.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpGetClient.java
@@ -18,13 +18,14 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.prh.adapter.aai.api;
+package org.onap.dcaegen2.services.prh.adapter.aai.impl;
import static org.onap.dcaegen2.services.prh.adapter.aai.main.AaiHttpClientFactory.createRequestDiagnosticContext;
import io.vavr.collection.HashMap;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.AaiHttpClient;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ConsumerDmaapModel;
import org.onap.dcaegen2.services.prh.adapter.aai.main.AaiClientConfiguration;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.ImmutableHttpRequest;
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpPatchClient.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpPatchClient.java
index ab1066aa..38ee680a 100644
--- a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/api/AaiHttpPatchClient.java
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiHttpPatchClient.java
@@ -18,15 +18,15 @@
* ============LICENSE_END=========================================================
*/
-package org.onap.dcaegen2.services.prh.adapter.aai.api;
+package org.onap.dcaegen2.services.prh.adapter.aai.impl;
import static org.onap.dcaegen2.services.prh.adapter.aai.main.AaiHttpClientFactory.createRequestDiagnosticContext;
import io.vavr.collection.HashMap;
import io.vavr.collection.Map;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.AaiHttpClient;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ConsumerDmaapModel;
import org.onap.dcaegen2.services.prh.adapter.aai.main.AaiClientConfiguration;
-import org.onap.dcaegen2.services.prh.model.AaiJsonBodyBuilderImpl;
-import org.onap.dcaegen2.services.prh.model.ConsumerDmaapModel;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpMethod;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.HttpResponse;
import org.onap.dcaegen2.services.sdk.rest.services.adapters.http.ImmutableHttpRequest;
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiJsonBodyBuilderImpl.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiJsonBodyBuilderImpl.java
new file mode 100644
index 00000000..21277e85
--- /dev/null
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/AaiJsonBodyBuilderImpl.java
@@ -0,0 +1,59 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PNF-REGISTRATION-HANDLER
+ * ================================================================================
+ * Copyright (C) 2019 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.prh.adapter.aai.impl;
+
+import com.google.gson.GsonBuilder;
+import com.google.gson.TypeAdapterFactory;
+import java.util.ServiceLoader;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ImmutableConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ImmutableConsumerDmaapModel.Builder;
+import org.springframework.util.StringUtils;
+
+
+public class AaiJsonBodyBuilderImpl {
+
+ public String createJsonBody(ConsumerDmaapModel consumerDmaapModel) {
+ GsonBuilder gsonBuilder = new GsonBuilder();
+ ServiceLoader.load(TypeAdapterFactory.class).forEach(gsonBuilder::registerTypeAdapterFactory);
+
+ Builder builder = ImmutableConsumerDmaapModel.builder()
+ .correlationId(consumerDmaapModel.getCorrelationId())
+ .serialNumber(consumerDmaapModel.getSerialNumber())
+ .equipVendor(consumerDmaapModel.getEquipVendor())
+ .equipModel(consumerDmaapModel.getEquipModel())
+ .equipType(consumerDmaapModel.getEquipType())
+ .nfRole(consumerDmaapModel.getNfRole())
+ .swVersion(consumerDmaapModel.getSwVersion())
+ .additionalFields(consumerDmaapModel.getAdditionalFields());
+
+ String ipv4 = consumerDmaapModel.getIpv4();
+ if (!StringUtils.isEmpty(ipv4)) {
+ builder.ipv4(ipv4);
+ }
+ String ipv6 = consumerDmaapModel.getIpv6();
+ if (!StringUtils.isEmpty(ipv6)) {
+ builder.ipv6(ipv6);
+ }
+
+ return gsonBuilder.create().toJson(builder.build());
+ }
+} \ No newline at end of file
diff --git a/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/PnfReadyJsonBodyBuilder.java b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/PnfReadyJsonBodyBuilder.java
new file mode 100644
index 00000000..3088226e
--- /dev/null
+++ b/prh-commons/src/main/java/org/onap/dcaegen2/services/prh/adapter/aai/impl/PnfReadyJsonBodyBuilder.java
@@ -0,0 +1,49 @@
+/*
+ * ============LICENSE_START=======================================================
+ * PNF-REGISTRATION-HANDLER
+ * ================================================================================
+ * Copyright (C) 2018 NOKIA Intellectual Property. All rights reserved.
+ * ================================================================================
+ * 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
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.prh.adapter.aai.impl;
+
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ImmutableConsumerDmaapModel;
+import org.onap.dcaegen2.services.prh.adapter.aai.api.ImmutableConsumerDmaapModel.Builder;
+import org.onap.dcaegen2.services.prh.model.utils.PrhModelAwareGsonBuilder;
+
+
+public class PnfReadyJsonBodyBuilder {
+
+ /**
+ * Method for serialization object by GSON.
+ *
+ * @param consumerDmaapModel - object which will be serialized
+ * @return string from serialization
+ */
+ public JsonElement createJsonBody(ConsumerDmaapModel consumerDmaapModel) {
+ Builder builder = ImmutableConsumerDmaapModel.builder()
+ .correlationId(consumerDmaapModel.getCorrelationId());
+
+ JsonObject additionalFields = consumerDmaapModel.getAdditionalFields();
+ if(additionalFields != null && !additionalFields.equals(new JsonObject())) {
+ builder.additionalFields(additionalFields);
+ }
+ return PrhModelAwareGsonBuilder.createGson().toJsonTree(builder.build());
+ }
+} \ No newline at end of file