diff options
Diffstat (limited to 'appc-dg/appc-dg-shared/appc-dg-common/src/main/java/org/openecomp/appc/dg/common/impl/DCAEReporterPluginImpl.java')
-rw-r--r-- | appc-dg/appc-dg-shared/appc-dg-common/src/main/java/org/openecomp/appc/dg/common/impl/DCAEReporterPluginImpl.java | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/appc-dg/appc-dg-shared/appc-dg-common/src/main/java/org/openecomp/appc/dg/common/impl/DCAEReporterPluginImpl.java b/appc-dg/appc-dg-shared/appc-dg-common/src/main/java/org/openecomp/appc/dg/common/impl/DCAEReporterPluginImpl.java new file mode 100644 index 000000000..4458de10b --- /dev/null +++ b/appc-dg/appc-dg-shared/appc-dg-common/src/main/java/org/openecomp/appc/dg/common/impl/DCAEReporterPluginImpl.java @@ -0,0 +1,121 @@ +/*- + * ============LICENSE_START======================================================= + * openECOMP : APP-C + * ================================================================================ + * Copyright (C) 2017 AT&T 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.openecomp.appc.dg.common.impl; + +import org.apache.commons.lang3.StringUtils; +import org.openecomp.appc.adapter.dmaap.EventSender; +import org.openecomp.appc.adapter.dmaap.DmaapDestination; +import org.openecomp.appc.adapter.dmaap.event.EventHeader; +import org.openecomp.appc.adapter.dmaap.event.EventMessage; +import org.openecomp.appc.adapter.dmaap.event.EventStatus; +import org.openecomp.appc.dg.common.DCAEReporterPlugin; +import org.openecomp.appc.exceptions.APPCException; +import org.openecomp.sdnc.sli.SvcLogicContext; +import org.osgi.framework.BundleContext; +import org.osgi.framework.FrameworkUtil; +import org.osgi.framework.ServiceReference; + +import java.util.Map; + +public class DCAEReporterPluginImpl implements DCAEReporterPlugin { + + private EventSender eventSender; + + public DCAEReporterPluginImpl() { + BundleContext bctx = FrameworkUtil.getBundle(this.getClass()).getBundleContext(); + ServiceReference sref = bctx.getServiceReference(EventSender.class); + eventSender = (EventSender) bctx.getService(sref); + } + + @Override + public void report(Map<String, String> params, SvcLogicContext ctx) throws APPCException { + Integer errorReportCode = 501; + boolean bwcMode = Boolean.parseBoolean(ctx.getAttribute("isBwcMode")); + String errorDescription,apiVersion,eventId ; + errorDescription = getErrorDescriptionAndAddToCtx(bwcMode,params,ctx); + if(!bwcMode){ + apiVersion = ctx.getAttribute("input.common-header.api-ver"); + eventId = ctx.getAttribute("input.common-header.request-id"); + }else { + apiVersion = ctx.getAttribute(Constants.API_VERSION_FIELD_NAME); + eventId = ctx.getAttribute(Constants.REQ_ID_FIELD_NAME); + } + + EventMessage eventMessage = new EventMessage(new EventHeader((new java.util.Date()).toString(), apiVersion, eventId), new EventStatus(errorReportCode, errorDescription)); + eventSender.sendEvent(DmaapDestination.DCAE, eventMessage); + } + + private String getErrorDescriptionAndAddToCtx(boolean bwcMode, Map<String, String> params, SvcLogicContext ctx) { + String errorDescription; + if(!bwcMode) { + errorDescription = params.get(Constants.DG_OUTPUT_STATUS_MESSAGE); + if(StringUtils.isEmpty(errorDescription)) { + errorDescription = ctx.getAttribute(Constants.DG_OUTPUT_STATUS_MESSAGE); + }else { + addToContextIfNotContains(bwcMode,errorDescription,ctx); + } + }else{ + errorDescription = params.get(Constants.DG_ERROR_FIELD_NAME); + if(StringUtils.isEmpty(errorDescription)) { + errorDescription = ctx.getAttribute("org.openecomp.appc.dg.error"); + }else { + addToContextIfNotContains(bwcMode, errorDescription,ctx); + } + } + + if(StringUtils.isEmpty(errorDescription)) { + errorDescription = "Unknown"; + } + return errorDescription; + } + + private void addToContextIfNotContains(boolean bwcMode, String errorDescription, SvcLogicContext ctx) { + String errorDescriptionFromCtx; + if(!StringUtils.isEmpty(errorDescription)) { + String outputStatusMessageProperty = bwcMode ? "org.openecomp.appc.dg.error" : Constants.DG_OUTPUT_STATUS_MESSAGE; + errorDescriptionFromCtx = ctx.getAttribute(outputStatusMessageProperty); + if(StringUtils.isEmpty(errorDescriptionFromCtx)){ + ctx.setAttribute(outputStatusMessageProperty, errorDescription); + }else if (!errorDescriptionFromCtx.contains(errorDescription)){ + ctx.setAttribute(outputStatusMessageProperty, errorDescriptionFromCtx+ " | "+ errorDescription); + } + } + } + + + @Override + public void reportSuccess(Map<String, String> params, SvcLogicContext ctx) throws APPCException { + Integer successReportCode = 500; + String successDescription, apiVersion, eventId; + successDescription = params.get(Constants.DG_OUTPUT_STATUS_MESSAGE); + apiVersion = ctx.getAttribute("input.common-header.api-ver"); + eventId = ctx.getAttribute("input.common-header.request-id"); + ctx.setAttribute(Constants.DG_OUTPUT_STATUS_MESSAGE, successDescription); + + if (null == successDescription) { + successDescription = "Success"; + } + EventMessage eventMessage = new EventMessage(new EventHeader((new java.util.Date()).toString(), apiVersion, eventId), new EventStatus(successReportCode, successDescription)); + eventSender.sendEvent(DmaapDestination.DCAE, eventMessage); + } + +} |