2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2018 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Copyright (C) 2017 Amdocs
8 * ================================================================================
9 * Modifications Copyright (C) 2018-2019 Orange
10 * =============================================================================
11 * Licensed under the Apache License, Version 2.0 (the "License");
12 * you may not use this file except in compliance with the License.
13 * You may obtain a copy of the License at
15 * http://www.apache.org/licenses/LICENSE-2.0
17 * Unless required by applicable law or agreed to in writing, software
18 * distributed under the License is distributed on an "AS IS" BASIS,
19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20 * See the License for the specific language governing permissions and
21 * limitations under the License.
23 * ============LICENSE_END=========================================================
26 package org.onap.appc.requesthandler.conv;
28 import org.apache.commons.lang3.StringUtils;
29 import com.att.eelf.configuration.EELFLogger;
30 import com.att.eelf.configuration.EELFManager;
32 import com.fasterxml.jackson.annotation.JsonIgnore;
33 import com.fasterxml.jackson.annotation.JsonInclude;
34 import com.fasterxml.jackson.annotation.JsonProperty;
35 import com.fasterxml.jackson.annotation.JsonValue;
36 import com.fasterxml.jackson.core.JsonProcessingException;
37 import com.fasterxml.jackson.databind.MapperFeature;
38 import com.fasterxml.jackson.databind.ObjectMapper;
39 import com.fasterxml.jackson.databind.ObjectWriter;
40 import com.fasterxml.jackson.databind.SerializationFeature;
41 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
42 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
43 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeaderBuilder;
44 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags;
45 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.FlagsBuilder;
46 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
47 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.StatusBuilder;
48 import org.opendaylight.yangtools.concepts.Builder;
49 import org.opendaylight.yangtools.yang.binding.DataContainer;
50 import org.onap.appc.domainmodel.lcm.ResponseContext;
51 import org.onap.appc.domainmodel.lcm.VNFOperation;
52 import org.onap.appc.requesthandler.impl.AbstractRequestHandlerImpl;
53 import org.onap.appc.requesthandler.impl.DmaapOutgoingMessage;
55 import java.text.ParseException;
56 import java.text.SimpleDateFormat;
57 import java.util.Date;
58 import java.util.TimeZone;
61 public class Converter {
62 private static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
63 private final static String DMaaP_ROOT_VALUE = "output";
64 private static final SimpleDateFormat isoFormatter = new SimpleDateFormat(ISO_FORMAT);
65 private final static EELFLogger logger = EELFManager.getInstance().getLogger(Converter.class);
67 isoFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
70 public static Builder<?> convAsyncResponseToBuilder(VNFOperation vnfOperation, String rpcName, ResponseContext response) {
71 Builder<?> outObj = null;
72 if (response == null) {
73 throw new IllegalArgumentException("empty asyncResponse");
75 if (vnfOperation == null) {
76 throw new IllegalArgumentException("empty asyncResponse.action");
78 logger.debug("Entered Converter.convAsyncResponseToBuilder(): Operation Name " + vnfOperation.name());
79 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action action = org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action.valueOf(vnfOperation.name());
80 logger.debug("After resolving action");
81 CommonHeader commonHeader = convAsyncResponseTorev160108CommonHeader(response);
82 Status status = convAsyncResponseTorev160108Status(response);
83 Payload payload = convAsyncResponseTorev160108Payload(response);
84 logger.debug("Extracted action, status, payload");
87 outObj = new RollbackOutputBuilder();
88 ((RollbackOutputBuilder)outObj).setCommonHeader(commonHeader);
89 ((RollbackOutputBuilder)outObj).setStatus(status);
92 outObj = new SnapshotOutputBuilder();
93 ((SnapshotOutputBuilder)outObj).setCommonHeader(commonHeader);
94 ((SnapshotOutputBuilder)outObj).setStatus(status);
96 ((SnapshotOutputBuilder) outObj)
97 .setSnapshotId(response.getAdditionalContext().get("output.snapshot-id"));
98 } catch (NullPointerException ignored) {
99 // in case of negative response, snapshotID does not populated, so just ignore NPL
103 outObj = new AuditOutputBuilder();
104 ((AuditOutputBuilder)outObj).setCommonHeader(commonHeader);
105 ((AuditOutputBuilder)outObj).setStatus(status);
106 ((AuditOutputBuilder)outObj).setPayload(payload);
109 outObj = new HealthCheckOutputBuilder();
110 ((HealthCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
111 ((HealthCheckOutputBuilder)outObj).setStatus(status);
112 ((HealthCheckOutputBuilder)outObj).setPayload(payload);
113 logger.debug("In HealthCheck case: created outObj, returning");
116 outObj = new LiveUpgradeOutputBuilder();
117 ((LiveUpgradeOutputBuilder)outObj).setCommonHeader(commonHeader);
118 ((LiveUpgradeOutputBuilder)outObj).setStatus(status);
121 outObj = new LockOutputBuilder();
122 ((LockOutputBuilder)outObj).setCommonHeader(commonHeader);
123 ((LockOutputBuilder)outObj).setStatus(status);
126 outObj = new ConfigureOutputBuilder();
127 ((ConfigureOutputBuilder)outObj).setCommonHeader(commonHeader);
128 ((ConfigureOutputBuilder)outObj).setStatus(status);
129 ((ConfigureOutputBuilder)outObj).setPayload(payload);
132 outObj = new ConfigModifyOutputBuilder();
133 ((ConfigModifyOutputBuilder)outObj).setCommonHeader(commonHeader);
134 ((ConfigModifyOutputBuilder)outObj).setStatus(status);
135 ((ConfigModifyOutputBuilder)outObj).setPayload(payload);
138 outObj = new ConfigScaleOutOutputBuilder();
139 ((ConfigScaleOutOutputBuilder)outObj).setCommonHeader(commonHeader);
140 ((ConfigScaleOutOutputBuilder)outObj).setStatus(status);
141 ((ConfigScaleOutOutputBuilder)outObj).setPayload(payload);
144 outObj = new ConfigRestoreOutputBuilder();
145 ((ConfigRestoreOutputBuilder)outObj).setCommonHeader(commonHeader);
146 ((ConfigRestoreOutputBuilder)outObj).setStatus(status);
147 ((ConfigRestoreOutputBuilder)outObj).setPayload(payload);
150 outObj = new SoftwareUploadOutputBuilder();
151 ((SoftwareUploadOutputBuilder)outObj).setCommonHeader(commonHeader);
152 ((SoftwareUploadOutputBuilder)outObj).setStatus(status);
155 outObj = new StopOutputBuilder();
156 ((StopOutputBuilder)outObj).setCommonHeader(commonHeader);
157 ((StopOutputBuilder)outObj).setStatus(status);
160 outObj = new SyncOutputBuilder();
161 ((SyncOutputBuilder)outObj).setCommonHeader(commonHeader);
162 ((SyncOutputBuilder)outObj).setStatus(status);
163 ((SyncOutputBuilder)outObj).setPayload(payload);
166 outObj = new TerminateOutputBuilder();
167 ((TerminateOutputBuilder)outObj).setCommonHeader(commonHeader);
168 ((TerminateOutputBuilder)outObj).setStatus(status);
171 outObj = new TestOutputBuilder();
172 ((TestOutputBuilder)outObj).setCommonHeader(commonHeader);
173 ((TestOutputBuilder)outObj).setStatus(status);
176 outObj = new UnlockOutputBuilder();
177 ((UnlockOutputBuilder)outObj).setCommonHeader(commonHeader);
178 ((UnlockOutputBuilder)outObj).setStatus(status);
181 outObj = new RestartOutputBuilder();
182 ((RestartOutputBuilder)outObj).setCommonHeader(commonHeader);
183 ((RestartOutputBuilder)outObj).setStatus(status);
186 outObj = new RebuildOutputBuilder();
187 ((RebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
188 ((RebuildOutputBuilder)outObj).setStatus(status);
191 outObj = new RebootOutputBuilder();
192 ((RebootOutputBuilder)outObj).setCommonHeader(commonHeader);
193 ((RebootOutputBuilder)outObj).setStatus(status);
196 outObj = new MigrateOutputBuilder();
197 ((MigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
198 ((MigrateOutputBuilder)outObj).setStatus(status);
201 outObj = new EvacuateOutputBuilder();
202 ((EvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
203 ((EvacuateOutputBuilder)outObj).setStatus(status);
206 outObj = new ConfigBackupOutputBuilder();
207 ((ConfigBackupOutputBuilder)outObj).setCommonHeader(commonHeader);
208 ((ConfigBackupOutputBuilder)outObj).setStatus(status);
209 ((ConfigBackupOutputBuilder)outObj).setPayload(payload);
211 case ConfigBackupDelete:
212 outObj = new ConfigBackupDeleteOutputBuilder();
213 ((ConfigBackupDeleteOutputBuilder)outObj).setCommonHeader(commonHeader);
214 ((ConfigBackupDeleteOutputBuilder)outObj).setStatus(status);
215 ((ConfigBackupDeleteOutputBuilder)outObj).setPayload(payload);
218 outObj = new ConfigExportOutputBuilder();
219 ((ConfigExportOutputBuilder)outObj).setCommonHeader(commonHeader);
220 ((ConfigExportOutputBuilder)outObj).setStatus(status);
223 outObj = new StartOutputBuilder();
224 ((StartOutputBuilder)outObj).setCommonHeader(commonHeader);
225 ((StartOutputBuilder)outObj).setStatus(status);
227 case StopApplication:
228 outObj = new StopApplicationOutputBuilder();
229 ((StopApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
230 ((StopApplicationOutputBuilder)outObj).setStatus(status);
231 ((StopApplicationOutputBuilder)outObj).setPayload(payload);
233 case StartApplication:
234 outObj = new StartApplicationOutputBuilder();
235 ((StartApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
236 ((StartApplicationOutputBuilder)outObj).setStatus(status);
237 ((StartApplicationOutputBuilder)outObj).setPayload(payload);
240 outObj = new QuiesceTrafficOutputBuilder();
241 ((QuiesceTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
242 ((QuiesceTrafficOutputBuilder)outObj).setStatus(status);
243 ((QuiesceTrafficOutputBuilder)outObj).setPayload(payload);
246 outObj = new ResumeTrafficOutputBuilder();
247 ((ResumeTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
248 ((ResumeTrafficOutputBuilder)outObj).setStatus(status);
249 ((ResumeTrafficOutputBuilder)outObj).setPayload(payload);
251 case UpgradeSoftware:
252 outObj = new UpgradeSoftwareOutputBuilder();
253 ((UpgradeSoftwareOutputBuilder)outObj).setCommonHeader(commonHeader);
254 ((UpgradeSoftwareOutputBuilder)outObj).setStatus(status);
255 ((UpgradeSoftwareOutputBuilder)outObj).setPayload(payload);
257 case UpgradePostCheck:
258 outObj = new UpgradePostCheckOutputBuilder();
259 ((UpgradePostCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
260 ((UpgradePostCheckOutputBuilder)outObj).setStatus(status);
261 ((UpgradePostCheckOutputBuilder)outObj).setPayload(payload);
264 outObj = new UpgradeBackupOutputBuilder();
265 ((UpgradeBackupOutputBuilder)outObj).setCommonHeader(commonHeader);
266 ((UpgradeBackupOutputBuilder)outObj).setStatus(status);
267 ((UpgradeBackupOutputBuilder)outObj).setPayload(payload);
270 outObj = new UpgradeBackoutOutputBuilder();
271 ((UpgradeBackoutOutputBuilder)outObj).setCommonHeader(commonHeader);
272 ((UpgradeBackoutOutputBuilder)outObj).setStatus(status);
273 ((UpgradeBackoutOutputBuilder)outObj).setPayload(payload);
275 case UpgradePreCheck:
276 outObj = new UpgradePreCheckOutputBuilder();
277 ((UpgradePreCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
278 ((UpgradePreCheckOutputBuilder)outObj).setStatus(status);
279 ((UpgradePreCheckOutputBuilder)outObj).setPayload(payload);
282 outObj = new AttachVolumeOutputBuilder();
283 ((AttachVolumeOutputBuilder)outObj).setCommonHeader(commonHeader);
284 ((AttachVolumeOutputBuilder)outObj).setStatus(status);
287 outObj = new DetachVolumeOutputBuilder();
288 ((DetachVolumeOutputBuilder)outObj).setCommonHeader(commonHeader);
289 ((DetachVolumeOutputBuilder)outObj).setStatus(status);
291 case DistributeTraffic:
292 outObj = new DistributeTrafficOutputBuilder();
293 ((DistributeTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
294 ((DistributeTrafficOutputBuilder)outObj).setStatus(status);
296 case DistributeTrafficCheck:
297 outObj = new DistributeTrafficCheckOutputBuilder();
298 ((DistributeTrafficCheckOutputBuilder) outObj).setCommonHeader(commonHeader);
299 ((DistributeTrafficCheckOutputBuilder)outObj).setStatus(status);
302 outObj = new PreConfigureOutputBuilder();
303 ((PreConfigureOutputBuilder)outObj).setCommonHeader(commonHeader);
304 ((PreConfigureOutputBuilder)outObj).setStatus(status);
305 ((PreConfigureOutputBuilder)outObj).setPayload(payload);
308 outObj = new GetConfigOutputBuilder();
309 ((GetConfigOutputBuilder)outObj).setCommonHeader(commonHeader);
310 ((GetConfigOutputBuilder)outObj).setStatus(status);
311 ((GetConfigOutputBuilder)outObj).setPayload(payload);
314 outObj = new PostEvacuateOutputBuilder();
315 ((PostEvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
316 ((PostEvacuateOutputBuilder)outObj).setStatus(status);
317 ((PostEvacuateOutputBuilder)outObj).setPayload(payload);
320 outObj = new PreMigrateOutputBuilder();
321 ((PreMigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
322 ((PreMigrateOutputBuilder)outObj).setStatus(status);
323 ((PreMigrateOutputBuilder)outObj).setPayload(payload);
326 outObj = new PostMigrateOutputBuilder();
327 ((PostMigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
328 ((PostMigrateOutputBuilder)outObj).setStatus(status);
329 ((PostMigrateOutputBuilder)outObj).setPayload(payload);
332 outObj = new PreRebuildOutputBuilder();
333 ((PreRebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
334 ((PreRebuildOutputBuilder)outObj).setStatus(status);
335 ((PreRebuildOutputBuilder)outObj).setPayload(payload);
338 outObj = new ProvisioningOutputBuilder();
339 ((ProvisioningOutputBuilder)outObj).setCommonHeader(commonHeader);
340 ((ProvisioningOutputBuilder)outObj).setStatus(status);
341 ((ProvisioningOutputBuilder)outObj).setPayload(payload);
344 outObj = new PostRebuildOutputBuilder();
345 ((PostRebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
346 ((PostRebuildOutputBuilder)outObj).setStatus(status);
347 ((PostRebuildOutputBuilder)outObj).setPayload(payload);
350 outObj = new PreEvacuateOutputBuilder();
351 ((PreEvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
352 ((PreEvacuateOutputBuilder)outObj).setStatus(status);
353 ((PreEvacuateOutputBuilder)outObj).setPayload(payload);
356 outObj = new StartTrafficOutputBuilder();
357 ((StartTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
358 ((StartTrafficOutputBuilder)outObj).setStatus(status);
359 ((StartTrafficOutputBuilder)outObj).setPayload(payload);
362 outObj = new StatusTrafficOutputBuilder();
363 ((StatusTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
364 ((StatusTrafficOutputBuilder)outObj).setStatus(status);
365 ((StatusTrafficOutputBuilder)outObj).setPayload(payload);
368 outObj = new StopTrafficOutputBuilder();
369 ((StopTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
370 ((StopTrafficOutputBuilder)outObj).setStatus(status);
371 ((StopTrafficOutputBuilder)outObj).setPayload(payload);
373 case LicenseManagement:
374 outObj = new LicenseManagementOutputBuilder();
375 ((LicenseManagementOutputBuilder)outObj).setCommonHeader(commonHeader);
376 ((LicenseManagementOutputBuilder)outObj).setStatus(status);
377 ((LicenseManagementOutputBuilder)outObj).setPayload(payload);
380 throw new IllegalArgumentException(action+" action is not supported");
384 public static Payload convAsyncResponseTorev160108Payload(ResponseContext inObj) {
385 logger.debug("Entering convAsyncResponseTorev160108Payload");
386 Payload payload = null;
387 if (inObj.getPayload() != null) {
388 payload = new Payload(inObj.getPayload());
390 logger.debug("Exiting convAsyncResponseTorev160108Payload");
394 public static String convPayloadObjectToJsonString(Object inObj) throws ParseException {
395 String payloadAsString = null;
398 if (inObj instanceof String) {
399 payloadAsString = (String)inObj;
402 ObjectMapper objectMapper = new ObjectMapper();
403 payloadAsString = objectMapper.writeValueAsString(inObj);
404 } catch (JsonProcessingException e) {
405 String errMsg = "Error serialize payload json to string";
406 throw new ParseException(errMsg + "-" + e.toString(), 0);
410 return payloadAsString;
413 public static Status convAsyncResponseTorev160108Status(ResponseContext inObj) {
414 logger.debug("Entering convAsyncResponseTorev160108Status");
415 StatusBuilder statusBuilder = new StatusBuilder();
416 statusBuilder.setCode(inObj.getStatus().getCode());
417 statusBuilder.setMessage(inObj.getStatus().getMessage());
418 logger.debug("Exiting convAsyncResponseTorev160108Status");
419 return statusBuilder.build();
422 public static CommonHeader convAsyncResponseTorev160108CommonHeader(ResponseContext inObj) {
423 logger.debug("Entered into convAsyncResponseTorev160108CommonHeader");
424 CommonHeader outObj = null;
426 throw new IllegalArgumentException("empty asyncResponse");
429 CommonHeaderBuilder commonHeaderBuilder = new CommonHeaderBuilder();
430 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags commonHeaderFlags;
431 if (inObj.getCommonHeader().getFlags() != null) {
432 commonHeaderFlags = Converter.convFlagsMapTorev160108Flags(inObj.getCommonHeader().getFlags());
433 commonHeaderBuilder.setFlags(commonHeaderFlags);
436 logger.debug("Before setApiVer");
437 commonHeaderBuilder.setApiVer(inObj.getCommonHeader().getApiVer());
438 commonHeaderBuilder.setRequestId(inObj.getCommonHeader().getRequestId());
439 if (inObj.getCommonHeader().getSubRequestId() != null) {
440 commonHeaderBuilder.setSubRequestId(inObj.getCommonHeader().getSubRequestId());
442 logger.debug("Before getOriginatorId");
443 if (inObj.getCommonHeader().getOriginatorId() != null) {
444 commonHeaderBuilder.setOriginatorId(inObj.getCommonHeader().getOriginatorId());
446 logger.debug("Before getTimeStamp");
447 if (inObj.getCommonHeader().getTimeStamp() != null) {
448 String zuluTimestampStr = Converter.convDateToZuluString(inObj.getCommonHeader().getTimeStamp());
449 logger.debug("After invoking convDateToZuluString()");
450 ZULU zuluTimestamp = new ZULU(zuluTimestampStr);
451 logger.debug("After ZULU()");
452 commonHeaderBuilder.setTimestamp(zuluTimestamp);
454 outObj = commonHeaderBuilder.build();
455 logger.debug("Exiting from convAsyncResponseTorev160108CommonHeader: Returning outObj::"+ outObj.toString());
460 public static String convDateToZuluString(Date timeStamp) {
461 return isoFormatter.format(timeStamp);
464 public static org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags
465 convFlagsMapTorev160108Flags(org.onap.appc.domainmodel.lcm.Flags flags) {
466 Flags rev160108flags;
467 boolean anyFlag = false;
468 FlagsBuilder flagsBuilder = new FlagsBuilder();
470 * TODO: The below flags are related to APP-C request and should not be sent back - uncomment when response flags are introduced.
473 if(flags.containsKey(FORCE_FLAG)){
474 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Force force =
475 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Force.valueOf(flags.get(FORCE_FLAG).toString());
476 flagsBuilder.setForce(force);
479 if(flags.containsKey(MODE_FLAG)){
480 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Mode mode =
481 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Mode.valueOf(flags.get(MODE_FLAG).toString());
482 flagsBuilder.setMode(mode);
485 if(flags.containsKey(TTL_FLAG)){
486 flagsBuilder.setTtl(Integer.valueOf(flags.get(TTL_FLAG).toString()));
490 rev160108flags = flagsBuilder.build();
494 rev160108flags = flagsBuilder.build();
495 return rev160108flags;
498 public static String convAsyncResponseToJsonStringBody(
499 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
500 throws JsonProcessingException {
501 Builder<?> builder = Converter.convAsyncResponseToBuilder(vnfOperation, rpcName, asyncResponse);
502 Object message = builder.build();
503 ObjectMapper objectMapper = new ObjectMapper();
504 objectMapper.addMixIn(message.getClass(), MixInFlagsMessage.class);
505 objectMapper.addMixIn(CommonHeader.class, MixInCommonHeader.class);
506 objectMapper.addMixIn(Flags.class, MixIn.class);
507 objectMapper.addMixIn(Status.class, MixIn.class);
508 objectMapper.addMixIn(Payload.class, MixIn.class);
509 objectMapper.addMixIn(ZULU.class, MixIn.class);
511 // .configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY,true)
512 ObjectWriter writer = objectMapper
513 .setSerializationInclusion(JsonInclude.Include.NON_NULL)
514 .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
515 .writer(SerializationFeature.WRAP_ROOT_VALUE)
516 .withRootName(DMaaP_ROOT_VALUE)
517 .withoutFeatures(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
518 return writer.writeValueAsString(message);
521 public static String convAsyncResponseToDmaapOutgoingMessageJsonString(
522 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
523 throws JsonProcessingException {
524 logger.debug("Entered Converter.convAsyncResponseToDmaapOutgoingMessageJsonString()");
525 DmaapOutgoingMessage dmaapOutgoingMessage =
526 convAsyncResponseToDmaapOutgoingMessage(vnfOperation, rpcName, asyncResponse);
527 ObjectMapper objectMapper = new ObjectMapper();
528 objectMapper.addMixIn(dmaapOutgoingMessage.getBody().getOutput().getClass(), MixInFlagsMessage.class);
529 objectMapper.addMixIn(CommonHeader.class, MixInCommonHeader.class);
530 objectMapper.addMixIn(Flags.class, MixIn.class);
531 objectMapper.addMixIn(Status.class, MixIn.class);
532 objectMapper.addMixIn(Payload.class, MixIn.class);
533 objectMapper.addMixIn(ZULU.class, MixIn.class);
535 // .configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY,true)
536 ObjectWriter writer = objectMapper
537 .setSerializationInclusion(JsonInclude.Include.NON_NULL)
538 .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
540 logger.debug("Exiting Converter.convAsyncResponseToDmaapOutgoingMessageJsonString()");
541 return writer.writeValueAsString(dmaapOutgoingMessage);
544 public static DmaapOutgoingMessage convAsyncResponseToDmaapOutgoingMessage(
545 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
546 throws JsonProcessingException {
547 logger.debug("Entered Converter.convAsyncResponseToDmaapOutgoingMessage()");
548 DmaapOutgoingMessage outObj = new DmaapOutgoingMessage();
549 String correlationID = getCorrelationID(asyncResponse);
550 outObj.setCorrelationID(correlationID);
551 outObj.setType("response");
552 outObj.setRpcName(rpcName);
553 logger.debug("In Converter.convAsyncResponseToDmaapOutgoingMessage()"
554 + " before invoking convAsyncResponseToBuilder");
555 Builder<?> builder = Converter.convAsyncResponseToBuilder(vnfOperation, rpcName, asyncResponse);
556 Object messageBody = builder.build();
557 DmaapOutgoingMessage.Body body = new DmaapOutgoingMessage.Body(messageBody);
558 outObj.setBody(body);
559 logger.debug("Exiting Converter.convAsyncResponseToDmaapOutgoingMessage(): messageBody is:" + body.toString());
563 private static String getCorrelationID(ResponseContext context) {
564 return context.getCommonHeader().getRequestId()
565 + (context.getCommonHeader().getSubRequestId() == null ?
566 "" : "-" + context.getCommonHeader().getSubRequestId());
569 abstract class MixIn {
571 abstract Class<? extends DataContainer> getImplementedInterface(); // to be removed during serialization
574 abstract java.lang.String getValue();
576 abstract class MixInCommonHeader extends MixIn {
577 @JsonProperty("api-ver")
578 abstract java.lang.String getApiVer();
579 @JsonProperty("originator-id")
580 abstract java.lang.String getOriginatorId();
581 @JsonProperty("request-id")
582 abstract java.lang.String getRequestId();
583 @JsonProperty("sub-request-id")
584 abstract java.lang.String getSubRequestId();
587 abstract class MixInFlagsMessage extends MixIn {
588 @JsonProperty("common-header")
589 abstract CommonHeader getCommonHeader();