Update to consume and publish events in new format
[aai/champ.git] / champ-service / src / main / java / org / onap / champ / event / envelope / GraphEventEnvelope.java
1 /**
2  * ============LICENSE_START==========================================
3  * org.onap.aai
4  * ===================================================================
5  * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
6  * Copyright © 2017 Amdocs
7  * ===================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  *
12  *        http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END============================================
20  * ECOMP is a trademark and service mark of AT&T Intellectual Property.
21  */
22 package org.onap.champ.event.envelope;
23
24 import javax.ws.rs.core.Response.Status;
25 import org.onap.champ.event.GraphEvent;
26 import org.onap.champ.exception.ChampServiceException;
27 import com.google.gson.Gson;
28 import com.google.gson.GsonBuilder;
29
30 public class GraphEventEnvelope {
31
32     private GraphEventHeader header;
33     private GraphEvent body;
34
35     /**
36      * Serializer/deserializer for converting to/from JSON.
37      */
38     private static final Gson gson = new GsonBuilder().disableHtmlEscaping().setPrettyPrinting().create();
39
40     public GraphEventEnvelope(GraphEvent event) {
41         this.header = new GraphEventHeader.Builder().requestId(event.getTransactionId()).build();
42         this.body = event;
43     }
44
45     public GraphEventEnvelope(GraphEventHeader header, GraphEvent body) {
46         this.header = header;
47         this.body = body;
48     }
49
50     public GraphEventHeader getHeader() {
51         return header;
52     }
53
54     public void setHeader(GraphEventHeader header) {
55         this.header = header;
56     }
57
58     public GraphEvent getBody() {
59         return body;
60     }
61
62     public void setBody(GraphEvent body) {
63         this.body = body;
64     }
65
66     /**
67      * Serializes this Vertex object into a JSON string.
68      *
69      * @return - A JSON format string representation of this Vertex.
70      */
71     public String toJson() {
72         return gson.toJson(this);
73     }
74
75     /**
76      * Deserializes the provided JSON string into a Event Envelope object.
77      *
78      * @param json the JSON string to produce the Event Envelope from.
79      * @return an Event Envelope object.
80      * @throws ChampServiceException
81      */
82     public static GraphEventEnvelope fromJson(String json) throws ChampServiceException {
83         try {
84             if (json == null || json.isEmpty()) {
85                 throw new ChampServiceException("Empty or null JSON string.", Status.BAD_REQUEST);
86             }
87             return gson.fromJson(json, GraphEventEnvelope.class);
88         } catch (Exception ex) {
89             throw new ChampServiceException("Unable to parse JSON string: ", Status.BAD_REQUEST);
90         }
91     }
92
93     @Override
94     public String toString() {
95         return toJson();
96     }
97
98 }