summaryrefslogtreecommitdiffstats
path: root/champ-service
diff options
context:
space:
mode:
authorMichael Arrastia <MArrasti@amdocs.com>2018-06-05 13:19:45 +0100
committerMichael Arrastia <MArrasti@amdocs.com>2018-06-05 13:19:45 +0100
commita96fd576a4cb3cd25fdc2eb0c4f2c1c98f6d50cf (patch)
tree296becbaa361d15f2a0ce73510f67353adad3bf1 /champ-service
parentd448077492f159e5877b73c0e732aecc5b4a7695 (diff)
Update payload format for update notification
The update notification event is now aligned with the format of the response event. Both response and update notification events issued by Champ now include top level header and body properties. Change-Id: I00f9971cdbab4944def66c25f5939d5cc4de71bd Issue-ID: AAI-1195 Signed-off-by: Michael Arrastia <MArrasti@amdocs.com>
Diffstat (limited to 'champ-service')
-rw-r--r--champ-service/src/main/java/org/onap/champ/async/ChampAsyncRequestProcessor.java6
-rw-r--r--champ-service/src/main/java/org/onap/champ/event/GraphEvent.java51
-rw-r--r--champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventEnvelope.java12
-rw-r--r--champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventHeader.java228
-rw-r--r--champ-service/src/test/resources/event/event-envelope.json2
5 files changed, 11 insertions, 288 deletions
diff --git a/champ-service/src/main/java/org/onap/champ/async/ChampAsyncRequestProcessor.java b/champ-service/src/main/java/org/onap/champ/async/ChampAsyncRequestProcessor.java
index 334871e..3b13a42 100644
--- a/champ-service/src/main/java/org/onap/champ/async/ChampAsyncRequestProcessor.java
+++ b/champ-service/src/main/java/org/onap/champ/async/ChampAsyncRequestProcessor.java
@@ -29,16 +29,16 @@ import java.util.concurrent.ThreadPoolExecutor;
import javax.naming.OperationNotSupportedException;
import javax.ws.rs.core.Response.Status;
import org.onap.aai.champcore.ChampTransaction;
+import org.onap.aai.champcore.event.envelope.ChampEventHeader;
import org.onap.aai.cl.api.Logger;
import org.onap.aai.cl.eelf.LoggerFactory;
import org.onap.aai.event.api.EventConsumer;
import org.onap.champ.ChampRESTAPI;
import org.onap.champ.event.GraphEvent;
import org.onap.champ.event.GraphEvent.GraphEventResult;
-import org.onap.champ.event.envelope.GraphEventEnvelope;
-import org.onap.champ.event.envelope.GraphEventHeader;
import org.onap.champ.event.GraphEventEdge;
import org.onap.champ.event.GraphEventVertex;
+import org.onap.champ.event.envelope.GraphEventEnvelope;
import org.onap.champ.exception.ChampServiceException;
import org.onap.champ.service.ChampDataService;
import org.onap.champ.service.ChampThreadFactory;
@@ -159,7 +159,7 @@ public class ChampAsyncRequestProcessor extends TimerTask {
}
// Apply Champ Event header
- eventEnvelope.setHeader(GraphEventHeader.builder().requestId(event.getTransactionId()).build());
+ eventEnvelope.setHeader(new ChampEventHeader.Builder(ChampEventHeader.EventType.UPDATE_RESULT).requestId(event.getTransactionId()).build());
// Parse the event and call champ Dao to process , Create the
// response event and put it on response queue
diff --git a/champ-service/src/main/java/org/onap/champ/event/GraphEvent.java b/champ-service/src/main/java/org/onap/champ/event/GraphEvent.java
index cf2f11d..b967ee1 100644
--- a/champ-service/src/main/java/org/onap/champ/event/GraphEvent.java
+++ b/champ-service/src/main/java/org/onap/champ/event/GraphEvent.java
@@ -22,10 +22,6 @@ package org.onap.champ.event;
import javax.ws.rs.core.Response.Status;
-import org.onap.champ.exception.ChampServiceException;
-
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
import com.google.gson.annotations.SerializedName;
public class GraphEvent {
@@ -59,12 +55,6 @@ public class GraphEvent {
private Status httpErrorStatus;
- /**
- * Marshaller/unmarshaller for converting to/from JSON.
- */
- private static final Gson gson = new GsonBuilder().disableHtmlEscaping()
- .setPrettyPrinting().create();
-
public static Builder builder(GraphEventOperation operation) {
return new Builder(operation);
}
@@ -134,47 +124,6 @@ public class GraphEvent {
this.edge = edge;
}
- /**
- * Unmarshalls this Vertex object into a JSON string.
- *
- * @return - A JSON format string representation of this Vertex.
- */
- public String toJson() {
- return gson.toJson(this);
- }
-
- /**
- * Marshalls the provided JSON string into a Vertex object.
- *
- * @param json - The JSON string to produce the Vertex from.
- * @return - A Vertex object.
- * @throws SpikeException
- */
- public static GraphEvent fromJson(String json) throws ChampServiceException {
-
- try {
-
- // Make sure that we were actually provided a non-empty string
- // before we
- // go any further.
- if (json == null || json.isEmpty()) {
- throw new ChampServiceException("Empty or null JSON string.", Status.BAD_REQUEST);
- }
-
- // Marshall the string into a Vertex object.
- return gson.fromJson(json, GraphEvent.class);
-
- } catch (Exception ex) {
- throw new ChampServiceException("Unable to parse JSON string: ", Status.BAD_REQUEST);
- }
- }
-
- @Override
- public String toString() {
-
- return toJson();
- }
-
public String getObjectKey() {
if (this.getVertex() != null) {
return this.getVertex().getId();
diff --git a/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventEnvelope.java b/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventEnvelope.java
index 7958a3a..13e0f7a 100644
--- a/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventEnvelope.java
+++ b/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventEnvelope.java
@@ -22,6 +22,7 @@
package org.onap.champ.event.envelope;
import javax.ws.rs.core.Response.Status;
+import org.onap.aai.champcore.event.envelope.ChampEventHeader;
import org.onap.champ.event.GraphEvent;
import org.onap.champ.exception.ChampServiceException;
import com.google.gson.Gson;
@@ -29,7 +30,7 @@ import com.google.gson.GsonBuilder;
public class GraphEventEnvelope {
- private GraphEventHeader header;
+ private ChampEventHeader header;
private GraphEvent body;
/**
@@ -38,20 +39,21 @@ public class GraphEventEnvelope {
private static final Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
public GraphEventEnvelope(GraphEvent event) {
- this.header = new GraphEventHeader.Builder().requestId(event.getTransactionId()).build();
+ this.header = new ChampEventHeader.Builder(ChampEventHeader.EventType.UPDATE_RESULT)
+ .requestId(event.getTransactionId()).build();
this.body = event;
}
- public GraphEventEnvelope(GraphEventHeader header, GraphEvent body) {
+ public GraphEventEnvelope(ChampEventHeader header, GraphEvent body) {
this.header = header;
this.body = body;
}
- public GraphEventHeader getHeader() {
+ public ChampEventHeader getHeader() {
return header;
}
- public void setHeader(GraphEventHeader header) {
+ public void setHeader(ChampEventHeader header) {
this.header = header;
}
diff --git a/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventHeader.java b/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventHeader.java
deleted file mode 100644
index 59e01ea..0000000
--- a/champ-service/src/main/java/org/onap/champ/event/envelope/GraphEventHeader.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/**
- * ============LICENSE_START==========================================
- * org.onap.aai
- * ===================================================================
- * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
- * Copyright © 2017 Amdocs
- * ===================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * 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============================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-package org.onap.champ.event.envelope;
-
-import java.time.Instant;
-import java.time.ZoneOffset;
-import java.time.format.DateTimeFormatter;
-import java.util.Objects;
-import java.util.UUID;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.annotations.SerializedName;
-
-public class GraphEventHeader {
-
- private static final String SOURCE_NAME = "CHAMP";
-
- private static final String EVENT_TYPE = "db-update-result";
-
- @SerializedName("request-id")
- private String requestId;
-
- private String timestamp;
-
- @SerializedName("source-name")
- private String sourceName;
-
- @SerializedName("event-type")
- private String eventType;
-
- @SerializedName("validation-entity-type")
- private String validationEntityType;
-
- @SerializedName("validation-top-entity-type")
- private String validationTopEntityType;
-
- @SerializedName("entity-link")
- private String entityLink;
-
- private static final Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
-
- public static Builder builder() {
- return new Builder();
- }
-
- public static class Builder {
-
- private String requestId;
- private String validationEntityType;
- private String validationTopEntityType;
- private String entityLink;
-
- public Builder requestId(String val) {
- requestId = val;
- return this;
- }
-
- public Builder validationEntityType(String val) {
- validationEntityType = val;
- return this;
- }
-
- public Builder validationTopEntityType(String val) {
- validationTopEntityType = val;
- return this;
- }
-
- public Builder entityLink(String val) {
- entityLink = val;
- return this;
- }
-
- public GraphEventHeader build() {
- return new GraphEventHeader(this);
- }
- }
-
- private GraphEventHeader(Builder builder) {
- requestId = builder.requestId != null ? builder.requestId : UUID.randomUUID().toString();
- timestamp = DateTimeFormatter.ofPattern("yyyyMMdd'T'HHmmssX").withZone(ZoneOffset.UTC).format(Instant.now());
- sourceName = SOURCE_NAME;
- eventType = EVENT_TYPE;
-
- validationEntityType = builder.validationEntityType;
- validationTopEntityType = builder.validationTopEntityType;
- entityLink = builder.entityLink;
- }
-
- /**
- * Serializes this object into a JSON string representation.
- *
- * @return a JSON format string representation of this object.
- */
- public String toJson() {
- return gson.toJson(this);
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // GETTERS AND SETTERS
- ///////////////////////////////////////////////////////////////////////////
-
- public String getRequestId() {
- return requestId;
- }
-
- public void setRequestId(String requestId) {
- this.requestId = requestId;
- }
-
- public String getTimestamp() {
- return timestamp;
- }
-
- public void setTimestamp(String timestamp) {
- this.timestamp = timestamp;
- }
-
- public String getSourceName() {
- return sourceName;
- }
-
- public void setSourceName(String sourceName) {
- this.sourceName = sourceName;
- }
-
- public String getEventType() {
- return eventType;
- }
-
- public void setEventType(String eventType) {
- this.eventType = eventType;
- }
-
- public String getValidationEntityType() {
- return validationEntityType;
- }
-
- public void setValidationEntityType(String validationEntityType) {
- this.validationEntityType = validationEntityType;
- }
-
- public String getValidationTopEntityType() {
- return validationTopEntityType;
- }
-
- public void setValidationTopEntityType(String validationTopEntityType) {
- this.validationTopEntityType = validationTopEntityType;
- }
-
- public String getEntityLink() {
- return entityLink;
- }
-
- public void setEntityLink(String entityLink) {
- this.entityLink = entityLink;
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // OVERRIDES
- ///////////////////////////////////////////////////////////////////////////
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#hashCode()
- */
- @Override
- public int hashCode() {
- return Objects.hash(this.requestId, this.timestamp, this.sourceName, this.eventType, this.validationEntityType,
- this.validationTopEntityType, this.entityLink);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#equals(java.lang.Object)
- */
- @Override
- public boolean equals(Object obj) {
- if (!(obj instanceof GraphEventHeader)) {
- return false;
- } else if (obj == this) {
- return true;
- }
- GraphEventHeader rhs = (GraphEventHeader) obj;
- // @formatter:off
- return new EqualsBuilder()
- .append(requestId, rhs.requestId)
- .append(timestamp, rhs.timestamp)
- .append(sourceName, rhs.sourceName)
- .append(eventType, rhs.sourceName)
- .append(validationEntityType, rhs.validationEntityType)
- .append(validationTopEntityType, rhs.validationTopEntityType)
- .append(entityLink, rhs.entityLink)
- .isEquals();
- // @formatter:on
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return this.toJson();
- }
-}
diff --git a/champ-service/src/test/resources/event/event-envelope.json b/champ-service/src/test/resources/event/event-envelope.json
index 68888c0..b31ab55 100644
--- a/champ-service/src/test/resources/event/event-envelope.json
+++ b/champ-service/src/test/resources/event/event-envelope.json
@@ -3,7 +3,7 @@
"request-id": "2253f351-d9b6-4638-9fe3-2c194bee1b29",
"timestamp": "20180316T092301Z",
"source-name": "CHAMP",
- "event-type": "db-update-result"
+ "event-type": "update-result"
},
"body": {
"operation": "CREATE",