Package org.servicemix.components.jaxws

Source Code of org.servicemix.components.jaxws.JXAWSComponentTest

package org.servicemix.components.jaxws;

import com.sun.org.apache.xpath.internal.CachedXPathAPI;

import org.servicemix.client.DefaultServiceMixClient;
import org.servicemix.client.ServiceMixClient;
import org.servicemix.jbi.container.ActivationSpec;
import org.servicemix.jbi.container.JBIContainer;
import org.servicemix.jbi.jaxp.SourceTransformer;
import org.servicemix.jbi.resolver.ServiceNameEndpointResolver;
import org.servicemix.jbi.util.DOMUtil;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.traversal.NodeIterator;

import javax.jbi.JBIException;
import javax.xml.namespace.QName;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
import javax.xml.transform.stream.StreamSource;

import java.io.File;
import java.io.InputStream;
import java.net.URL;

import junit.framework.TestCase;

public class JXAWSComponentTest extends TestCase {

    protected JBIContainer container;
   
    protected void setUp() throws Exception {
        container = new JBIContainer();
        container.init();
        container.start();
    }
   
    protected void tearDown() throws Exception {
        container.shutDown();
    }
   
    public void testXBeanJbi() throws Exception {
        URL url = Thread.currentThread().getContextClassLoader().getResource("addNumbers/xbean.xml");
        File path = new File(url.toURI());
        path = path.getParentFile();
        JAXWSComponent component = new JAXWSComponent();
        container.activateComponent(new ActivationSpec("jaxws", component));
        component.getServiceUnitManager().deploy("addNumbers", path.getAbsolutePath());
        component.start("addNumbers");

        SourceTransformer transformer = new SourceTransformer();
        QName serviceName = new QName("http://jaxws.components.servicemix.org/", "AddNumbersImplService");
        String file = "requestWithEnvelope.xml";
        Object answer = requestServiceWithFileRequest(serviceName, file);
        if (answer instanceof Source) {
            answer = transformer.toDOMNode((Source) answer);
        }
        assertTrue("Should return a DOM Node: " + answer, answer instanceof Node);
        Node node = (Node) answer;
        System.out.println(transformer.toString(node));
        String text = textValueOfXPath(node, "//return").trim();
        System.out.println("Result: " + text);
        assertTrue("Result text should not be empty", text.length() > 0);
       
        component.stop("addNumbers");
    }

    protected Object requestServiceWithFileRequest(QName serviceName, String fileOnClassPath) throws JBIException {
        Source content = getSourceFromClassPath(fileOnClassPath);

        ServiceNameEndpointResolver resolver = new ServiceNameEndpointResolver(serviceName);

        ServiceMixClient client = new DefaultServiceMixClient(container);
        Object answer = client.request(resolver, null, null, content);
        return answer;
    }
   
    protected Source getSourceFromClassPath(String fileOnClassPath) {
        InputStream stream = getClass().getResourceAsStream(fileOnClassPath);
        assertNotNull("Could not find file: " + fileOnClassPath + " on the classpath", stream);
        Source content = new StreamSource(stream);
        return content;
    }
   
    protected String textValueOfXPath(Node node, String xpath) throws TransformerException {
        CachedXPathAPI cachedXPathAPI = new CachedXPathAPI();
        NodeIterator iterator = cachedXPathAPI.selectNodeIterator(node, xpath);
        Node root = iterator.nextNode();
        if (root instanceof Element) {
            Element element = (Element) root;
            if (element == null) {
                return "";
            }
            String text = DOMUtil.getElementText(element);
            return text;
        }
        else {
            return root.getNodeValue();
        }
    }
   
   
}
TOP

Related Classes of org.servicemix.components.jaxws.JXAWSComponentTest

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.