package org.apache.servicemix.ejb3.deployer; import java.io.ByteArrayInputStream; import java.io.File; import java.net.URL; import java.net.URLClassLoader; import java.util.ArrayList; import java.util.Dictionary; import java.util.HashMap; import java.util.List; import javax.servlet.Servlet; import javax.servlet.ServletException; import javax.xml.namespace.QName; import javax.xml.transform.Source; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import junit.framework.TestCase; import org.apache.geronimo.transaction.manager.GeronimoTransactionManager; import org.apache.openejb.server.ServerService; import org.apache.servicemix.nmr.api.Channel; import org.apache.servicemix.nmr.api.Exchange; import org.apache.servicemix.nmr.api.Pattern; import org.apache.servicemix.nmr.api.Reference; import org.apache.servicemix.nmr.core.ServiceMix; import org.osgi.service.http.HttpContext; import org.osgi.service.http.HttpService; import org.osgi.service.http.NamespaceException; /** * Created by IntelliJ IDEA. * User: gnodet * Date: Nov 14, 2007 * Time: 12:31:55 PM * To change this template use File | Settings | File Templates. */ public class Test extends TestCase { public void testWebService() throws Exception { System.setProperty("openejb.deployments.classpath", "false"); final List<String> servlets = new ArrayList<String>(); HttpService http = new HttpService() { public void registerServlet(String s, Servlet servlet, Dictionary dictionary, HttpContext httpContext) throws ServletException, NamespaceException { servlets.add(s); } public void registerResources(String s, String s1, HttpContext httpContext) throws NamespaceException { } public void unregister(String s) { } public HttpContext createDefaultHttpContext() { return null; } }; OsgiWsRegistry registry = new OsgiWsRegistry(); registry.setHttpService(http);; OpenEjbFactory factory = new OpenEjbFactory(); factory.setWsRegistry(registry); List<ServerService> services = new ArrayList<ServerService>(); CxfService svc = new CxfService(); services.add(svc); factory.setServerServices(services); factory.init(); URL url = getClass().getResource("Test.class"); File f = new File(url.toURI()); while (!f.getName().equals("test-classes")) { f = f.getParentFile(); } url = f.getAbsoluteFile().toURL(); URLClassLoader cl = new URLClassLoader(new URL[] {url}, Test.class.getClassLoader()); System.out.println(url.toString()); //new Deployer().deploy(cl, null); new Deployer().deploy(cl, url.toString()); assertEquals(1, servlets.size()); } public void testEjb() throws Exception { System.setProperty("openejb.deployments.classpath", "false"); ServiceMix nmr = new ServiceMix(); nmr.init(); OpenEjbFactory factory = new OpenEjbFactory(); List<ServerService> services = new ArrayList<ServerService>(); NmrService svc = new NmrService(); svc.setNmr(nmr); services.add(svc); factory.setServerServices(services); factory.setTransactionManager(new GeronimoTransactionManager()); factory.init(); URL url = getClass().getResource("Test.class"); File f = new File(url.toURI()); while (!f.getName().equals("test-classes")) { f = f.getParentFile(); } url = f.getAbsoluteFile().toURL(); URLClassLoader cl = new URLClassLoader(new URL[] {url}, Test.class.getClassLoader()); System.out.println(url.toString()); //new Deployer().deploy(cl, null); new Deployer().deploy(cl, url.toString()); Channel channel = nmr.createChannel(); Reference ref = nmr.getEndpointRegistry().lookup(new HashMap<String, Object>()); Exchange e = channel.createExchange(Pattern.InOut); e.setTarget(ref); e.setOperation(new QName("http://deployer.ejb3.servicemix.apache.org/", "hello")); e.getIn().setBody(new StreamSource(new ByteArrayInputStream("<jbi:message xmlns:jbi='http://java.sun.com/xml/ns/jbi/wsdl-11-wrapper'><jbi:part><hello xmlns='http://deployer.ejb3.servicemix.apache.org/'><arg0>world</arg0></hello></jbi:part></jbi:message>".getBytes()))); channel.sendSync(e); Source src = (Source) e.getOut().getBody(); TransformerFactory.newInstance().newTransformer().transform(src, new StreamResult(System.err)); assertEquals(1, nmr.getEndpointRegistry().getServices().size()); } }