2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017-2019 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.
22 * ============LICENSE_END=========================================================
25 package org.onap.appc.requesthandler.conv;
27 import org.apache.commons.lang3.StringUtils;
28 import com.att.eelf.configuration.EELFLogger;
29 import com.att.eelf.configuration.EELFManager;
31 import com.fasterxml.jackson.annotation.JsonIgnore;
32 import com.fasterxml.jackson.annotation.JsonInclude;
33 import com.fasterxml.jackson.annotation.JsonProperty;
34 import com.fasterxml.jackson.annotation.JsonValue;
35 import com.fasterxml.jackson.core.JsonProcessingException;
36 import com.fasterxml.jackson.databind.MapperFeature;
37 import com.fasterxml.jackson.databind.ObjectMapper;
38 import com.fasterxml.jackson.databind.ObjectWriter;
39 import com.fasterxml.jackson.databind.SerializationFeature;
40 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.*;
41 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeader;
42 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.CommonHeaderBuilder;
43 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags;
44 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.FlagsBuilder;
45 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.Status;
46 import org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.status.StatusBuilder;
47 import org.opendaylight.yangtools.concepts.Builder;
48 import org.opendaylight.yangtools.yang.binding.DataContainer;
49 import org.onap.appc.domainmodel.lcm.ResponseContext;
50 import org.onap.appc.domainmodel.lcm.VNFOperation;
51 import org.onap.appc.requesthandler.impl.AbstractRequestHandlerImpl;
52 import org.onap.appc.requesthandler.impl.DmaapOutgoingMessage;
54 import java.text.ParseException;
55 import java.text.SimpleDateFormat;
56 import java.util.Date;
57 import java.util.TimeZone;
60 public class Converter {
61 private static final String ISO_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
62 private final static String DMaaP_ROOT_VALUE = "output";
63 private static final SimpleDateFormat isoFormatter = new SimpleDateFormat(ISO_FORMAT);
64 private final static EELFLogger logger = EELFManager.getInstance().getLogger(Converter.class);
66 isoFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
69 public static Builder<?> convAsyncResponseToBuilder(
70 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 =
80 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.Action.valueOf(vnfOperation.name());
81 logger.debug("After resolving action");
82 CommonHeader commonHeader = convAsyncResponseTorev160108CommonHeader(response);
83 Status status = convAsyncResponseTorev160108Status(response);
84 Payload payload = convAsyncResponseTorev160108Payload(response);
85 logger.debug("Extracted action, status, payload");
88 outObj = new RollbackOutputBuilder();
89 ((RollbackOutputBuilder)outObj).setCommonHeader(commonHeader);
90 ((RollbackOutputBuilder)outObj).setStatus(status);
91 ((RollbackOutputBuilder)outObj).setPayload(payload);
94 outObj = new SnapshotOutputBuilder();
95 ((SnapshotOutputBuilder)outObj).setCommonHeader(commonHeader);
96 ((SnapshotOutputBuilder)outObj).setStatus(status);
98 ((SnapshotOutputBuilder) outObj)
99 .setSnapshotId(response.getAdditionalContext().get("output.snapshot-id"));
100 } catch (NullPointerException ignored) {
101 // in case of negative response, snapshotID is not populated, so just ignore NPL
105 outObj = new AuditOutputBuilder();
106 ((AuditOutputBuilder)outObj).setCommonHeader(commonHeader);
107 ((AuditOutputBuilder)outObj).setStatus(status);
108 ((AuditOutputBuilder)outObj).setPayload(payload);
111 outObj = new HealthCheckOutputBuilder();
112 ((HealthCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
113 ((HealthCheckOutputBuilder)outObj).setStatus(status);
114 ((HealthCheckOutputBuilder)outObj).setPayload(payload);
115 logger.debug("In HealthCheck case: created outObj, returning");
118 outObj = new LiveUpgradeOutputBuilder();
119 ((LiveUpgradeOutputBuilder)outObj).setCommonHeader(commonHeader);
120 ((LiveUpgradeOutputBuilder)outObj).setStatus(status);
123 outObj = new LockOutputBuilder();
124 ((LockOutputBuilder)outObj).setCommonHeader(commonHeader);
125 ((LockOutputBuilder)outObj).setStatus(status);
128 outObj = new ConfigureOutputBuilder();
129 ((ConfigureOutputBuilder)outObj).setCommonHeader(commonHeader);
130 ((ConfigureOutputBuilder)outObj).setStatus(status);
131 ((ConfigureOutputBuilder)outObj).setPayload(payload);
134 outObj = new ConfigModifyOutputBuilder();
135 ((ConfigModifyOutputBuilder)outObj).setCommonHeader(commonHeader);
136 ((ConfigModifyOutputBuilder)outObj).setStatus(status);
137 ((ConfigModifyOutputBuilder)outObj).setPayload(payload);
140 outObj = new ConfigScaleOutOutputBuilder();
141 ((ConfigScaleOutOutputBuilder)outObj).setCommonHeader(commonHeader);
142 ((ConfigScaleOutOutputBuilder)outObj).setStatus(status);
143 ((ConfigScaleOutOutputBuilder)outObj).setPayload(payload);
146 outObj = new ConfigRestoreOutputBuilder();
147 ((ConfigRestoreOutputBuilder)outObj).setCommonHeader(commonHeader);
148 ((ConfigRestoreOutputBuilder)outObj).setStatus(status);
149 ((ConfigRestoreOutputBuilder)outObj).setPayload(payload);
152 outObj = new SoftwareUploadOutputBuilder();
153 ((SoftwareUploadOutputBuilder)outObj).setCommonHeader(commonHeader);
154 ((SoftwareUploadOutputBuilder)outObj).setStatus(status);
157 outObj = new StopOutputBuilder();
158 ((StopOutputBuilder)outObj).setCommonHeader(commonHeader);
159 ((StopOutputBuilder)outObj).setStatus(status);
162 outObj = new SyncOutputBuilder();
163 ((SyncOutputBuilder)outObj).setCommonHeader(commonHeader);
164 ((SyncOutputBuilder)outObj).setStatus(status);
165 ((SyncOutputBuilder)outObj).setPayload(payload);
168 outObj = new TerminateOutputBuilder();
169 ((TerminateOutputBuilder)outObj).setCommonHeader(commonHeader);
170 ((TerminateOutputBuilder)outObj).setStatus(status);
173 outObj = new TestOutputBuilder();
174 ((TestOutputBuilder)outObj).setCommonHeader(commonHeader);
175 ((TestOutputBuilder)outObj).setStatus(status);
178 outObj = new UnlockOutputBuilder();
179 ((UnlockOutputBuilder)outObj).setCommonHeader(commonHeader);
180 ((UnlockOutputBuilder)outObj).setStatus(status);
183 outObj = new RestartOutputBuilder();
184 ((RestartOutputBuilder)outObj).setCommonHeader(commonHeader);
185 ((RestartOutputBuilder)outObj).setStatus(status);
188 outObj = new RebuildOutputBuilder();
189 ((RebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
190 ((RebuildOutputBuilder)outObj).setStatus(status);
193 outObj = new RebootOutputBuilder();
194 ((RebootOutputBuilder)outObj).setCommonHeader(commonHeader);
195 ((RebootOutputBuilder)outObj).setStatus(status);
198 outObj = new MigrateOutputBuilder();
199 ((MigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
200 ((MigrateOutputBuilder)outObj).setStatus(status);
203 outObj = new EvacuateOutputBuilder();
204 ((EvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
205 ((EvacuateOutputBuilder)outObj).setStatus(status);
208 outObj = new ConfigBackupOutputBuilder();
209 ((ConfigBackupOutputBuilder)outObj).setCommonHeader(commonHeader);
210 ((ConfigBackupOutputBuilder)outObj).setStatus(status);
211 ((ConfigBackupOutputBuilder)outObj).setPayload(payload);
213 case ConfigBackupDelete:
214 outObj = new ConfigBackupDeleteOutputBuilder();
215 ((ConfigBackupDeleteOutputBuilder)outObj).setCommonHeader(commonHeader);
216 ((ConfigBackupDeleteOutputBuilder)outObj).setStatus(status);
217 ((ConfigBackupDeleteOutputBuilder)outObj).setPayload(payload);
220 outObj = new ConfigExportOutputBuilder();
221 ((ConfigExportOutputBuilder)outObj).setCommonHeader(commonHeader);
222 ((ConfigExportOutputBuilder)outObj).setStatus(status);
225 outObj = new StartOutputBuilder();
226 ((StartOutputBuilder)outObj).setCommonHeader(commonHeader);
227 ((StartOutputBuilder)outObj).setStatus(status);
229 case StopApplication:
230 outObj = new StopApplicationOutputBuilder();
231 ((StopApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
232 ((StopApplicationOutputBuilder)outObj).setStatus(status);
233 ((StopApplicationOutputBuilder)outObj).setPayload(payload);
235 case StartApplication:
236 outObj = new StartApplicationOutputBuilder();
237 ((StartApplicationOutputBuilder)outObj).setCommonHeader(commonHeader);
238 ((StartApplicationOutputBuilder)outObj).setStatus(status);
239 ((StartApplicationOutputBuilder)outObj).setPayload(payload);
242 outObj = new QuiesceTrafficOutputBuilder();
243 ((QuiesceTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
244 ((QuiesceTrafficOutputBuilder)outObj).setStatus(status);
245 ((QuiesceTrafficOutputBuilder)outObj).setPayload(payload);
248 outObj = new ResumeTrafficOutputBuilder();
249 ((ResumeTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
250 ((ResumeTrafficOutputBuilder)outObj).setStatus(status);
251 ((ResumeTrafficOutputBuilder)outObj).setPayload(payload);
253 case UpgradeSoftware:
254 outObj = new UpgradeSoftwareOutputBuilder();
255 ((UpgradeSoftwareOutputBuilder)outObj).setCommonHeader(commonHeader);
256 ((UpgradeSoftwareOutputBuilder)outObj).setStatus(status);
257 ((UpgradeSoftwareOutputBuilder)outObj).setPayload(payload);
259 case UpgradePostCheck:
260 outObj = new UpgradePostCheckOutputBuilder();
261 ((UpgradePostCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
262 ((UpgradePostCheckOutputBuilder)outObj).setStatus(status);
263 ((UpgradePostCheckOutputBuilder)outObj).setPayload(payload);
266 outObj = new UpgradeBackupOutputBuilder();
267 ((UpgradeBackupOutputBuilder)outObj).setCommonHeader(commonHeader);
268 ((UpgradeBackupOutputBuilder)outObj).setStatus(status);
269 ((UpgradeBackupOutputBuilder)outObj).setPayload(payload);
272 outObj = new UpgradeBackoutOutputBuilder();
273 ((UpgradeBackoutOutputBuilder)outObj).setCommonHeader(commonHeader);
274 ((UpgradeBackoutOutputBuilder)outObj).setStatus(status);
275 ((UpgradeBackoutOutputBuilder)outObj).setPayload(payload);
277 case UpgradePreCheck:
278 outObj = new UpgradePreCheckOutputBuilder();
279 ((UpgradePreCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
280 ((UpgradePreCheckOutputBuilder)outObj).setStatus(status);
281 ((UpgradePreCheckOutputBuilder)outObj).setPayload(payload);
284 outObj = new AttachVolumeOutputBuilder();
285 ((AttachVolumeOutputBuilder)outObj).setCommonHeader(commonHeader);
286 ((AttachVolumeOutputBuilder)outObj).setStatus(status);
289 outObj = new DetachVolumeOutputBuilder();
290 ((DetachVolumeOutputBuilder)outObj).setCommonHeader(commonHeader);
291 ((DetachVolumeOutputBuilder)outObj).setStatus(status);
293 case DistributeTraffic:
294 outObj = new DistributeTrafficOutputBuilder();
295 ((DistributeTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
296 ((DistributeTrafficOutputBuilder)outObj).setStatus(status);
298 case DistributeTrafficCheck:
299 outObj = new DistributeTrafficCheckOutputBuilder();
300 ((DistributeTrafficCheckOutputBuilder)outObj).setCommonHeader(commonHeader);
301 ((DistributeTrafficCheckOutputBuilder)outObj).setStatus(status);
304 outObj = new PreConfigureOutputBuilder();
305 ((PreConfigureOutputBuilder)outObj).setCommonHeader(commonHeader);
306 ((PreConfigureOutputBuilder)outObj).setStatus(status);
307 ((PreConfigureOutputBuilder)outObj).setPayload(payload);
310 outObj = new GetConfigOutputBuilder();
311 ((GetConfigOutputBuilder)outObj).setCommonHeader(commonHeader);
312 ((GetConfigOutputBuilder)outObj).setStatus(status);
313 ((GetConfigOutputBuilder)outObj).setPayload(payload);
316 outObj = new PostEvacuateOutputBuilder();
317 ((PostEvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
318 ((PostEvacuateOutputBuilder)outObj).setStatus(status);
319 ((PostEvacuateOutputBuilder)outObj).setPayload(payload);
322 outObj = new PreMigrateOutputBuilder();
323 ((PreMigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
324 ((PreMigrateOutputBuilder)outObj).setStatus(status);
325 ((PreMigrateOutputBuilder)outObj).setPayload(payload);
328 outObj = new PostMigrateOutputBuilder();
329 ((PostMigrateOutputBuilder)outObj).setCommonHeader(commonHeader);
330 ((PostMigrateOutputBuilder)outObj).setStatus(status);
331 ((PostMigrateOutputBuilder)outObj).setPayload(payload);
334 outObj = new PreRebuildOutputBuilder();
335 ((PreRebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
336 ((PreRebuildOutputBuilder)outObj).setStatus(status);
337 ((PreRebuildOutputBuilder)outObj).setPayload(payload);
340 outObj = new ProvisioningOutputBuilder();
341 ((ProvisioningOutputBuilder)outObj).setCommonHeader(commonHeader);
342 ((ProvisioningOutputBuilder)outObj).setStatus(status);
343 ((ProvisioningOutputBuilder)outObj).setPayload(payload);
346 outObj = new PostRebuildOutputBuilder();
347 ((PostRebuildOutputBuilder)outObj).setCommonHeader(commonHeader);
348 ((PostRebuildOutputBuilder)outObj).setStatus(status);
349 ((PostRebuildOutputBuilder)outObj).setPayload(payload);
352 outObj = new PreEvacuateOutputBuilder();
353 ((PreEvacuateOutputBuilder)outObj).setCommonHeader(commonHeader);
354 ((PreEvacuateOutputBuilder)outObj).setStatus(status);
355 ((PreEvacuateOutputBuilder)outObj).setPayload(payload);
358 outObj = new StartTrafficOutputBuilder();
359 ((StartTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
360 ((StartTrafficOutputBuilder)outObj).setStatus(status);
361 ((StartTrafficOutputBuilder)outObj).setPayload(payload);
364 outObj = new StatusTrafficOutputBuilder();
365 ((StatusTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
366 ((StatusTrafficOutputBuilder)outObj).setStatus(status);
367 ((StatusTrafficOutputBuilder)outObj).setPayload(payload);
370 outObj = new StopTrafficOutputBuilder();
371 ((StopTrafficOutputBuilder)outObj).setCommonHeader(commonHeader);
372 ((StopTrafficOutputBuilder)outObj).setStatus(status);
373 ((StopTrafficOutputBuilder)outObj).setPayload(payload);
375 case LicenseManagement:
376 outObj = new LicenseManagementOutputBuilder();
377 ((LicenseManagementOutputBuilder)outObj).setCommonHeader(commonHeader);
378 ((LicenseManagementOutputBuilder)outObj).setStatus(status);
379 ((LicenseManagementOutputBuilder)outObj).setPayload(payload);
382 outObj = new ConfigScaleInOutputBuilder();
383 ((ConfigScaleInOutputBuilder)outObj).setCommonHeader(commonHeader);
384 ((ConfigScaleInOutputBuilder)outObj).setStatus(status);
385 ((ConfigScaleInOutputBuilder)outObj).setPayload(payload);
388 outObj = new DownloadNESwOutputBuilder();
389 ((DownloadNESwOutputBuilder)outObj).setCommonHeader(commonHeader);
390 ((DownloadNESwOutputBuilder)outObj).setStatus(status);
391 ((DownloadNESwOutputBuilder)outObj).setPayload(payload);
394 outObj = new ActivateNESwOutputBuilder();
395 ((ActivateNESwOutputBuilder)outObj).setCommonHeader(commonHeader);
396 ((ActivateNESwOutputBuilder)outObj).setStatus(status);
397 ((ActivateNESwOutputBuilder)outObj).setPayload(payload);
400 throw new IllegalArgumentException(action+" action is not supported");
404 public static Payload convAsyncResponseTorev160108Payload(ResponseContext inObj) {
405 logger.debug("Entering convAsyncResponseTorev160108Payload");
406 Payload payload = null;
407 if (inObj.getPayload() != null) {
408 payload = new Payload(inObj.getPayload());
410 logger.debug("Exiting convAsyncResponseTorev160108Payload");
414 public static String convPayloadObjectToJsonString(Object inObj) throws ParseException {
415 String payloadAsString = null;
418 if (inObj instanceof String) {
419 payloadAsString = (String)inObj;
422 ObjectMapper objectMapper = new ObjectMapper();
423 payloadAsString = objectMapper.writeValueAsString(inObj);
424 } catch (JsonProcessingException e) {
425 String errMsg = "Error serialize payload json to string";
426 throw new ParseException(errMsg + "-" + e.toString(), 0);
430 return payloadAsString;
433 public static Status convAsyncResponseTorev160108Status(ResponseContext inObj) {
434 logger.debug("Entering convAsyncResponseTorev160108Status");
435 StatusBuilder statusBuilder = new StatusBuilder();
436 statusBuilder.setCode(inObj.getStatus().getCode());
437 statusBuilder.setMessage(inObj.getStatus().getMessage());
438 logger.debug("Exiting convAsyncResponseTorev160108Status");
439 return statusBuilder.build();
442 public static CommonHeader convAsyncResponseTorev160108CommonHeader(ResponseContext inObj) {
443 logger.debug("Entered into convAsyncResponseTorev160108CommonHeader");
444 CommonHeader outObj = null;
446 throw new IllegalArgumentException("empty asyncResponse");
449 CommonHeaderBuilder commonHeaderBuilder = new CommonHeaderBuilder();
450 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags commonHeaderFlags;
451 if (inObj.getCommonHeader().getFlags() != null) {
452 commonHeaderFlags = Converter.convFlagsMapTorev160108Flags(inObj.getCommonHeader().getFlags());
453 commonHeaderBuilder.setFlags(commonHeaderFlags);
456 logger.debug("Before setApiVer");
457 commonHeaderBuilder.setApiVer(inObj.getCommonHeader().getApiVer());
458 commonHeaderBuilder.setRequestId(inObj.getCommonHeader().getRequestId());
459 if (inObj.getCommonHeader().getSubRequestId() != null) {
460 commonHeaderBuilder.setSubRequestId(inObj.getCommonHeader().getSubRequestId());
462 logger.debug("Before getOriginatorId");
463 if (inObj.getCommonHeader().getOriginatorId() != null) {
464 commonHeaderBuilder.setOriginatorId(inObj.getCommonHeader().getOriginatorId());
466 logger.debug("Before getTimeStamp");
467 if (inObj.getCommonHeader().getTimeStamp() != null) {
468 String zuluTimestampStr = Converter.convDateToZuluString(inObj.getCommonHeader().getTimeStamp());
469 logger.debug("After invoking convDateToZuluString()");
470 ZULU zuluTimestamp = new ZULU(zuluTimestampStr);
471 logger.debug("After ZULU()");
472 commonHeaderBuilder.setTimestamp(zuluTimestamp);
474 outObj = commonHeaderBuilder.build();
475 logger.debug("Exiting from convAsyncResponseTorev160108CommonHeader: Returning outObj: " + outObj.toString());
480 public static String convDateToZuluString(Date timeStamp) {
481 return isoFormatter.format(timeStamp);
484 public static org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags
485 convFlagsMapTorev160108Flags(org.onap.appc.domainmodel.lcm.Flags flags) {
486 Flags rev160108flags;
487 boolean anyFlag = false;
488 FlagsBuilder flagsBuilder = new FlagsBuilder();
490 * TODO: The below flags are related to APP-C request and should not be sent back -
491 * uncomment when response flags are introduced.
494 if (flags.containsKey(FORCE_FLAG)) {
495 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Force force =
496 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header
497 .Flags.Force.valueOf(flags.get(FORCE_FLAG).toString());
498 flagsBuilder.setForce(force);
501 if (flags.containsKey(MODE_FLAG)) {
502 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header.Flags.Mode mode =
503 org.opendaylight.yang.gen.v1.org.onap.appc.lcm.rev160108.common.header.common.header
504 .Flags.Mode.valueOf(flags.get(MODE_FLAG).toString());
505 flagsBuilder.setMode(mode);
508 if (flags.containsKey(TTL_FLAG)) {
509 flagsBuilder.setTtl(Integer.valueOf(flags.get(TTL_FLAG).toString()));
513 rev160108flags = flagsBuilder.build();
517 rev160108flags = flagsBuilder.build();
518 return rev160108flags;
521 public static String convAsyncResponseToJsonStringBody(
522 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
523 throws JsonProcessingException {
524 Builder<?> builder = Converter.convAsyncResponseToBuilder(vnfOperation, rpcName, asyncResponse);
525 Object message = builder.build();
526 ObjectMapper objectMapper = new ObjectMapper();
527 objectMapper.addMixIn(message.getClass(), MixInFlagsMessage.class);
528 objectMapper.addMixIn(CommonHeader.class, MixInCommonHeader.class);
529 objectMapper.addMixIn(Flags.class, MixIn.class);
530 objectMapper.addMixIn(Status.class, MixIn.class);
531 objectMapper.addMixIn(Payload.class, MixIn.class);
532 objectMapper.addMixIn(ZULU.class, MixIn.class);
534 // .configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
535 ObjectWriter writer = objectMapper
536 .setSerializationInclusion(JsonInclude.Include.NON_NULL)
537 .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
538 .writer(SerializationFeature.WRAP_ROOT_VALUE)
539 .withRootName(DMaaP_ROOT_VALUE)
540 .withoutFeatures(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS);
541 return writer.writeValueAsString(message);
544 public static String convAsyncResponseToDmaapOutgoingMessageJsonString(
545 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
546 throws JsonProcessingException {
547 logger.debug("Entered Converter.convAsyncResponseToDmaapOutgoingMessageJsonString()");
548 DmaapOutgoingMessage dmaapOutgoingMessage =
549 convAsyncResponseToDmaapOutgoingMessage(vnfOperation, rpcName, asyncResponse);
550 ObjectMapper objectMapper = new ObjectMapper();
551 objectMapper.addMixIn(dmaapOutgoingMessage.getBody().getOutput().getClass(), MixInFlagsMessage.class);
552 objectMapper.addMixIn(CommonHeader.class, MixInCommonHeader.class);
553 objectMapper.addMixIn(Flags.class, MixIn.class);
554 objectMapper.addMixIn(Status.class, MixIn.class);
555 objectMapper.addMixIn(Payload.class, MixIn.class);
556 objectMapper.addMixIn(ZULU.class, MixIn.class);
558 // .configure(SerializationConfig.Feature.SORT_PROPERTIES_ALPHABETICALLY, true)
559 ObjectWriter writer = objectMapper
560 .setSerializationInclusion(JsonInclude.Include.NON_NULL)
561 .configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, true)
563 logger.debug("Exiting Converter.convAsyncResponseToDmaapOutgoingMessageJsonString()");
564 return writer.writeValueAsString(dmaapOutgoingMessage);
567 public static DmaapOutgoingMessage convAsyncResponseToDmaapOutgoingMessage(
568 VNFOperation vnfOperation, String rpcName, ResponseContext asyncResponse)
569 throws JsonProcessingException {
570 logger.debug("Entered Converter.convAsyncResponseToDmaapOutgoingMessage()");
571 DmaapOutgoingMessage outObj = new DmaapOutgoingMessage();
572 String correlationID = getCorrelationID(asyncResponse);
573 outObj.setCorrelationID(correlationID);
574 outObj.setType("response");
575 outObj.setRpcName(rpcName);
576 logger.debug("In Converter.convAsyncResponseToDmaapOutgoingMessage()"
577 + " before invoking convAsyncResponseToBuilder");
578 Builder<?> builder = Converter.convAsyncResponseToBuilder(vnfOperation, rpcName, asyncResponse);
579 Object messageBody = builder.build();
580 DmaapOutgoingMessage.Body body = new DmaapOutgoingMessage.Body(messageBody);
581 outObj.setBody(body);
582 logger.debug("Exiting Converter.convAsyncResponseToDmaapOutgoingMessage(): messageBody is: " + body.toString());
586 private static String getCorrelationID(ResponseContext context) {
587 return context.getCommonHeader().getRequestId()
588 + (context.getCommonHeader().getSubRequestId() == null ?
589 "" : "-" + context.getCommonHeader().getSubRequestId());
592 public static String getRpcName(String action) {
593 String regex = "([a-zA-Z])(?=[A-Z])";
594 String replacement = "$1-";
595 return action.replaceAll(regex, replacement).toLowerCase();
598 abstract class MixIn {
600 abstract Class<? extends DataContainer> getImplementedInterface(); // to be removed during serialization
603 abstract java.lang.String getValue();
605 abstract class MixInCommonHeader extends MixIn {
606 @JsonProperty("api-ver")
607 abstract java.lang.String getApiVer();
608 @JsonProperty("originator-id")
609 abstract java.lang.String getOriginatorId();
610 @JsonProperty("request-id")
611 abstract java.lang.String getRequestId();
612 @JsonProperty("sub-request-id")
613 abstract java.lang.String getSubRequestId();
616 abstract class MixInFlagsMessage extends MixIn {
617 @JsonProperty("common-header")
618 abstract CommonHeader getCommonHeader();