Package org.apache.axis2.interop.whitemesa

Source Code of org.apache.axis2.interop.whitemesa.WhiteMesaIneterop

/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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.
*/

package org.apache.axis2.interop.whitemesa;

import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMText;
import org.apache.axiom.om.OMXMLParserWrapper;
import org.apache.axiom.om.util.StAXUtils;
import org.apache.axiom.om.xpath.AXIOMXPath;
import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
import org.apache.axis2.AxisFault;
import org.custommonkey.xmlunit.XMLTestCase;
import org.jaxen.JaxenException;
import org.jaxen.SimpleNamespaceContext;
import org.jaxen.XPath;

import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamReader;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;

import test.interop.whitemesa.WhiteMesaConstants;

public class WhiteMesaIneterop extends XMLTestCase implements WhiteMesaConstants {

    protected void compareXML(SOAPEnvelope retEnv, String filePath)
            throws AxisFault {

        try {
            if (retEnv != null) {
                SOAPBody body = retEnv.getBody();
                if (!body.hasFault()) {
                    InputStream stream = Thread.currentThread()
                            .getContextClassLoader().getResourceAsStream(
                            filePath);

                    XMLStreamReader parser = StAXUtils
                            .createXMLStreamReader(stream);
                    OMXMLParserWrapper builder = new StAXSOAPModelBuilder(
                            parser, null);
                    SOAPEnvelope refEnv = (SOAPEnvelope)builder
                            .getDocumentElement();
                    String refXML = refEnv.toString();
                    String retXML = retEnv.toString();

                    assertXMLEqual(refXML, retXML);
                }
            }
        } catch (Exception e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the echoString operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoStringResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoStringResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_STRING);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoStringArray operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoStringArrayResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoStringArrayResponse +
                    seperator + ret + seperator + item;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            List itemElems = xpath.selectNodes(payload);
            assertNotNull(itemElems);
            assertEquals(itemElems.size(), 3);

            Iterator iter = itemElems.iterator();
            OMElement itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_STRING_ARR_1);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_STRING_ARR_2);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_STRING_ARR_3);

        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoInteger operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoIntegerResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoIntegerResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_INTEGER);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoIntegerArray operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoIntegerArrayResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoIntegerArrayResponse +
                    seperator + ret + seperator + item;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            List itemElems = xpath.selectNodes(payload);
            assertNotNull(itemElems);
            assertEquals(itemElems.size(), 3);

            Iterator iter = itemElems.iterator();
            OMElement itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_INTEGER_ARR_1);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_INTEGER_ARR_2);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_INTEGER_ARR_3);

        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoFloat operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoFloatResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_FLOAT);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoFloatArray operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoFloatArrayResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatArrayResponse +
                    seperator + ret + seperator + item;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            List itemElems = xpath.selectNodes(payload);
            assertNotNull(itemElems);
            assertEquals(itemElems.size(), 3);

            Iterator iter = itemElems.iterator();
            OMElement itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_FLOAT_ARR_1);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_FLOAT_ARR_2);
            itemElem = (OMElement)iter.next();
            assertNotNull(itemElem);
            assertEquals(itemElem.getText(), WhiteMesaConstants.ECHO_FLOAT_ARR_3);

        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoStruct operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoStructResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoStructResponse +
                    seperator + ret + seperator + varInt;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);
            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_STRUCT_INT);

            xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse + seperator +
                    ret + seperator + varFloat;
            xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);
            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_STRUCT_FLOAT);

            xPathExpr = seperator + seperator + nsPrefix + colon + echoFloatResponse + seperator +
                    ret + seperator + varFloat;
            xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);
            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_STRUCT_STRING);

        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoStructArray operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoStructArrayResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr =
                    seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator +
                            ret + seperator + item + seperator + varString + seperator +
                            textNodeSelector;

            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            List varStringElems = xpath.selectNodes(payload);
            assertEquals(varStringElems.size(), 3);
            OMText varStringElem = (OMText)varStringElems.get(0);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_1);
            varStringElem = (OMText)varStringElems.get(1);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_2);
            varStringElem = (OMText)varStringElems.get(2);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_STR_3);


            xPathExpr =
                    seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator +
                            ret + seperator + item + seperator + varInt + seperator +
                            textNodeSelector;

            xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            varStringElems = xpath.selectNodes(payload);
            assertEquals(varStringElems.size(), 3);
            varStringElem = (OMText)varStringElems.get(0);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_1);
            varStringElem = (OMText)varStringElems.get(1);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_2);
            varStringElem = (OMText)varStringElems.get(2);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_INT_3);

            xPathExpr =
                    seperator + seperator + nsPrefix + colon + echoStructArrayResponse + seperator +
                            ret + seperator + item + seperator + varFloat + seperator +
                            textNodeSelector;

            xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            varStringElems = xpath.selectNodes(payload);
            assertEquals(varStringElems.size(), 3);
            varStringElem = (OMText)varStringElems.get(0);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_1);
            varStringElem = (OMText)varStringElems.get(1);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_2);
            varStringElem = (OMText)varStringElems.get(2);
            assertNotNull(varStringElem);
            assertEquals(varStringElem.getText(), WhiteMesaConstants.ECHO_STRUCT_ARRAY_FLOAT_3);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoVoid operaion according the the default wsdl A subclass should overrid
     * this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoVoidResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement echoVoidResponseElem =
                body.getFirstChildWithName(new QName(nsValue, echoVoidResponse));
        assertNotNull(echoVoidResponseElem);
    }

    /**
     * Validation for the EchoBase64 operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoBase64Result(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoBase64Response +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_BASE_64);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoHexBinary operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoHexBinaryResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoHexBinaryResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            boolean equal = WhiteMesaConstants.ECHO_HEX_BINARY.equalsIgnoreCase(textElem.getText());
            assertTrue(equal);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoDate operaion according the the default wsdl A subclass should overrid
     * this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoDateResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoDateResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_DATE);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoDecimal operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoDecimalResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoDecimalResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_DECIMAL);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    /**
     * Validation for the EchoBoolean operaion according the the default wsdl A subclass should
     * overrid this if if works with a different wsdl.
     *
     * @param resultEnv
     */
    protected void assertR2DefaultEchoBooleanResult(SOAPEnvelope resultEnv) throws AxisFault {
        SOAPBody body = resultEnv.getBody();
        OMElement payload = body.getFirstElement();
        assertNotNull(payload);
        try {
            String xPathExpr = seperator + seperator + nsPrefix + colon + echoBooleanResponse +
                    seperator + ret + seperator + textNodeSelector;
            AXIOMXPath xpath = new AXIOMXPath(xPathExpr);
            addNamespaces(xpath);
            OMText textElem = (OMText)xpath.selectSingleNode(payload);
            assertNotNull(textElem);

            assertEquals(textElem.getText(), WhiteMesaConstants.ECHO_BOOLEAN);
        } catch (JaxenException e) {
            throw AxisFault.makeFault(e);
        }
    }

    protected void assertValueIsInThePayload(SOAPEnvelope envelope, String value) {
        SOAPBody body = envelope.getBody();

        assertTrue(body.toString().indexOf(value) != -1);
    }

    private void addNamespaces(XPath xpath) {
        SimpleNamespaceContext nsCtx = new SimpleNamespaceContext();
        nsCtx.addNamespace(nsPrefix, nsValue);
        xpath.setNamespaceContext(nsCtx);
    }

}
TOP

Related Classes of org.apache.axis2.interop.whitemesa.WhiteMesaIneterop

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.