List of usage examples for org.apache.commons.collections4 MultiMap values
Collection<Object> values();
From source file:eu.artist.postmigration.eubt.helpers.SOAPHelper.java
/** * Original response operation => Migrated response operation(s) * //ww w . ja v a 2 s .co m * @param originalOperationModel migrated operation model * @param originalOperationAttributes operation attributes (= attribute name * and value) * @return migrated soap envelops corresponding to the given original * operation */ @Deprecated public static List<SOAPEnvelope> generateMigratedResponseSoapEnvelops( final SourceElement originalOperationModel, final OMElement originalOperation, final WSMigrationTraceHandler wsMigrationTraceHandler) { final Map<TargetElement, OMElement> elementMap = new LinkedHashMap<TargetElement, OMElement>(); final SOAP11Factory factory = new SOAP11Factory(); // SourceElement.parameters -> targetParameters (at source element level) // SourceElement.childElement(s) -> targetElement (from there match their parameters) // For every original parameter, create its corresponding migrated parameter within their migrated operation(s) for (final SourceParameter originalParameter : originalOperationModel.getParameters()) { // in which migrated operation does this parameter exist? final MultiMap<TargetElement, TargetParameter> migratedOperationParameters = wsMigrationTraceHandler .getTargetParameters(originalOperationModel, originalParameter); // for any migrated operation in which the original parameter exist --> create/extend migrated operation and parameter for (final TargetElement migratedOperation : migratedOperationParameters.keySet()) { OMElement operationElement = null; if (!elementMap.containsKey(migratedOperation)) { // new operation encountered --> create new operation final QName operationName = new QName(originalOperation.getNamespace().getNamespaceURI(), originalOperation.getLocalName(), originalOperation.getNamespace().getPrefix()); operationElement = factory.createOMElement(operationName); // create <result> element for result operation OMElement resultElement = factory.createOMElement(new QName("result")); operationElement.addChild(resultElement); } else { // existing operation encountered --> extend operation operationElement = elementMap.get(migratedOperation); } // obtain corresponding migrated parameter by checking the target parameter's source parameter back-link TargetParameter migratedParameter = null; for (final TargetParameter targetParameter : migratedOperation.getParameters()) { MultiMap<SourceElement, SourceParameter> sourceElementParameterMap = wsMigrationTraceHandler .getSourceParameters(migratedOperation, targetParameter); for (Iterator<Object> iterator = sourceElementParameterMap.values().iterator(); iterator .hasNext();) { SourceParameter sourceElementParameter = (SourceParameter) iterator.next(); if (sourceElementParameter.equals(originalParameter)) { migratedParameter = targetParameter; break; } } } // if there is a corresponding migrated attribute in the model --> create attribute if (migratedParameter != null) { // create operation parameter final QName operationElementAttributeName = new QName(migratedParameter.getParameterName()); final OMElement operationElementAttribute = factory .createOMElement(operationElementAttributeName); // obtain attribute value final OMText operationElementAttributeValue; if (originalOperation.getFirstOMChild() instanceof OMText) { // no child attributes available (only <result>) operationElementAttributeValue = factory.createOMText(operationElementAttribute, obtainAttributeValue((OMNode) originalOperation)); } else { // child attributes available final Map<String, String> originalOperationAttributes = SOAPHelper .obtainImmediateChildNodesAndValues(originalOperation); operationElementAttributeValue = factory.createOMText(operationElementAttribute, originalOperationAttributes.get(originalParameter.getParameterName())); } // add attribute value to attribute operationElementAttribute.addChild(operationElementAttributeValue); // add attribute to operation result OMElement resultElement = operationElement.getFirstChildWithName(new QName("result")); resultElement.addChild(operationElementAttribute); // add operation to element map elementMap.put(migratedOperation, operationElement); } } // for each migrated operation } // for each original parameter // Obtain corresponding migrated operation(s) final List<TargetElement> migratedOperations = wsMigrationTraceHandler .getTargetElements(originalOperationModel); final List<SOAPEnvelope> soapEnvelops = new ArrayList<SOAPEnvelope>(); for (final TargetElement migratedOperation : migratedOperations) { // create operation element final OMElement operationElement = elementMap.get(migratedOperation); final SOAPEnvelope soapEnvelope = factory.createSOAPEnvelope(); final SOAPBody soapBody = factory.createSOAPBody(soapEnvelope); soapBody.addChild(operationElement); // populate list of soap envelops soapEnvelops.add(soapEnvelope); } return soapEnvelops; }
From source file:eu.artist.postmigration.eubt.executiontrace.abstractor.SOAPTraceAbstractor.java
private OMElement generateIndependentMigratedResponse(OMElement element) { SOAP11Factory factory = new SOAP11Factory(); if (SOAPHelper.hasElementChildren(element)) { // has more children --> recursively add each child TargetElement targetElement = wsMigrationTraceHandler.getTargetElement( element.getNamespace().getNamespaceURI(), element.getLocalName(), SOAPHelper.obtainImmediateChildNodesAndValues(element)); List<SourceElement> sourceElements = wsMigrationTraceHandler.getSourceElements(targetElement); Iterator<?> elementChildrenIterator = element.getChildElements(); // has more children --> check if element exists a corresponding target element, if so add children, if not skip while (sourceElements.size() > 0 && elementChildrenIterator.hasNext()) { QName elementName = new QName(element.getNamespace().getNamespaceURI(), element.getLocalName(), element.getNamespace().getPrefix()); OMElement independentElement = factory.createOMElement(elementName); OMElement matchingChildElement = (OMElement) elementChildrenIterator.next(); independentElement.addChild(generateIndependentMigratedResponse(matchingChildElement)); return independentElement; }// w ww .j av a2 s .com } else { // no more children (leaf(s) reached) --> add matching parameters OMElement parameterContainer = factory.createOMElement(element.getQName()); Map<String, String> parameterNamesAndValues = SOAPHelper.obtainImmediateChildNodesAndValues(element); TargetElement matchingTargetElement = obtainMatchingTargetElement(element, parameterNamesAndValues); if (matchingTargetElement != null) { for (TargetParameter targetParameter : matchingTargetElement.getParameters()) { // obtain corresponding source parameter(s) MultiMap<SourceElement, SourceParameter> sourceElementParameterMap = wsMigrationTraceHandler .getSourceParameters(matchingTargetElement, targetParameter); for (Object sourceParameterObject : sourceElementParameterMap.values()) { SourceParameter sourceParameter = (SourceParameter) sourceParameterObject; // check if source parameter links to given target parameter (i.e., the source parameter's target parameter list must contain the given target parameter) for (TargetParameter matchingTargetParameter : sourceParameter.getTargetParameter()) { if (matchingTargetParameter.equals(targetParameter)) { // matching target parameter found --> add it String parameterValueString = parameterNamesAndValues .get(targetParameter.getParameterName()); QName parameterName = new QName(targetParameter.getParameterName()); OMElement parameter = factory.createOMElement(parameterName); OMText parameterValue = factory.createOMText(parameter, parameterValueString); parameter.addChild(parameterValue); parameterContainer.addChild(parameter); } // if target parameter matches } // for each matching target parameter } // for each source parameter object } // for each target parameter } else { // the target is a parameter (not an element, e.g. in case of <result>boolean</result>) QName parameterName = new QName(((OMElement) element.getFirstOMChild()).getLocalName()); String parameterValueString = parameterNamesAndValues.get(parameterName.toString()); OMElement parameter = factory.createOMElement(parameterName); OMText parameterValue = factory.createOMText(parameter, parameterValueString); parameter.addChild(parameterValue); parameterContainer.addChild(parameter); } return parameterContainer; } // else return null; // unreachable? }
From source file:eu.artist.postmigration.eubt.executiontrace.abstractor.SOAPTraceAbstractor.java
private OMElement generateIndependentOriginalResponse(OMElement element) throws Exception { SOAP11Factory factory = new SOAP11Factory(); if (SOAPHelper.hasElementChildren(element)) { // has more children --> recursively add each child SourceElement sourceElement = wsMigrationTraceHandler.getSourceElement( element.getNamespace().getNamespaceURI(), element.getLocalName(), SOAPHelper.obtainImmediateChildNodesAndValues(element)); List<TargetElement> targetElements = wsMigrationTraceHandler.getTargetElements(sourceElement); Iterator<?> elementChildrenIterator = element.getChildElements(); // has more children --> check if element exists a corresponding source element, if so add children, if not skip while (targetElements.size() > 0 && elementChildrenIterator.hasNext()) { QName elementName = null; if (element.getParent() instanceof SOAPBody) { // operation level element elementName = new QName(element.getNamespace().getNamespaceURI(), targetElements.get(0).getElementName(), element.getNamespace().getPrefix()); } else { // below operation level element elementName = new QName(element.getNamespace().getNamespaceURI(), element.getLocalName(), element.getNamespace().getPrefix()); }/*from w ww .j a va2 s .c om*/ OMElement independentElement = factory.createOMElement(elementName); OMElement matchingChildElement = (OMElement) elementChildrenIterator.next(); independentElement.addChild(generateIndependentOriginalResponse(matchingChildElement)); return independentElement; } // while there are children of element } else { // no more children (leaf(s) reached) --> add matching parameters OMElement parameterContainer = factory.createOMElement(element.getQName()); Map<String, String> parameterNamesAndValues = SOAPHelper.obtainImmediateChildNodesAndValues(element); SourceElement matchingSourceElement = obtainMatchingSourceElement(element, parameterNamesAndValues); if (matchingSourceElement != null) { for (SourceParameter sourceParameter : matchingSourceElement.getParameters()) { // obtain corresponding target parameter(s) MultiMap<TargetElement, TargetParameter> targetElementParameterMap = wsMigrationTraceHandler .getTargetParameters(matchingSourceElement, sourceParameter); for (Object targetParameterObject : targetElementParameterMap.values()) { TargetParameter targetParameter = (TargetParameter) targetParameterObject; // check if target parameter links to given source parameter (i.e., the source parameter's target parameter list must match with the iterating target parameter) for (TargetParameter matchingTargetParameter : sourceParameter.getTargetParameter()) { if (matchingTargetParameter.equals(targetParameter) && parameterContainer .getChildrenWithLocalName(sourceParameter.getParameterName()) .hasNext() != true) { // matching target parameter that is not yet there found --> add it String parameterValueString = parameterNamesAndValues .get(sourceParameter.getParameterName()); QName parameterName = new QName(targetParameter.getParameterName()); OMElement parameter = factory.createOMElement(parameterName); OMText parameterValue = factory.createOMText(parameter, parameterValueString); parameter.addChild(parameterValue); parameterContainer.addChild(parameter); } } } // for each source parameter object } // for each target parameter } else { // the target is a parameter (not an element, e.g. in case of <result>..</result>) QName parameterName = new QName(((OMElement) element.getFirstOMChild()).getLocalName()); String parameterValueString = parameterNamesAndValues.get(parameterName.toString()); OMElement parameter = factory.createOMElement(parameterName); OMText parameterValue = factory.createOMText(parameter, parameterValueString); parameter.addChild(parameterValue); parameterContainer.addChild(parameter); } return parameterContainer; } // else return null; // unreachable? }