Diff
Added: mule-transport-jersey/pom.xml (0 => 4)
--- mule-transport-jersey/pom.xml (rev 0)
+++ mule-transport-jersey/pom.xml 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,98 @@
+<project>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.mule</groupId>
+ <artifactId>mule-transport-jersey</artifactId>
+ <packaging>jar</packaging>
+ <name>Mule Jersey Transport</name>
+ <version>0.1-SNASPHOT</version>
+ <description>Jersey</description>
+
+ <!-- Common Dependencies -->
+ <dependencies>
+ <dependency>
+ <groupId>org.mule</groupId>
+ <artifactId>mule-core</artifactId>
+ <version>2.0-M2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mule.transports</groupId>
+ <artifactId>mule-transport-http</artifactId>
+ <version>2.0-M2-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.mule.modules</groupId>
+ <artifactId>mule-module-client</artifactId>
+ <version>2.0-M2-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.mule.tests</groupId>
+ <artifactId>mule-tests-functional</artifactId>
+ <version>2.0-M2-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ <version>1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.xml.bind</groupId>
+ <artifactId>jaxb-impl</artifactId>
+ <version>2.1.4</version>
+ </dependency>
+ <dependency>
+ <groupId>jdom</groupId>
+ <artifactId>jdom</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>rome</groupId>
+ <artifactId>rome</artifactId>
+ <version>0.9</version>
+ </dependency>
+ <dependency>
+ <groupId>org.codehaus.jettison</groupId>
+ <artifactId>jettison</artifactId>
+ <version>1.0-RC2</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.ws.rs</groupId>
+ <artifactId>jsr311-api</artifactId>
+ <version>2.0</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/repository/jsr311-api.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>com.sun.ws.rs</groupId>
+ <artifactId>jersey</artifactId>
+ <version>0.2-SNAPSHOT</version>
+ <scope>system</scope>
+ <systemPath>${basedir}/repository/jersey-0.2-SNAPSHOT.jar</systemPath>
+ </dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>3.8.1</version>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+ <repositories>
+ <repository>
+ <id>java.net</id>
+ <name>java.net Repository</name>
+ <url>http://download.java.net/maven/1/</url>
+ <layout>legacy</layout>
+ </repository>
+ </repositories>
+</project>
Added:
mule-transport-jersey/repository/jersey-0.2-SNAPSHOT.jar
(Binary files differ)
Property changes on:
mule-transport-jersey/repository/jersey-0.2-SNAPSHOT.jar
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added: mule-transport-jersey/repository/jsr311-api.jar
(Binary files differ)
Property changes on:
mule-transport-jersey/repository/jsr311-api.jar
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added: mule-transport-jersey/repository/jsr311-api.src.zip
(Binary files differ)
Property changes on:
mule-transport-jersey/repository/jsr311-api.src.zip
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyConnector.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyConnector.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyConnector.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,134 @@
+/*
+ * $Id$
+ * --------------------------------------------------------------------------------------
+ * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
+ *
+ * The software in this package is published under the terms of the MuleSource MPL
+ * license, a copy of which has been included with this distribution in the
+ * LICENSE.txt file.
+ */
+
+package org.mule.providers.jersey;
+
+import org.mule.config.MuleProperties;
+import org.mule.impl.MuleDescriptor;
+import org.mule.impl.endpoint.MuleEndpoint;
+import org.mule.providers.AbstractConnector;
+import org.mule.umo.UMOException;
+import org.mule.umo.endpoint.UMOEndpoint;
+import org.mule.umo.endpoint.UMOEndpointURI;
+import org.mule.umo.lifecycle.InitialisationException;
+import org.mule.umo.provider.UMOMessageReceiver;
+import org.mule.util.object.SingletonObjectFactory;
+
+/**
+ *
+ */
+public class JerseyConnector extends AbstractConnector
+{
+ public JerseyConnector() {
+ super();
+ registerSupportedProtocol("http");
+ registerSupportedProtocol("https");
+ registerSupportedProtocol("jms");
+ registerSupportedProtocol("vm");
+ registerSupportedProtocol("servlet");
+ }
+
+
+ @SuppressWarnings("unchecked")
+ protected void registerReceiverWithMuleService(UMOMessageReceiver receiver, UMOEndpointURI ep)
+ throws UMOException
+ {
+ JerseyMessageReceiver jReceiver = (JerseyMessageReceiver) receiver;
+
+ String name = "foo";
+ MuleDescriptor descriptor = new MuleDescriptor("_jerseyConnector." + name);
+ descriptor.setServiceFactory(new SingletonObjectFactory(jReceiver));
+
+ // No determine if the endpointUri requires a new connector to be
+ // registed in the case of http we only need to register the new
+ // endpointUri if the port is different
+ String endpoint = receiver.getEndpointURI().getAddress();
+ String scheme = ep.getScheme().toLowerCase();
+
+
+ boolean sync = receiver.getEndpoint().isSynchronous();
+
+ // If we are using sockets then we need to set the endpoint name appropiately
+ // and if using http/https
+ // we need to default to POST and set the Content-Type
+ if (scheme.equals("http") || scheme.equals("https") || scheme.equals("ssl")
+ || scheme.equals("tcp") || scheme.equals("servlet"))
+ {
+// receiver.getEndpoint().getProperties().put(HttpConnector.HTTP_METHOD_PROPERTY, "POST");
+// receiver.getEndpoint().getProperties().put(HttpConstants.HEADER_CONTENT_TYPE,
+// "text/xml");
+
+ // Default to using synchronous for socket based protocols unless the
+ // synchronous property has been set explicitly
+ if (!receiver.getEndpoint().isSynchronousSet())
+ {
+ sync = true;
+ }
+ }
+
+ UMOEndpoint serviceEndpoint = new MuleEndpoint(endpoint, true);
+ serviceEndpoint.setSynchronous(sync);
+ serviceEndpoint.setName(ep.getScheme() + ":" + name);
+
+ // Set the transformers on the endpoint too
+ serviceEndpoint.setTransformer(receiver.getEndpoint().getTransformer());
+ receiver.getEndpoint().setTransformer(null);
+
+ serviceEndpoint.setResponseTransformer(receiver.getEndpoint().getResponseTransformer());
+ receiver.getEndpoint().setResponseTransformer(null);
+
+ // set the filter on the axis endpoint on the real receiver endpoint
+ serviceEndpoint.setFilter(receiver.getEndpoint().getFilter());
+ // Remove the Axis filter now
+ receiver.getEndpoint().setFilter(null);
+
+ // set the Security filter on the axis endpoint on the real receiver
+ // endpoint
+ serviceEndpoint.setSecurityFilter(receiver.getEndpoint().getSecurityFilter());
+
+ // Remove the Axis Receiver Security filter now
+ receiver.getEndpoint().setSecurityFilter(null);
+ descriptor.getInboundRouter().addEndpoint(serviceEndpoint);
+
+ //cxfDescriptor.addInterceptor(new MethodFixInterceptor());
+
+ descriptor.setModelName(MuleProperties.OBJECT_SYSTEM_MODEL);
+ managementContext.getRegistry().registerService(descriptor, managementContext);
+ }
+
+ @Override
+ protected void doConnect() throws Exception {
+ }
+
+ @Override
+ protected void doDisconnect() throws Exception {
+ }
+
+ @Override
+ protected void doDispose() {
+ }
+
+ @Override
+ protected void doInitialise() throws InitialisationException {
+ }
+
+ @Override
+ protected void doStart() throws UMOException {
+ }
+
+ @Override
+ protected void doStop() throws UMOException {
+ }
+
+ public String getProtocol() {
+ return "jersey";
+ }
+
+}
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageAdapter.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageAdapter.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageAdapter.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,65 @@
+/*
+ * $Id$
+ * --------------------------------------------------------------------------------------
+ * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
+ *
+ * The software in this package is published under the terms of the MuleSource MPL
+ * license, a copy of which has been included with this distribution in the
+ * LICENSE.txt file.
+ */
+
+package org.mule.providers.jersey;
+
+import java.io.ByteArrayOutputStream;
+
+import org.mule.impl.ThreadSafeAccess;
+import org.mule.providers.AbstractMessageAdapter;
+import org.mule.providers.jersey.server.MuleResponseAdapter;
+import org.mule.umo.MessagingException;
+import org.mule.umo.provider.MessageTypeNotSupportedException;
+
+/**
+ * <code>AbderaMessageAdapter</code> TODO document
+ */
+public class JerseyMessageAdapter extends AbstractMessageAdapter
+{
+
+ /* For general guidelines on writing transports see
+ http://mule.mulesource.org/display/MULE/Writing+Transports */
+
+ /* IMPLEMENTATION NOTE: The MessageAdapter is used to wrap an underlying
+ message. It should store a copy of the underlying message as an
+ instance variable. */
+
+ private MuleResponseAdapter res;
+
+ public JerseyMessageAdapter(MuleResponseAdapter message)
+ {
+ this.res = message;
+ }
+
+ public String getPayloadAsString(String encoding) throws Exception
+ {
+ return new String(getPayloadAsBytes(), encoding);
+ }
+
+ public byte[] getPayloadAsBytes() throws Exception
+ {
+ return ((ByteArrayOutputStream)res.getOutputStream()).toByteArray();
+ }
+
+ public Object getPayload()
+ {
+ try {
+ return getPayloadAsString();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ @Override
+ public ThreadSafeAccess newThreadCopy() {
+ return new JerseyMessageAdapter(res);
+ }
+
+}
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageReceiver.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageReceiver.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/JerseyMessageReceiver.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,107 @@
+/*
+ * $Id$
+ * --------------------------------------------------------------------------------------
+ * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
+ *
+ * The software in this package is published under the terms of the MuleSource MPL
+ * license, a copy of which has been included with this distribution in the
+ * LICENSE.txt file.
+ */
+
+package org.mule.providers.jersey;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import com.sun.ws.rest.api.core.ResourceConfig;
+import com.sun.ws.rest.spi.container.WebApplication;
+import com.sun.ws.rest.spi.container.WebApplicationFactory;
+import org.mule.providers.ConnectException;
+import org.mule.providers.AbstractMessageReceiver;
+import org.mule.providers.jersey.server.MuleRequestAdaptor;
+import org.mule.providers.jersey.server.MuleResponseAdapter;
+import org.mule.umo.UMOComponent;
+import org.mule.umo.UMOEventContext;
+import org.mule.umo.UMOMessage;
+import org.mule.umo.endpoint.UMOEndpoint;
+import org.mule.umo.lifecycle.Callable;
+import org.mule.umo.lifecycle.CreateException;
+import org.mule.umo.lifecycle.InitialisationException;
+import org.mule.umo.provider.UMOConnector;
+
+/**
+ * <code>JerseyMessageReceiver</code> TODO document
+ */
+public class JerseyMessageReceiver extends AbstractMessageReceiver implements Callable {
+
+ private WebApplication application;
+
+ public JerseyMessageReceiver(UMOConnector connector, UMOComponent component,
+ UMOEndpoint endpoint)
+ throws CreateException {
+ super(connector, component, endpoint);
+ }
+
+ public Object onCall(UMOEventContext event) throws Exception {
+ UMOMessage message = event.getMessage();
+
+ MuleRequestAdaptor req = new MuleRequestAdaptor(message, endpoint.getEndpointURI());
+
+ MuleResponseAdapter res = new MuleResponseAdapter(req);
+
+ application.handleRequest(req, res);
+
+ res.commit();
+
+ return res.getMessage();
+ }
+
+ public void doConnect() throws Exception {
+ final Set<Class> resources = new HashSet<Class>();
+
+ try {
+ Class c = component.getDescriptor().getServiceFactory().create().getClass();
+ resources.add(c);
+ } catch (Exception e) {
+ throw new ConnectException(e, this);
+ }
+
+ ResourceConfig resourceConfig = new ResourceConfig() {
+
+ public Set<Class> getResourceClasses() {
+ return resources;
+ }
+
+ public boolean isIgnoreMatrixParams() {
+ return false;
+ }
+
+ public boolean isRedirectToNormalizedURI() {
+ return false;
+ }
+
+ };
+
+ application = WebApplicationFactory.createWebApplication();
+ application.initiate(this, resourceConfig, null);
+
+ ((JerseyConnector) connector).registerReceiverWithMuleService(this, getEndpointURI());
+ }
+
+ public void doDisconnect() throws ConnectException {
+
+ }
+
+ public void doStart() {
+
+ }
+
+ public void doStop() {
+
+ }
+
+ public void doDispose() {
+
+ }
+
+}
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/config/JerseyNamespaceHandler.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/config/JerseyNamespaceHandler.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/config/JerseyNamespaceHandler.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,23 @@
+/*
+ * $Id: XFireNamespaceHandler.java 7167 2007-06-19 19:57:12Z acooke $
+ * --------------------------------------------------------------------------------------
+ * Copyright (c) MuleSource, Inc. All rights reserved. http://www.mulesource.com
+ *
+ * The software in this package is published under the terms of the MuleSource MPL
+ * license, a copy of which has been included with this distribution in the
+ * LICENSE.txt file.
+ */
+
+package org.mule.providers.jersey.config;
+
+import org.mule.config.spring.parsers.generic.OrphanDefinitionParser;
+import org.mule.providers.jersey.JerseyConnector;
+import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
+
+public class JerseyNamespaceHandler extends NamespaceHandlerSupport
+{
+ public void init()
+ {
+ registerBeanDefinitionParser("connector", new OrphanDefinitionParser(JerseyConnector.class, true));
+ }
+}
\ No newline at end of file
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleRequestAdaptor.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleRequestAdaptor.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleRequestAdaptor.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,116 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of the Common Development
+ * and Distribution License("CDDL") (the "License"). You may not use this file
+ * except in compliance with the License.
+ *
+ * You can obtain a copy of the License at:
+ * https://jersey.dev.java.net/license.txt
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * When distributing the Covered Code, include this CDDL Header Notice in each
+ * file and include the License file at:
+ * https://jersey.dev.java.net/license.txt
+ * If applicable, add the following below this CDDL Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ */
+
+package org.mule.providers.jersey.server;
+
+import com.sun.ws.rest.impl.HttpRequestContextImpl;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.ws.rs.core.MultivaluedMap;
+
+import org.mule.config.MuleProperties;
+import org.mule.providers.http.HttpConnector;
+import org.mule.providers.http.HttpConstants;
+import org.mule.umo.UMOMessage;
+import org.mule.umo.endpoint.UMOEndpointURI;
+
+/**
+ * Adapts a HttpServletRequest to provide the methods of HttpRequest
+ */
+public class MuleRequestAdaptor extends HttpRequestContextImpl {
+
+ private UMOMessage message;
+
+ /** Creates a new instance of HttpRequestAdaptor */
+ public MuleRequestAdaptor(UMOMessage message, UMOEndpointURI endpointUri) throws IOException {
+ super((String)message.getProperty(HttpConnector.HTTP_METHOD_PROPERTY),
+ getInputStream(message));
+ this.message = message;
+
+ String path = (String) message.getProperty(HttpConnector.HTTP_REQUEST_PROPERTY);
+ String query = null;
+ int queryIdx = path.indexOf('?');
+ if (queryIdx != -1) {
+ query = path.substring(queryIdx);
+ path = path.substring(0, queryIdx);
+ }
+
+ try {
+ this.uri = new URI(endpointUri.getScheme(), null, endpointUri.getHost(), endpointUri.getPort(), path, query, null);
+ } catch (URISyntaxException e) {
+
+ e.printStackTrace();
+ }
+
+ this.queryString = uri.getQuery();
+ this.uriPath = uri.getPath();
+ if (this.uriPath.startsWith("/")) {
+ this.uriPath = uriPath.substring(1);
+ }
+ this.baseURI = getBaseURI(this.uri, this.uriPath);
+
+ this.queryParameters = extractQueryParameters(this.queryString, true);
+
+ copyHttpHeaders();
+ }
+
+ private static InputStream getInputStream(UMOMessage message) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ protected void copyHttpHeaders() {
+ MultivaluedMap<String, String> headers = getRequestHeaders();
+ for (Iterator names = message.getPropertyNames().iterator(); names.hasNext();) {
+ String name = (String) names.next();
+ List<String> valueList = Collections.singletonList((String)message.getProperty(name));
+
+ headers.put(name, valueList);
+ }
+
+// List<Cookie> cookies = getCookies();
+// javax.servlet.http.Cookie servletCookies[] = request.getCookies();
+// if (servletCookies != null) {
+// for (javax.servlet.http.Cookie c: servletCookies) {
+// NewCookie n = new NewCookie(c.getName(), c.getValue());
+// n.setComment(c.getComment());
+// n.setDomain(c.getDomain());
+// n.setPath(c.getPath());
+// n.setSecure(c.getSecure());
+// n.setVersion(c.getVersion());
+// n.setMaxAge(c.getMaxAge());
+// cookies.add(n);
+// }
+// }
+ }
+
+}
Added:
mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleResponseAdapter.java
(0 => 4)
--- mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleResponseAdapter.java (rev 0)
+++ mule-transport-jersey/src/main/java/org/mule/providers/jersey/server/MuleResponseAdapter.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,90 @@
+/*
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+ *
+ * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * The contents of this file are subject to the terms of the Common Development
+ * and Distribution License("CDDL") (the "License"). You may not use this file
+ * except in compliance with the License.
+ *
+ * You can obtain a copy of the License at:
+ * https://jersey.dev.java.net/license.txt
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * When distributing the Covered Code, include this CDDL Header Notice in each
+ * file and include the License file at:
+ * https://jersey.dev.java.net/license.txt
+ * If applicable, add the following below this CDDL Header, with the fields
+ * enclosed by brackets [] replaced by your own identifying information:
+ * "Portions Copyrighted [year] [name of copyright owner]"
+ */
+
+package org.mule.providers.jersey.server;
+
+import com.sun.ws.rest.impl.HttpResponseContextImpl;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import javax.ws.rs.ext.EntityProvider;
+import javax.ws.rs.ext.ProviderFactory;
+
+import org.mule.impl.MuleMessage;
+import org.mule.providers.http.HttpConnector;
+import org.mule.providers.jersey.JerseyMessageAdapter;
+import org.mule.umo.UMOMessage;
+
+/**
+ * Adapts a HttpServletResponse to provide the methods of HttpResponse
+ *
+ */
+public final class MuleResponseAdapter extends HttpResponseContextImpl {
+
+ private OutputStream out;
+ private MuleMessage message;
+
+ public MuleResponseAdapter(MuleRequestAdaptor requestContext) {
+ super(requestContext);
+
+ this.message = new MuleMessage(new JerseyMessageAdapter(this));
+ }
+
+ @SuppressWarnings("unchecked")
+ public void commit() throws IOException {
+ for (Map.Entry<String, List<Object>> e : this.getHttpHeaders().entrySet()) {
+ List<String> values = new ArrayList<String>();
+ for (Object v : e.getValue())
+ values.add(getHeaderValue(v));
+ message.setProperty(e.getKey(), values);
+ }
+
+ message.setProperty(HttpConnector.HTTP_STATUS_PROPERTY, this.getStatus());
+
+ Object entity = this.getEntity();
+ if (entity != null) {
+ final EntityProvider p = ProviderFactory.getInstance().createEntityProvider(entity.getClass());
+ p.writeTo(entity, this.getHttpHeaders(), this.getOutputStream());
+ if (out != null) {
+ out.flush();
+ out.close();
+ }
+ }
+
+ }
+
+ public OutputStream getOutputStream() throws IOException {
+ if (out != null)
+ return out;
+
+ return out = new ByteArrayOutputStream();
+ }
+
+ public UMOMessage getMessage() {
+ return message;
+ }
+}
\ No newline at end of file
Added:
mule-transport-jersey/src/main/resources/META-INF/mule-jersey.xsd
(0 => 4)
--- mule-transport-jersey/src/main/resources/META-INF/mule-jersey.xsd (rev 0)
+++ mule-transport-jersey/src/main/resources/META-INF/mule-jersey.xsd 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<xsd:schema xmlns="http://www.mulesource.org/schema/mule/jersey/2.0"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ xmlns:mule="http://www.mulesource.org/schema/mule/core/2.0"
+ targetNamespace="http://www.mulesource.org/schema/mule/jersey/2.0"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified">
+
+ <xsd:import namespace="http://www.w3.org/XML/1998/namespace"/>
+ <xsd:import namespace="http://www.springframework.org/schema/beans"
+ schemaLocation="http://www.springframework.org/schema/beans"/>
+ <xsd:import namespace="http://www.mulesource.org/schema/mule/core/2.0"
+ schemaLocation="http://www.mulesource.org/schema/mule/core/2.0/mule.xsd" />
+
+ <xsd:element name="connector" type="jerseyConnectorType"/>
+
+ <xsd:complexType name="jerseyConnectorType">
+ <xsd:sequence/>
+ </xsd:complexType>
+
+</xsd:schema>
Added:
mule-transport-jersey/src/main/resources/META-INF/services/org/mule/i18n/jersey-messages.properties
(0 => 4)
--- mule-transport-jersey/src/main/resources/META-INF/services/org/mule/i18n/jersey-messages.properties (rev 0)
+++ mule-transport-jersey/src/main/resources/META-INF/services/org/mule/i18n/jersey-messages.properties 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,16 @@
+#Add any string messages here that are specific to your transport
+#Messages put here can be translated into other languages
+#Each message should be given a unique numerical id i.e.
+#
+#1=This is a test message with a single argument {0}
+#
+#Arguments can be placed in the message using {0}, {1}, etc placeholders
+#
+#To get a message listed here use the following -
+# new Message("Abdera", "<message id>" [, <arg 1>, <arg 2>]);
+#
+# "Abdera" is the protocol of this transport
+# <message id> is the id of the message in this file
+# <arg x> is a list of String arguments to pass to the message
+#
+# For more info see http://mule.mulesource.org/wiki/x/zQU
\ No newline at end of file
Added:
mule-transport-jersey/src/main/resources/META-INF/services/org/mule/providers/jersey.properties
(0 => 4)
--- mule-transport-jersey/src/main/resources/META-INF/services/org/mule/providers/jersey.properties (rev 0)
+++ mule-transport-jersey/src/main/resources/META-INF/services/org/mule/providers/jersey.properties 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,32 @@
+#This file is the service descriptor for your transport
+#It ties all the implementation classes together so that Mule can
+#construct endpoints for your transport protocol at runtime
+#For a full list of properties that can be set here see -
+#http://mule.mulesource.org/wiki/x/pwI
+
+#The connector class for your transport. This is alwas required
+connector=org.mule.providers.jersey.JerseyConnector
+
+#Used as the Mule internal representation of a message received or sent by
+#your transport. This is always required.
+message.adapter=org.mule.providers.jersey.JerseyMessageAdapter
+
+#The message adapter to use if the inbound endpoint is marked for streaming
+#streaming.message.adapter=org.mule.providers.jersey.JerseyStreamingMessageAdapter
+
+#The factory used to create dispatchers responsible for sending events from the underlying technology
+#dispatcher.factory=org.mule.providers.jersey.JerseyMessageDispatcherFactory
+
+#The standard message receiver used to consume events from the underlying technology
+message.receiver=org.mule.providers.jersey.JerseyMessageReceiver
+
+
+#Defines the way in which endpoints for your transport will be constructed
+#Options are (but you can write your own) -
+#org.mule.impl.endpoint.ResourceEndpointBuilder i.e. vm://my.queue
+#org.mule.impl.endpoint.UrlEndpointBuilder i.e. axis:http://localhost:1234/context/Service?params
+#org.mule.impl.endpoint.SocketEndpointBuilder i.e. udp://localhost:2222
+
+endpoint.builder=org.mule.impl.endpoint.UrlEndpointBuilder
+
+#For more information see - http://mule.mulesource.org/wiki/x/DQ
Added:
mule-transport-jersey/src/main/resources/META-INF/spring.handlers
(0 => 4)
--- mule-transport-jersey/src/main/resources/META-INF/spring.handlers (rev 0)
+++ mule-transport-jersey/src/main/resources/META-INF/spring.handlers 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1 @@
+http\://www.mulesource.org/schema/mule/jersey/2.0=org.mule.providers.jersey.config.JerseyNamespaceHandler
Added:
mule-transport-jersey/src/main/resources/META-INF/spring.schemas (0
=> 4)
--- mule-transport-jersey/src/main/resources/META-INF/spring.schemas (rev 0)
+++ mule-transport-jersey/src/main/resources/META-INF/spring.schemas 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1 @@
+http\://www.mulesource.org/schema/mule/jersey/2.0/mule-jersey.xsd=META-INF/mule-jersey.xsd
\ No newline at end of file
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaConnectorFactoryTestCase.class
(Binary files differ)
Property changes on:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaConnectorFactoryTestCase.class
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaConnectorTestCase.class
(Binary files differ)
Property changes on:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaConnectorTestCase.class
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaEndpointTestCase.class
(Binary files differ)
Property changes on:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaEndpointTestCase.class
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaMessageAdapterTestCase.class
(Binary files differ)
Property changes on:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaMessageAdapterTestCase.class
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaMessageReceiverTestCase.class
(Binary files differ)
Property changes on:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/AbderaMessageReceiverTestCase.class
___________________________________________________________________
Name: svn:mime-type + application/octet-stream
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/BasicJerseyTest.java
(0 => 4)
--- mule-transport-jersey/src/test/java/org/mule/providers/jersey/BasicJerseyTest.java (rev 0)
+++ mule-transport-jersey/src/test/java/org/mule/providers/jersey/BasicJerseyTest.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,41 @@
+package org.mule.providers.jersey;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mule.extras.client.MuleClient;
+import org.mule.providers.http.HttpConnector;
+import org.mule.providers.http.HttpConstants;
+import org.mule.tck.FunctionalTestCase;
+import org.mule.umo.UMOMessage;
+
+public class BasicJerseyTest extends FunctionalTestCase {
+
+ public void testBasic() throws Exception
+ {
+ MuleClient client = new MuleClient();
+
+ UMOMessage result = client.send("http://localhost:10081/helloworld", "", null);
+ assertEquals("Hello World", result.getPayloadAsString());
+ assertEquals(200, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ result = client.send("http://localhost:10081/hello", "", null);
+ assertEquals(404, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(HttpConnector.HTTP_METHOD_PROPERTY, HttpConstants.METHOD_GET);
+ result = client.send("http://localhost:10081/helloworld", "", props);
+ assertEquals(405, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ props.put(HttpConnector.HTTP_METHOD_PROPERTY, HttpConstants.METHOD_DELETE);
+ result = client.send("http://localhost:10081/helloworld", "", props);
+ assertEquals("Hello World Delete", result.getPayloadAsString());
+ assertEquals(200, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+ }
+
+ @Override
+ protected String getConfigResources() {
+ return "basic-conf.xml";
+ }
+
+}
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/HelloWorldResource.java
(0 => 4)
--- mule-transport-jersey/src/test/java/org/mule/providers/jersey/HelloWorldResource.java (rev 0)
+++ mule-transport-jersey/src/test/java/org/mule/providers/jersey/HelloWorldResource.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,21 @@
+package org.mule.providers.jersey;
+
+import javax.ws.rs.HttpMethod;
+import javax.ws.rs.ProduceMime;
+import javax.ws.rs.UriTemplate;
+
+@UriTemplate("/helloworld")
+public class HelloWorldResource {
+
+ @HttpMethod("POST")
+ @ProduceMime("text/plain")
+ public String sayHelloWorld() {
+ return "Hello World";
+ }
+
+ @HttpMethod("DELETE")
+ @ProduceMime("text/plain")
+ public String deleteHelloWorld() {
+ return "Hello World Delete";
+ }
+}
\ No newline at end of file
Added:
mule-transport-jersey/src/test/java/org/mule/providers/jersey/ServletJerseyTest.java
(0 => 4)
--- mule-transport-jersey/src/test/java/org/mule/providers/jersey/ServletJerseyTest.java (rev 0)
+++ mule-transport-jersey/src/test/java/org/mule/providers/jersey/ServletJerseyTest.java 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,78 @@
+package org.mule.providers.jersey;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.SocketListener;
+import org.mortbay.jetty.Server;
+import org.mortbay.jetty.servlet.ServletHandler;
+import org.mortbay.util.InetAddrPort;
+import org.mule.extras.client.MuleClient;
+import org.mule.providers.http.HttpConnector;
+import org.mule.providers.http.HttpConstants;
+import org.mule.providers.http.servlet.MuleReceiverServlet;
+import org.mule.tck.FunctionalTestCase;
+import org.mule.umo.UMOMessage;
+
+public class ServletJerseyTest extends FunctionalTestCase {
+ public static final int HTTP_PORT = 18088;
+
+ private Server httpServer;
+
+ @Override
+ protected void doSetUp() throws Exception {
+ super.doSetUp();
+ httpServer = new Server();
+ SocketListener socketListener = new SocketListener(new InetAddrPort(HTTP_PORT));
+ httpServer.addListener(socketListener);
+
+ HttpContext context = httpServer.getContext("/");
+ context.setRequestLog(null);
+
+ ServletHandler handler = new ServletHandler();
+ handler.addServlet("MuleReceiverServlet", "/*", MuleReceiverServlet.class
+ .getName());
+
+ context.addHandler(handler);
+ httpServer.start();
+ }
+
+ @Override
+ protected void doTearDown() throws Exception
+ {
+ super.doTearDown();
+ if (httpServer != null && httpServer.isStarted())
+ {
+ httpServer.stop();
+ }
+ }
+
+ public void testBasic() throws Exception
+ {
+ MuleClient client = new MuleClient();
+
+ UMOMessage result = client.send("http://localhost:18088/helloworld", "", null);
+ assertEquals("Hello World", result.getPayloadAsString());
+ assertEquals(200, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ result = client.send("http://localhost:18088/hello", "", null);
+ assertEquals(404, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ Map<String, String> props = new HashMap<String, String>();
+ props.put(HttpConnector.HTTP_METHOD_PROPERTY, HttpConstants.METHOD_GET);
+ result = client.send("http://localhost:18088/helloworld", "", props);
+ assertEquals(405, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+
+ props.put(HttpConnector.HTTP_METHOD_PROPERTY, HttpConstants.METHOD_DELETE);
+ result = client.send("http://localhost:18088/helloworld", "", props);
+ assertEquals("Hello World Delete", result.getPayloadAsString());
+ assertEquals(200, result.getIntProperty(HttpConnector.HTTP_STATUS_PROPERTY, 0));
+ }
+
+ @Override
+ protected String getConfigResources() {
+ return "servlet-conf.xml";
+ }
+
+}
Added: mule-transport-jersey/src/test/resources/basic-conf.xml
(0 => 4)
--- mule-transport-jersey/src/test/resources/basic-conf.xml (rev 0)
+++ mule-transport-jersey/src/test/resources/basic-conf.xml 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mule="http://www.mulesource.org/schema/mule/core/2.0"
+ xmlns:jersey="http://www.mulesource.org/schema/mule/jersey/2.0"
+ xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.0"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.mulesource.org/schema/mule/core/2.0 http://www.mulesource.org/schema/mule/core/2.0/mule.xsd
+ http://www.mulesource.org/schema/mule/jersey/2.0 http://www.mulesource.org/schema/mule/jersey/2.0/mule-jersey.xsd
+ http://www.mulesource.org/schema/mule/vm/2.0 http://www.mulesource.org/schema/mule/vm/2.0/mule-vm.xsd">
+
+ <jersey:connector/>
+
+ <mule:model-seda name="BasicJerseyTest">
+
+ <mule:service name="helloWorldResource">
+ <mule:component class="org.mule.providers.jersey.HelloWorldResource"/>
+ <mule:inbound-router>
+ <mule:endpoint address="jersey:http://localhost:10081/helloworld"/>
+ </mule:inbound-router>
+ </mule:service>
+
+ </mule:model-seda>
+
+</beans>
+
Added:
mule-transport-jersey/src/test/resources/log4j.properties (0 =>
4)
--- mule-transport-jersey/src/test/resources/log4j.properties (rev 0)
+++ mule-transport-jersey/src/test/resources/log4j.properties 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,9 @@
+
+# default properties to initialise log4j
+log4j.rootLogger=WARN, A1
+log4j.appender.A1=org.apache.log4j.ConsoleAppender
+log4j.appender.A1.layout=org.apache.log4j.PatternLayout
+log4j.appender.A1.layout.ConversionPattern=[%d{MM-dd HH:mm:ss}] %-5p %c{1} [%t]: %m%n
+
+# settings for specific packages
+log4j.logger.org.mule=WARN
Added:
mule-transport-jersey/src/test/resources/namespace-config.xml (0
=> 4)
--- mule-transport-jersey/src/test/resources/namespace-config.xml (rev 0)
+++ mule-transport-jersey/src/test/resources/namespace-config.xml 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mule="http://www.mulesource.org/schema/mule/core/2.0"
+ xmlns:jersey="http://www.mulesource.org/schema/mule/jersey/2.0"
+ xmlns:vm="http://www.mulesource.org/schema/mule/vm/2.0"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.mulesource.org/schema/mule/core/2.0 http://www.mulesource.org/schema/mule/core/2.0/mule.xsd
+ http://www.mulesource.org/schema/mule/jersey/2.0 http://www.mulesource.org/schema/mule/jersey/2.0/mule-jersey.xsd
+ http://www.mulesource.org/schema/mule/vm/2.0 http://www.mulesource.org/schema/mule/vm/2.0/mule-vm.xsd">
+
+ <jersey:connector/>
+
+</beans>
+
Added:
mule-transport-jersey/src/test/resources/servlet-conf.xml (0 =>
4)
--- mule-transport-jersey/src/test/resources/servlet-conf.xml (rev 0)
+++ mule-transport-jersey/src/test/resources/servlet-conf.xml 2007-09-13 11:18:27 UTC (rev 4)
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:mule="http://www.mulesource.org/schema/mule/core/2.0"
+ xmlns:jersey="http://www.mulesource.org/schema/mule/jersey/2.0"
+ xmlns:servlet="http://www.mulesource.org/schema/mule/servlet/2.0"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+ http://www.mulesource.org/schema/mule/core/2.0 http://www.mulesource.org/schema/mule/core/2.0/mule.xsd
+ http://www.mulesource.org/schema/mule/jersey/2.0 http://www.mulesource.org/schema/mule/jersey/2.0/mule-jersey.xsd
+ http://www.mulesource.org/schema/mule/servlet/2.0 http://www.mulesource.org/schema/mule/servlet/2.0/mule-servlet.xsd">
+
+ <jersey:connector/>
+
+ <servlet:connector name="servlet" servletUrl="http://localhost:18088/"/>
+
+ <mule:model-seda name="BasicJerseyTest">
+
+ <mule:service name="helloWorldResource">
+ <mule:component class="org.mule.providers.jersey.HelloWorldResource"/>
+ <mule:inbound-router>
+ <mule:endpoint address="jersey:servlet://hello"/>
+ </mule:inbound-router>
+ </mule:service>
+
+ </mule:model-seda>
+
+</beans>
+
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://admin.muleforge.org/manage_email