Example usage for org.apache.commons.collections4 MultiMap values

List of usage examples for org.apache.commons.collections4 MultiMap values

Introduction

In this page you can find the example usage for org.apache.commons.collections4 MultiMap values.

Prototype

Collection<Object> values();

Source Link

Document

Gets a collection containing all the values in the map.

Usage

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?
}