diff options
Diffstat (limited to 'bpmn/MSOCommonBPMN/src')
5 files changed, 361 insertions, 349 deletions
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy index 1ceafb6684..4670b11b71 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/AbstractServiceTaskProcessor.groovy @@ -416,7 +416,7 @@ public abstract class AbstractServiceTaskProcessor implements ServiceTaskProcess *@param name *@return **/ - public String getVariable(DelegateExecution execution, String name) { + public static String getVariable(DelegateExecution execution, String name) { def myObj = execution.getVariable(name) if(myObj instanceof VariableMap){ VariableMap serializedObjectMap = (VariableMap) myObj diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtils.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtils.groovy index e6d54b8681..eb832224db 100644 --- a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtils.groovy +++ b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtils.groovy @@ -47,22 +47,19 @@ class SDNCAdapterUtils { ExceptionUtil exceptionUtil = new ExceptionUtil() JsonUtils jsonUtil = new JsonUtils() + MsoUtils msoUtils = new MsoUtils() - private AbstractServiceTaskProcessor taskProcessor - - public SDNCAdapterUtils(AbstractServiceTaskProcessor taskProcessor) { - this.taskProcessor = taskProcessor + public SDNCAdapterUtils() { } String SDNCAdapterFeatureRequest(DelegateExecution execution, String requestName, String action, String callbackURL, String serviceOperation, String timeoutValueInMinutes) { - def utils=new MsoUtils() def prefix = execution.getVariable('prefix') - def request = taskProcessor.getVariable(execution, requestName) - def requestInformation = utils.getNodeXml(request, 'request-information', false) - def serviceInformation = utils.getNodeXml(request, 'service-information', false) - def featureInformation = utils.getNodeXml(request, 'feature-information', false) - def featureParameters = utils.getNodeXml(request, 'feature-parameters', false) + def request = AbstractServiceTaskProcessor.getVariable(execution, requestName) + def requestInformation = msoUtils.getNodeXml(request, 'request-information', false) + def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false) + def featureInformation = msoUtils.getNodeXml(request, 'feature-information', false) + def featureParameters = msoUtils.getNodeXml(request, 'feature-parameters', false) def requestId = execution.getVariable('testReqId') // for junits if(requestId==null){ @@ -71,10 +68,10 @@ class SDNCAdapterUtils { def svcInstanceId = execution.getVariable("mso-service-instance-id") - def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation) - def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation) - def nnsFeatureInformation = utils.removeXmlNamespaces(featureInformation) - def nnsFeatureParameters = utils.removeXmlNamespaces(featureParameters) + def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation) + def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation) + def nnsFeatureInformation = msoUtils.removeXmlNamespaces(featureInformation) + def nnsFeatureParameters = msoUtils.removeXmlNamespaces(featureParameters) String sdncAdapterFeatureRequest = """ <sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1" @@ -95,18 +92,17 @@ class SDNCAdapterUtils { <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes> </sdncadapterworkflow:SDNCAdapterWorkflowRequest> """ - sdncAdapterFeatureRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterFeatureRequest)) + sdncAdapterFeatureRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterFeatureRequest)) return sdncAdapterFeatureRequest } String SDNCAdapterActivateVnfRequest(DelegateExecution execution, String action, String callbackURL, String serviceOperation, String msoAction, String timeoutValueInMinutes) { - def utils=new MsoUtils() def prefix = execution.getVariable('prefix') - def request = taskProcessor.getVariable(execution, prefix+'Request') - def requestInformation = utils.getNodeXml(request, 'request-information', false) - def serviceInformation = utils.getNodeXml(request, 'service-information', false) - def vnfInformationList = utils.getNodeXml(request, 'vnf-information-list', false) + def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request') + def requestInformation = msoUtils.getNodeXml(request, 'request-information', false) + def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false) + def vnfInformationList = msoUtils.getNodeXml(request, 'vnf-information-list', false) def requestId = execution.getVariable('testReqId') // for junits if(requestId==null){ @@ -115,9 +111,9 @@ class SDNCAdapterUtils { def svcInstanceId = execution.getVariable("mso-service-instance-id") - def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation) - def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation) - def nnsVnfInformationList = utils.removeXmlNamespaces(vnfInformationList) + def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation) + def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation) + def nnsVnfInformationList = msoUtils.removeXmlNamespaces(vnfInformationList) String sdncAdapterActivateVnfRequest = """ <sdncadapterworkflow:SDNCAdapterWorkflowRequest xmlns:sdncadapterworkflow="http://openecomp.com/mso/workflow/schema/v1" @@ -138,15 +134,14 @@ class SDNCAdapterUtils { <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes> </sdncadapterworkflow:SDNCAdapterWorkflowRequest> """ - sdncAdapterActivateVnfRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterActivateVnfRequest)) + sdncAdapterActivateVnfRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterActivateVnfRequest)) return sdncAdapterActivateVnfRequest } String SDNCAdapterL3ToHigherLayerRequest(DelegateExecution execution, String action, String callbackURL, String serviceOperation, String timeoutValueInMinutes) { - def utils=new MsoUtils() def prefix = execution.getVariable('prefix') - def request = taskProcessor.getVariable(execution, prefix+'Request') + def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request') String requestInformation = """<request-information> <request-id>${MsoUtils.xmlEscape(execution.getVariable("mso-request-id"))}</request-id> @@ -164,8 +159,8 @@ class SDNCAdapterUtils { }else if("delete".equalsIgnoreCase(action)){ xml.'request-action'.replaceBody('deleteTrinityBonding') } - requestInformation = utils.removeXmlPreamble(groovy.xml.XmlUtil.serialize(xml)) - def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation) + requestInformation = msoUtils.removeXmlPreamble(groovy.xml.XmlUtil.serialize(xml)) + def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation) def requestId = execution.getVariable('testReqId') // for junits if(requestId==null){ @@ -234,7 +229,7 @@ class SDNCAdapterUtils { <sdncadapterworkflow:SDNCTimeOutValueInMinutes>${MsoUtils.xmlEscape(timeoutValueInMinutes)}</sdncadapterworkflow:SDNCTimeOutValueInMinutes> </sdncadapterworkflow:SDNCAdapterWorkflowRequest> """ - sdncAdapterL3ToHLRequest = utils.removeXmlPreamble(utils.formatXML(sdncAdapterL3ToHLRequest)) + sdncAdapterL3ToHLRequest = msoUtils.removeXmlPreamble(msoUtils.formatXml(sdncAdapterL3ToHLRequest)) return sdncAdapterL3ToHLRequest } @@ -243,13 +238,12 @@ class SDNCAdapterUtils { private void SDNCAdapterActivateRequest(DelegateExecution execution, String resultVar, String svcAction, String svcOperation, String additionalData) { - def utils=new MsoUtils() def prefix = execution.getVariable('prefix') - def request = taskProcessor.getVariable(execution, prefix+'Request') - def requestInformation = utils.getNodeXml(request, 'request-information', false) - def serviceInformation = utils.getNodeXml(request, 'service-information', false) - def serviceParameters = utils.getNodeXml(request, 'service-parameters', false) + def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request') + def requestInformation = msoUtils.getNodeXml(request, 'request-information', false) + def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false) + def serviceParameters = msoUtils.getNodeXml(request, 'service-parameters', false) def requestId = execution.getVariable('testReqId') // for junits if(requestId==null){ @@ -269,18 +263,18 @@ class SDNCAdapterUtils { workflowException(execution, 'Internal Error', 9999) // TODO: what message and error code? } - def l2HomingInformation = utils.getNodeXml(serviceParameters, 'l2-homing-information', false) - def internetEvcAccessInformation = utils.getNodeXml(serviceParameters, 'internet-evc-access-information', false) - def vrLan = utils.getNodeXml(serviceParameters, 'vr-lan', false) - def upceVmsServiceInformation = utils.getNodeXml(serviceParameters, 'ucpe-vms-service-information', false) + def l2HomingInformation = msoUtils.getNodeXml(serviceParameters, 'l2-homing-information', false) + def internetEvcAccessInformation = msoUtils.getNodeXml(serviceParameters, 'internet-evc-access-information', false) + def vrLan = msoUtils.getNodeXml(serviceParameters, 'vr-lan', false) + def upceVmsServiceInformation = msoUtils.getNodeXml(serviceParameters, 'ucpe-vms-service-information', false) - def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation) - def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation) - def nnsl2HomingInformation = utils.removeXmlNamespaces(l2HomingInformation) - def nnsInternetEvcAccessInformation = utils.removeXmlNamespaces(internetEvcAccessInformation) - def nnsVrLan = utils.removeXmlNamespaces(vrLan) - def nnsUpceVmsServiceInformation = utils.removeXmlNamespaces(upceVmsServiceInformation) + def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation) + def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation) + def nnsl2HomingInformation = msoUtils.removeXmlNamespaces(l2HomingInformation) + def nnsInternetEvcAccessInformation = msoUtils.removeXmlNamespaces(internetEvcAccessInformation) + def nnsVrLan = msoUtils.removeXmlNamespaces(vrLan) + def nnsUpceVmsServiceInformation = msoUtils.removeXmlNamespaces(upceVmsServiceInformation) if (additionalData == null) { additionalData = "" @@ -319,7 +313,7 @@ class SDNCAdapterUtils { </sdncadapterworkflow:SDNCAdapterWorkflowRequest> """ - content = utils.removeXmlPreamble(utils.formatXML(content)) + content = msoUtils.removeXmlPreamble(msoUtils.formatXml(content)) execution.setVariable(resultVar, content) } @@ -343,7 +337,7 @@ class SDNCAdapterUtils { * @param isAic3 boolean to indicate whether request is for AIC3.0 */ public void sdncReservePrep(DelegateExecution execution, String action, String resultVar, boolean isAic3) { - sdncPrep(execution, resultVar, action , 'service-configuration-operation', null, isAic3, this.taskProcessor) + sdncPrep(execution, resultVar, action , 'service-configuration-operation', null, isAic3) } /** @@ -356,8 +350,8 @@ class SDNCAdapterUtils { * RequestData element (may be null) */ public void sdncPrep(DelegateExecution execution, String resultVar, String svcAction, - String svcOperation, String additionalData, AbstractServiceTaskProcessor taskProcessor) { - sdncPrep(execution, resultVar, svcAction, svcOperation, additionalData, false, taskProcessor) + String svcOperation, String additionalData) { + sdncPrep(execution, resultVar, svcAction, svcOperation, additionalData, false) } /** @@ -370,7 +364,7 @@ class SDNCAdapterUtils { * @param isAic3 boolean to indicate whether request is for AIC3.0 */ public void sdncPrep(DelegateExecution execution, String resultVar, String svcAction, - String svcOperation, String additionalData, boolean isAic3, AbstractServiceTaskProcessor taskProcessor) { + String svcOperation, String additionalData, boolean isAic3) { def method = getClass().getSimpleName() + '.sdncPrep(' + 'execution=' + execution.getId() + ', resultVar=' + resultVar + @@ -380,14 +374,14 @@ class SDNCAdapterUtils { ')' logger.trace('Entered ' + method) - MsoUtils utils = taskProcessor.utils + try { def prefix = execution.getVariable('prefix') - def request = taskProcessor.getVariable(execution, prefix+'Request') - def requestInformation = utils.getNodeXml(request, 'request-information', false) - def serviceInformation = utils.getNodeXml(request, 'service-information', false) - def serviceParameters = utils.getChildNodes(request, 'service-parameters') - def requestAction = utils.getNodeText(request, 'request-action') + def request = AbstractServiceTaskProcessor.getVariable(execution, prefix+'Request') + def requestInformation = msoUtils.getNodeXml(request, 'request-information', false) + def serviceInformation = msoUtils.getNodeXml(request, 'service-information', false) + def serviceParameters = msoUtils.getChildNodes(request, 'service-parameters') + def requestAction = msoUtils.getNodeText(request, 'request-action') def timeoutInMinutes = UrnPropertiesReader.getVariable('mso.sdnc.timeout.firewall.minutes',execution) @@ -407,23 +401,23 @@ class SDNCAdapterUtils { exceptionUtil.buildAndThrowWorkflowException(execution, 500, "Internal Error - During PreProcess Request") } - def l2HomingInformation = utils.getNodeXml(request, 'l2-homing-information', false) - def internetEvcAccessInformation = utils.getNodeXml(request, 'internet-evc-access-information', false) - def vrLan = utils.getNodeXml(request, 'vr-lan', false) - def upceVmsServiceInfo = utils.getNodeXml(request, 'ucpe-vms-service-information', false) - def vnfInformationList = utils.getNodeXml(request, 'vnf-information-list', false) - - def nnsRequestInformation = utils.removeXmlNamespaces(requestInformation) - def nnsServiceInformation = utils.removeXmlNamespaces(serviceInformation) - def nnsl2HomingInformation = utils.removeXmlNamespaces(l2HomingInformation) - def nnsInternetEvcAccessInformation = utils.removeXmlNamespaces(internetEvcAccessInformation) - def nnsVrLan = utils.removeXmlNamespaces(vrLan) - def nnsUpceVmsServiceInfo = utils.removeXmlNamespaces(upceVmsServiceInfo) - def nnsVnfInformationList = utils.removeXmlNamespaces(vrLan) + def l2HomingInformation = msoUtils.getNodeXml(request, 'l2-homing-information', false) + def internetEvcAccessInformation = msoUtils.getNodeXml(request, 'internet-evc-access-information', false) + def vrLan = msoUtils.getNodeXml(request, 'vr-lan', false) + def upceVmsServiceInfo = msoUtils.getNodeXml(request, 'ucpe-vms-service-information', false) + def vnfInformationList = msoUtils.getNodeXml(request, 'vnf-information-list', false) + + def nnsRequestInformation = msoUtils.removeXmlNamespaces(requestInformation) + def nnsServiceInformation = msoUtils.removeXmlNamespaces(serviceInformation) + def nnsl2HomingInformation = msoUtils.removeXmlNamespaces(l2HomingInformation) + def nnsInternetEvcAccessInformation = msoUtils.removeXmlNamespaces(internetEvcAccessInformation) + def nnsVrLan = msoUtils.removeXmlNamespaces(vrLan) + def nnsUpceVmsServiceInfo = msoUtils.removeXmlNamespaces(upceVmsServiceInfo) + def nnsVnfInformationList = msoUtils.removeXmlNamespaces(vrLan) def nnsinternetSvcChangeDetails = "" if(requestAction!=null && requestAction.equals("ChangeLayer3ServiceProvRequest")){ - def internetSvcChangeDetails = utils.removeXmlNamespaces(serviceParameters) + def internetSvcChangeDetails = msoUtils.removeXmlNamespaces(serviceParameters) nnsinternetSvcChangeDetails = """<internet-service-change-details> ${internetSvcChangeDetails} </internet-service-change-details>""" @@ -466,7 +460,7 @@ class SDNCAdapterUtils { </sdncadapterworkflow:SDNCAdapterWorkflowRequest> """ - content = utils.removeXmlPreamble(utils.formatXML(content)) + content = msoUtils.removeXmlPreamble(msoUtils.formatXml(content)) execution.setVariable(resultVar, content) logger.debug(resultVar + ' = ' + System.lineSeparator() + content) @@ -506,7 +500,6 @@ class SDNCAdapterUtils { * RequestData element (may be null) */ public String sdncTopologyRequestV2 (DelegateExecution execution, String requestXML, String serviceInstanceId, String callbackUrl, String action, String requestAction, String cloudRegionId, networkId, L3Network queryAAIResponse, String additionalData) { - def utils=new MsoUtils() // SNDC is expecting request Id for header as unique each call. String hdrRequestId = "" @@ -521,17 +514,17 @@ class SDNCAdapterUtils { try { requestId = execution.getVariable("mso-request-id") } catch (Exception ex) { - requestId = utils.getNodeText(requestXML, "request-id") + requestId = msoUtils.getNodeText(requestXML, "request-id") } String aicCloudRegion = cloudRegionId String tenantId = "" - if (utils.nodeExists(requestXML, "tenant-id")) { - tenantId = utils.getNodeText(requestXML, "tenant-id") + if (msoUtils.nodeExists(requestXML, "tenant-id")) { + tenantId = msoUtils.getNodeText(requestXML, "tenant-id") } String networkType = "" - if (utils.nodeExists(requestXML, "network-type")) { - networkType = utils.getNodeText(requestXML, "network-type") + if (msoUtils.nodeExists(requestXML, "network-type")) { + networkType = msoUtils.getNodeText(requestXML, "network-type") } // Replace/Use the value of network-type from aai query (vs input) during Delete Network flows. @@ -540,20 +533,20 @@ class SDNCAdapterUtils { } String serviceId = "" - if (utils.nodeExists(requestXML, "service-id")) { - serviceId = utils.getNodeText(requestXML, "service-id") + if (msoUtils.nodeExists(requestXML, "service-id")) { + serviceId = msoUtils.getNodeText(requestXML, "service-id") } String networkName = "" // Replace/Use the value of network-name from aai query (vs input) if it was already set in AAI if (queryAAIResponse != null) { networkName = queryAAIResponse.getNetworkName() } - if (networkName.isEmpty() && utils.nodeExists(requestXML, "network-name")) { - networkName = utils.getNodeText(requestXML, "network-name") + if (networkName.isEmpty() && msoUtils.nodeExists(requestXML, "network-name")) { + networkName = msoUtils.getNodeText(requestXML, "network-name") } String source = "" - if (utils.nodeExists(requestXML, "source")) { - source = utils.getNodeText(requestXML, "source") + if (msoUtils.nodeExists(requestXML, "source")) { + source = msoUtils.getNodeText(requestXML, "source") } // get resourceLink from subflow execution variable @@ -631,7 +624,6 @@ class SDNCAdapterUtils { * RequestData element (may be null) */ public String sdncTopologyRequestRsrc (DelegateExecution execution, String requestXML, String serviceInstanceId, String callbackUrl, String action, String requestAction, String cloudRegionId, networkId, String additionalData) { - def utils=new MsoUtils() // SNDC is expecting request Id for header as unique each call. String hdrRequestId = "" @@ -655,35 +647,35 @@ class SDNCAdapterUtils { String aicCloudRegion = cloudRegionId String tenantId = "" - if (utils.nodeExists(requestXML, "tenant-id")) { - tenantId = utils.getNodeText(requestXML, "tenant-id") + if (msoUtils.nodeExists(requestXML, "tenant-id")) { + tenantId = msoUtils.getNodeText(requestXML, "tenant-id") } String networkType = "" - if (utils.nodeExists(requestXML, "network-type")) { - networkType = utils.getNodeText(requestXML, "network-type") + if (msoUtils.nodeExists(requestXML, "network-type")) { + networkType = msoUtils.getNodeText(requestXML, "network-type") } String subscriptionServiceType = "" - if (utils.nodeExists(requestXML, "subscription-service-type")) { - subscriptionServiceType = utils.getNodeText(requestXML, "subscription-service-type") + if (msoUtils.nodeExists(requestXML, "subscription-service-type")) { + subscriptionServiceType = msoUtils.getNodeText(requestXML, "subscription-service-type") } String globalCustomerId = "" - if (utils.nodeExists(requestXML, "global-customer-id")) { - globalCustomerId = utils.getNodeText(requestXML, "global-customer-id") + if (msoUtils.nodeExists(requestXML, "global-customer-id")) { + globalCustomerId = msoUtils.getNodeText(requestXML, "global-customer-id") } String serviceId = "" - if (utils.nodeExists(requestXML, "service-id")) { - serviceId = utils.getNodeText(requestXML, "service-id") + if (msoUtils.nodeExists(requestXML, "service-id")) { + serviceId = msoUtils.getNodeText(requestXML, "service-id") } String networkName = "" - if (utils.nodeExists(requestXML, "network-name")) { - networkName = utils.getNodeText(requestXML, "network-name") + if (msoUtils.nodeExists(requestXML, "network-name")) { + networkName = msoUtils.getNodeText(requestXML, "network-name") } String source = "" - if (utils.nodeExists(requestXML, "source")) { - source = utils.getNodeText(requestXML, "source") + if (msoUtils.nodeExists(requestXML, "source")) { + source = msoUtils.getNodeText(requestXML, "source") } // get resourceLink from subflow execution variable @@ -704,28 +696,28 @@ class SDNCAdapterUtils { } // network-information from 'networkModelInfo' // verify the DB Catalog response - String networkModelInfo = utils.getNodeXml(requestXML, "networkModelInfo", false).replace("tag0:","").replace(":tag0","") - String modelInvariantUuid = utils.getNodeText(networkModelInfo, "modelInvariantUuid") !=null ? - utils.getNodeText(networkModelInfo, "modelInvariantUuid") : "" - String modelCustomizationUuid = utils.getNodeText(networkModelInfo, "modelCustomizationUuid") !=null ? - utils.getNodeText(networkModelInfo, "modelCustomizationUuid") : "" - String modelUuid = utils.getNodeText(networkModelInfo, "modelUuid") !=null ? - utils.getNodeText(networkModelInfo, "modelUuid") : "" - String modelVersion = utils.getNodeText(networkModelInfo, "modelVersion") !=null ? - utils.getNodeText(networkModelInfo, "modelVersion") : "" - String modelName = utils.getNodeText(networkModelInfo, "modelName") !=null ? - utils.getNodeText(networkModelInfo, "modelName") : "" + String networkModelInfo = msoUtils.getNodeXml(requestXML, "networkModelInfo", false).replace("tag0:","").replace(":tag0","") + String modelInvariantUuid = msoUtils.getNodeText(networkModelInfo, "modelInvariantUuid") !=null ? + msoUtils.getNodeText(networkModelInfo, "modelInvariantUuid") : "" + String modelCustomizationUuid = msoUtils.getNodeText(networkModelInfo, "modelCustomizationUuid") !=null ? + msoUtils.getNodeText(networkModelInfo, "modelCustomizationUuid") : "" + String modelUuid = msoUtils.getNodeText(networkModelInfo, "modelUuid") !=null ? + msoUtils.getNodeText(networkModelInfo, "modelUuid") : "" + String modelVersion = msoUtils.getNodeText(networkModelInfo, "modelVersion") !=null ? + msoUtils.getNodeText(networkModelInfo, "modelVersion") : "" + String modelName = msoUtils.getNodeText(networkModelInfo, "modelName") !=null ? + msoUtils.getNodeText(networkModelInfo, "modelName") : "" // service-information from 'networkModelInfo' // verify the DB Catalog response - String serviceModelInfo = utils.getNodeXml(requestXML, "serviceModelInfo", false).replace("tag0:","").replace(":tag0","") - String serviceModelInvariantUuid = utils.getNodeText(serviceModelInfo, "modelInvariantUuid") !=null ? - utils.getNodeText(serviceModelInfo, "modelInvariantUuid") : "" - String serviceModelUuid = utils.getNodeText(serviceModelInfo, "modelUuid") !=null ? - utils.getNodeText(serviceModelInfo, "modelUuid") : "" - String serviceModelVersion = utils.getNodeText(serviceModelInfo, "modelVersion") !=null ? - utils.getNodeText(serviceModelInfo, "modelVersion") : "" - String serviceModelName = utils.getNodeText(serviceModelInfo, "modelName") !=null ? - utils.getNodeText(serviceModelInfo, "modelName") : "" + String serviceModelInfo = msoUtils.getNodeXml(requestXML, "serviceModelInfo", false).replace("tag0:","").replace(":tag0","") + String serviceModelInvariantUuid = msoUtils.getNodeText(serviceModelInfo, "modelInvariantUuid") !=null ? + msoUtils.getNodeText(serviceModelInfo, "modelInvariantUuid") : "" + String serviceModelUuid = msoUtils.getNodeText(serviceModelInfo, "modelUuid") !=null ? + msoUtils.getNodeText(serviceModelInfo, "modelUuid") : "" + String serviceModelVersion = msoUtils.getNodeText(serviceModelInfo, "modelVersion") !=null ? + msoUtils.getNodeText(serviceModelInfo, "modelVersion") : "" + String serviceModelName = msoUtils.getNodeText(serviceModelInfo, "modelName") !=null ? + msoUtils.getNodeText(serviceModelInfo, "modelName") : "" String content = @@ -808,27 +800,27 @@ class SDNCAdapterUtils { }else{ // we need to peer into the request data for error - def String sdncAdapterWorkflowResponse = taskProcessor.utils.getNodeXml(response, 'response-data', false) + def String sdncAdapterWorkflowResponse = msoUtils.getNodeXml(response, 'response-data', false) def String decodedXml = sdncAdapterWorkflowResponse.replace('<?xml version="1.0" encoding="UTF-8"?>', "") - decodedXml = taskProcessor.utils.getNodeXml(response, 'RequestData') + decodedXml = msoUtils.getNodeXml(response, 'RequestData') logger.debug("decodedXml:\n" + decodedXml) int requestDataResponseCode = 200 def String requestDataResponseMessage = '' try{ - if (taskProcessor.utils.nodeExists(decodedXml, "response-message")) { - requestDataResponseMessage = taskProcessor.utils.getNodeText(decodedXml, "response-message") - } else if (taskProcessor.utils.nodeExists(sdncAdapterWorkflowResponse, "ResponseMessage")) { - requestDataResponseMessage = taskProcessor.utils.getNodeText(sdncAdapterWorkflowResponse, "ResponseMessage") + if (msoUtils.nodeExists(decodedXml, "response-message")) { + requestDataResponseMessage = msoUtils.getNodeText(decodedXml, "response-message") + } else if (msoUtils.nodeExists(sdncAdapterWorkflowResponse, "ResponseMessage")) { + requestDataResponseMessage = msoUtils.getNodeText(sdncAdapterWorkflowResponse, "ResponseMessage") } }catch(Exception e){ logger.debug('Error caught while decoding resposne ' + e.getMessage()) } - if(taskProcessor.utils.nodeExists(decodedXml, "response-code")) { + if(msoUtils.nodeExists(decodedXml, "response-code")) { logger.debug("response-code node Exist ") - String code = taskProcessor.utils.getNodeText(decodedXml, "response-code") + String code = msoUtils.getNodeText(decodedXml, "response-code") if(code.isEmpty() || code.equals("")){ // if response-code is blank then Success logger.debug("response-code node is empty") @@ -837,9 +829,9 @@ class SDNCAdapterUtils { requestDataResponseCode = code.toInteger() logger.debug("response-code is: " + requestDataResponseCode) } - }else if(taskProcessor.utils.nodeExists(sdncAdapterWorkflowResponse, "ResponseCode")){ + }else if(msoUtils.nodeExists(sdncAdapterWorkflowResponse, "ResponseCode")){ logger.debug("ResponseCode node Exist ") - String code = taskProcessor.utils.getNodeText(sdncAdapterWorkflowResponse, "ResponseCode") + String code = msoUtils.getNodeText(sdncAdapterWorkflowResponse, "ResponseCode") if(code.isEmpty() || code.equals("")){ // if ResponseCode blank then Success logger.debug("ResponseCode node is empty") @@ -918,7 +910,7 @@ class SDNCAdapterUtils { if (success) { // we need to look inside the request data for error - def String callbackRequestData = taskProcessor.utils.getNodeXml(response, 'RequestData', false) + def String callbackRequestData = msoUtils.getNodeXml(response, 'RequestData', false) def String decodedXml = callbackRequestData logger.debug("decodedXml:\n" + decodedXml) @@ -926,17 +918,17 @@ class SDNCAdapterUtils { def requestDataResponseMessage = '' int intDataResponseCode = 200 - if (taskProcessor.utils.nodeExists(decodedXml, "response-code")) { + if (msoUtils.nodeExists(decodedXml, "response-code")) { - requestDataResponseCode = ((String) taskProcessor.utils.getNodeText(decodedXml, "response-code")) - if (taskProcessor.utils.nodeExists(decodedXml, "response-message")) { - requestDataResponseMessage = taskProcessor.utils.getNodeText(decodedXml, "response-message") + requestDataResponseCode = ((String) msoUtils.getNodeText(decodedXml, "response-code")) + if (msoUtils.nodeExists(decodedXml, "response-message")) { + requestDataResponseMessage = msoUtils.getNodeText(decodedXml, "response-message") } - }else if(taskProcessor.utils.nodeExists(decodedXml, "ResponseCode")){ - requestDataResponseCode = ((String) taskProcessor.utils.getNodeText(decodedXml, "ResponseCode")).toInteger() - }else if(taskProcessor.utils.nodeExists(response, "ResponseCode")){ - requestDataResponseCode = ((String) taskProcessor.utils.getNodeText(response, "ResponseCode")).toInteger() - requestDataResponseMessage = taskProcessor.utils.getNodeText(response, "ResponseMessage") + }else if(msoUtils.nodeExists(decodedXml, "ResponseCode")){ + requestDataResponseCode = ((String) msoUtils.getNodeText(decodedXml, "ResponseCode")).toInteger() + }else if(msoUtils.nodeExists(response, "ResponseCode")){ + requestDataResponseCode = ((String) msoUtils.getNodeText(response, "ResponseCode")).toInteger() + requestDataResponseMessage = msoUtils.getNodeText(response, "ResponseMessage") } logger.debug("SDNC callback response-code: " + requestDataResponseCode) @@ -944,8 +936,8 @@ class SDNCAdapterUtils { // Get the AAI Status to determine if rollback is needed on ASSIGN def aai_status = '' - if (taskProcessor.utils.nodeExists(decodedXml, "aai-status")) { - aai_status = ((String) taskProcessor.utils.getNodeText(decodedXml, "aai-status")) + if (msoUtils.nodeExists(decodedXml, "aai-status")) { + aai_status = ((String) msoUtils.getNodeText(decodedXml, "aai-status")) logger.debug("SDNC sent AAI STATUS code: " + aai_status) } if (aai_status != null && !aai_status.equals("")) { @@ -955,8 +947,8 @@ class SDNCAdapterUtils { // Get the result string to determine if rollback is needed on ASSIGN in Add Bonding flow only def sdncResult = '' - if (taskProcessor.utils.nodeExists(decodedXml, "result")) { - sdncResult = ((String) taskProcessor.utils.getNodeText(decodedXml, "result")) + if (msoUtils.nodeExists(decodedXml, "result")) { + sdncResult = ((String) msoUtils.getNodeText(decodedXml, "result")) logger.debug("SDNC sent result: " + sdncResult) } if (sdncResult != null && !sdncResult.equals("")) { diff --git a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java index 1c1d6b73fd..39a209efa8 100644 --- a/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java +++ b/bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/common/DelegateExecutionImpl.java @@ -1,22 +1,22 @@ /*- - * ============LICENSE_START======================================================= - * ONAP - SO - * ================================================================================ - * 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 - * +* ============LICENSE_START======================================================= +* ONAP - SO +* ================================================================================ +* 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========================================================= - */ +* 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.onap.so.bpmn.common; @@ -31,92 +31,107 @@ import org.onap.so.bpmn.common.exceptions.RequiredExecutionVariableExeception; import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock; import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; + public class DelegateExecutionImpl implements BuildingBlockExecution, Serializable { - private final Map<String, Serializable> seedMap; - private transient DelegateExecution execution; - private static final String INVALID_INPUT_MISSING = "Expected variable of \"%s\" not found in execution"; - private static final String INVALID_INPUT_CLASS_CAST = "Expected variable of \"%s\" was the wrong object type in the execution"; - - private static final String MISSING_MSG = "Execution variable \"gBBInput\" cannot be null when executing building blocks"; - private static final String MALFORMED_MSG = "Execution variable \"gBBInput\" must contain an element of type GeneralBuildingBlock"; - - public DelegateExecutionImpl(Map<String, Serializable> seedMap) { - this.seedMap = seedMap; - } - - public DelegateExecutionImpl(DelegateExecution execution) { - this.seedMap = new HashMap<>(); - execution.getVariables().forEach((key, value) -> { - if (value instanceof Serializable) { - seedMap.put(key, (Serializable)value); - } - }); - /* must occur for junit tests to work */ - this.execution = execution; - } - @Override - public GeneralBuildingBlock getGeneralBuildingBlock() { - try { - GeneralBuildingBlock generalBuildingBlock = (GeneralBuildingBlock) execution.getVariable("gBBInput"); - - if (generalBuildingBlock == null) { - throw new MissingBuildingBlockInputException(MISSING_MSG); - } - - return generalBuildingBlock; - } catch (ClassCastException e) { - throw new MalformedBuildingBlockInputException(MALFORMED_MSG, e); - } - } - - @Override - public <T> T getVariable(String key) { - return this.get(key); - } - - @Override - public <T> T getRequiredVariable(String key) throws RequiredExecutionVariableExeception { - final T result; - - result = this.get(key); - if (result == null) { - throw new RequiredExecutionVariableExeception(String.format(INVALID_INPUT_MISSING, key)); - - } - return result; - } - - @Override - public void setVariable(String key, Serializable value) { - this.execution.setVariable(key, value); - } - - @Override - public Map<ResourceKey, String> getLookupMap() { - return this.get("lookupKeyMap"); - } - - @Override - public String getFlowToBeCalled() { - return this.get("flowToBeCalled"); - } - public DelegateExecution getDelegateExecution() { - return this.execution; - } - - public void setDelegateExecution(DelegateExecution execution) { - this.execution = execution; - this.seedMap.forEach((key, value) -> { - if (!execution.hasVariable(key)) { - execution.setVariable(key, value); - } - }); - } - - protected <T> T get(String key) { - final Object value = this.execution.getVariable(key); - - return (T)value; - } + private static final long serialVersionUID = 5559067662634919395L; + + @JsonProperty + private final Map<String, Serializable> seedMap; + + private transient DelegateExecution execution; + private static final String INVALID_INPUT_MISSING = "Expected variable of \"%s\" not found in execution"; + + private static final String MISSING_MSG = + "Execution variable \"gBBInput\" cannot be null when executing building blocks"; + private static final String MALFORMED_MSG = + "Execution variable \"gBBInput\" must contain an element of type GeneralBuildingBlock"; + + public DelegateExecutionImpl(final Map<String, Serializable> seedMap) { + this.seedMap = seedMap; + } + + public DelegateExecutionImpl(final DelegateExecution execution) { + this.seedMap = new HashMap<>(); + execution.getVariables().forEach((key, value) -> { + if (value instanceof Serializable) { + seedMap.put(key, (Serializable) value); + } + }); + /* must occur for junit tests to work */ + this.execution = execution; + } + + @JsonIgnore + @Override + public GeneralBuildingBlock getGeneralBuildingBlock() { + try { + final GeneralBuildingBlock generalBuildingBlock = (GeneralBuildingBlock) execution.getVariable("gBBInput"); + + if (generalBuildingBlock == null) { + throw new MissingBuildingBlockInputException(MISSING_MSG); + } + + return generalBuildingBlock; + } catch (final ClassCastException e) { + throw new MalformedBuildingBlockInputException(MALFORMED_MSG, e); + } + } + + @Override + public <T> T getVariable(final String key) { + return this.get(key); + } + + @Override + public <T> T getRequiredVariable(final String key) throws RequiredExecutionVariableExeception { + final T result; + + result = this.get(key); + if (result == null) { + throw new RequiredExecutionVariableExeception(String.format(INVALID_INPUT_MISSING, key)); + + } + return result; + } + + @Override + public void setVariable(final String key, final Serializable value) { + this.execution.setVariable(key, value); + } + + @JsonIgnore + @Override + public Map<ResourceKey, String> getLookupMap() { + return this.get("lookupKeyMap"); + } + + @JsonIgnore + @Override + public String getFlowToBeCalled() { + return this.get("flowToBeCalled"); + } + + @JsonIgnore + public DelegateExecution getDelegateExecution() { + return this.execution; + } + + public void setDelegateExecution(final DelegateExecution execution) { + this.execution = execution; + this.seedMap.forEach((key, value) -> { + if (!execution.hasVariable(key)) { + execution.setVariable(key, value); + } + }); + } + + @SuppressWarnings("unchecked") + protected <T> T get(final String key) { + final Object value = this.execution.getVariable(key); + return (T) value; + } + } diff --git a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtilsTest.groovy b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtilsTest.groovy index 51dd77d383..570acf4524 100644 --- a/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtilsTest.groovy +++ b/bpmn/MSOCommonBPMN/src/test/groovy/org/onap/so/bpmn/common/scripts/SDNCAdapterUtilsTest.groovy @@ -53,12 +53,7 @@ public class SDNCAdapterUtilsTest { map = new HashMap<String,Object>() svcex = mock(ExecutionEntity.class) wfex = null - tp = new AbstractServiceTaskProcessor() { - @Override - public void preProcessRequest(DelegateExecution execution) { - } - }; - utils = new SDNCAdapterUtils(tp) + utils = new SDNCAdapterUtils() // svcex gets its variables from "map" when(svcex.getVariable(any())).thenAnswer( diff --git a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/DelegateExecutionImplTest.java b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/DelegateExecutionImplTest.java index 32a18d5a7a..a30aadc1f8 100644 --- a/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/DelegateExecutionImplTest.java +++ b/bpmn/MSOCommonBPMN/src/test/java/org/onap/so/bpmn/common/DelegateExecutionImplTest.java @@ -20,19 +20,15 @@ package org.onap.so.bpmn.common; -import static org.hamcrest.CoreMatchers.hasItems; -import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.mockito.ArgumentMatchers.contains; +import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; import java.io.Serializable; -import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -46,101 +42,115 @@ import org.onap.so.bpmn.common.exceptions.MissingBuildingBlockInputException; import org.onap.so.bpmn.common.exceptions.RequiredExecutionVariableExeception; import org.onap.so.bpmn.servicedecomposition.entities.GeneralBuildingBlock; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + public class DelegateExecutionImplTest { - @Rule - public ExpectedException thrown= ExpectedException.none(); - - - @Test - public void getVariable() throws RequiredExecutionVariableExeception { - Map<String, Serializable> map = new HashMap<>(); - map.put("var1", "value1"); - map.put("var2", "value2"); - map.put("list1", (Serializable)Arrays.asList("value1", "value2")); - DelegateExecutionImpl impl = create(map); - - assertEquals("value1", impl.getVariable("var1")); - assertEquals("value2", impl.getRequiredVariable("var2")); - assertThat(impl.getVariable("list1"), IsIterableContainingInOrder.contains("value1", "value2")); - - } - - - @Test - public void getRequiredVariableNotFound() throws RequiredExecutionVariableExeception { - DelegateExecutionImpl impl = create(); - - thrown.expect(RequiredExecutionVariableExeception.class); - impl.getRequiredVariable("var1"); - } - - - @Test - public void setVariable() { - DelegateExecutionImpl impl = create(); - impl.setVariable("var1", "value1"); - - assertEquals("value1", impl.get("var1")); - } - - @Test - public void getGeneralBuildingBlock() { - GeneralBuildingBlock gBB = mock(GeneralBuildingBlock.class); - Map<String, Serializable> map = new HashMap<>(); - map.put("gBBInput", gBB); - DelegateExecutionImpl impl = create(map); - - assertEquals(gBB, impl.getGeneralBuildingBlock()); - } - - @Test - public void getGeneralBuildingBlockNotFound() { - - DelegateExecutionImpl impl = create(); - - thrown.expect(MissingBuildingBlockInputException.class); - impl.getGeneralBuildingBlock(); - } - - @Test - public void getGeneralBuildingBlockCastException() { - Map<String, Serializable> map = new HashMap<>(); - map.put("gBBInput", new DelegateExecutionFake()); - DelegateExecutionImpl impl = create(map); - - thrown.expect(MalformedBuildingBlockInputException.class); - impl.getGeneralBuildingBlock(); - } - - @Test - public void getDelegateExecution() { - DelegateExecutionImpl impl = create(); - - assertNotNull(impl.getDelegateExecution()); - } - - @Test - public void getLookupMap() { - Map<String, Serializable> lookup = new HashMap<>(); - Map<String, Serializable> map = new HashMap<>(); - map.put("lookupKeyMap", (Serializable) lookup); - DelegateExecutionImpl impl = create(map); - - assertEquals(lookup, impl.getLookupMap()); - } - - private DelegateExecutionImpl create() { - return create(new HashMap<String, Serializable>()); - } - - private DelegateExecutionImpl create(Map<String, Serializable> map) { - DelegateExecutionFake fake = new DelegateExecutionFake(); - - for (Entry<String, Serializable> entry : map.entrySet()) { - fake.setVariable(entry.getKey(), entry.getValue()); - } - return new DelegateExecutionImpl(fake); - } + @Rule + public ExpectedException thrown = ExpectedException.none(); + + + @Test + public void getVariable() throws RequiredExecutionVariableExeception { + final Map<String, Serializable> map = new HashMap<>(); + map.put("var1", "value1"); + map.put("var2", "value2"); + map.put("list1", (Serializable) Arrays.asList("value1", "value2")); + final DelegateExecutionImpl impl = create(map); + + assertEquals("value1", impl.getVariable("var1")); + assertEquals("value2", impl.getRequiredVariable("var2")); + assertThat(impl.getVariable("list1"), IsIterableContainingInOrder.contains("value1", "value2")); + + } + + + @Test + public void getRequiredVariableNotFound() throws RequiredExecutionVariableExeception { + final DelegateExecutionImpl impl = create(); + + thrown.expect(RequiredExecutionVariableExeception.class); + impl.getRequiredVariable("var1"); + } + + + @Test + public void setVariable() { + final DelegateExecutionImpl impl = create(); + impl.setVariable("var1", "value1"); + + assertEquals("value1", impl.get("var1")); + } + + @Test + public void getGeneralBuildingBlock() { + final GeneralBuildingBlock gBB = mock(GeneralBuildingBlock.class); + final Map<String, Serializable> map = new HashMap<>(); + map.put("gBBInput", gBB); + final DelegateExecutionImpl impl = create(map); + + assertEquals(gBB, impl.getGeneralBuildingBlock()); + } + + @Test + public void getGeneralBuildingBlockNotFound() { + final DelegateExecutionImpl impl = create(); + thrown.expect(MissingBuildingBlockInputException.class); + impl.getGeneralBuildingBlock(); + } + + @Test + public void getGeneralBuildingBlockCastException() { + final Map<String, Serializable> map = new HashMap<>(); + map.put("gBBInput", new DelegateExecutionFake()); + final DelegateExecutionImpl impl = create(map); + + thrown.expect(MalformedBuildingBlockInputException.class); + impl.getGeneralBuildingBlock(); + } + + @Test + public void getDelegateExecution() { + final DelegateExecutionImpl impl = create(); + + assertNotNull(impl.getDelegateExecution()); + } + + @Test + public void getLookupMap() { + final Map<String, Serializable> lookup = new HashMap<>(); + final Map<String, Serializable> map = new HashMap<>(); + map.put("lookupKeyMap", (Serializable) lookup); + final DelegateExecutionImpl impl = create(map); + + assertEquals(lookup, impl.getLookupMap()); + } + + @Test + public void testDelegateExecutionImpl_serializeDelegateExecutionImplObject_shouldNotThrowAnyExceptionWhenSerializing() { + final DelegateExecutionImpl objectUnderTest = create(); + + try { + final ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.writeValueAsString(objectUnderTest); + } catch (final JsonProcessingException e) { + fail("Should be possible to serialize DelegateExecutionImpl object"); + } + + } + + private DelegateExecutionImpl create() { + return create(new HashMap<String, Serializable>()); + } + + private DelegateExecutionImpl create(final Map<String, Serializable> map) { + final DelegateExecutionFake fake = new DelegateExecutionFake(); + + for (final Entry<String, Serializable> entry : map.entrySet()) { + fake.setVariable(entry.getKey(), entry.getValue()); + } + return new DelegateExecutionImpl(fake); + } } |