You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by bs...@apache.org on 2007/02/23 18:23:40 UTC
svn commit: r511025 - in
/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http:
./ src/main/java/org/apache/servicemix/http/endpoints/
src/test/java/org/apache/servicemix/http/endpoints/
Author: bsnyder
Date: Fri Feb 23 09:23:39 2007
New Revision: 511025
URL: http://svn.apache.org/viewvc?view=rev&rev=511025
Log:
Adding initial code for SM-856 - Add a marshaler to the servicemix-http component that handles Java serialization.
Added:
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java (with props)
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java (with props)
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java (with props)
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java (with props)
Modified:
incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/pom.xml
Modified: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/pom.xml
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/pom.xml?view=diff&rev=511025&r1=511024&r2=511025
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/pom.xml (original)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/pom.xml Fri Feb 23 09:23:39 2007
@@ -191,6 +191,11 @@
<scope>provided</scope>
<optional>true</optional>
</dependency>
+ <dependency>
+ <groupId>xstream</groupId>
+ <artifactId>xstream</artifactId>
+ <version>1.1.3</version>
+ </dependency>
</dependencies>
</project>
Added: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java?view=auto&rev=511025
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java (added)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java Fri Feb 23 09:23:39 2007
@@ -0,0 +1,48 @@
+package org.apache.servicemix.http.endpoints;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.ObjectInputStream;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URI;
+
+import javax.jbi.component.ComponentContext;
+import javax.jbi.messaging.MessageExchange;
+import javax.jbi.messaging.NormalizedMessage;
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.servicemix.jbi.jaxp.StringSource;
+import org.apache.servicemix.jbi.messaging.MessageExchangeSupport;
+
+import com.thoughtworks.xstream.XStream;
+import com.thoughtworks.xstream.io.xml.DomDriver;
+
+/**
+ *
+ * @author bsnyder
+ * @org.apache.xbean.XBean element="serializedMarshaler"
+ */
+public class SerializedMarshaler extends DefaultHttpConsumerMarshaler {
+
+ public MessageExchange createExchange(HttpServletRequest request, ComponentContext context) throws Exception {
+ URI inOnlyMepUri = MessageExchangeSupport.IN_ONLY;
+ MessageExchange me =
+ context.getDeliveryChannel().createExchangeFactory().createExchange(inOnlyMepUri);
+ NormalizedMessage in = me.createMessage();
+
+ String xmlRequest = marshal(request.getInputStream());
+ in.setContent(new StringSource(xmlRequest));
+ me.setMessage(in, "in");
+ return me;
+ }
+
+ protected String marshal(InputStream is) throws IOException, ClassNotFoundException {
+ Object obj = new ObjectInputStream(is).readObject();
+ Writer w = new StringWriter();
+ XStream xstream = new XStream(new DomDriver());
+ xstream.toXML(obj, w);
+ return w.toString();
+ }
+
+}
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/main/java/org/apache/servicemix/http/endpoints/SerializedMarshaler.java
------------------------------------------------------------------------------
svn:keywords = Id Revision
Added: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java?view=auto&rev=511025
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java (added)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java Fri Feb 23 09:23:39 2007
@@ -0,0 +1,18 @@
+package org.apache.servicemix.http.endpoints;
+
+public interface Person {
+
+ String getGivenName();
+
+ void setGivenName(String givenName);
+
+ String getSurName();
+
+ void setSurName(String surName);
+
+ int getAge();
+
+ void setAge(int age);
+
+ String toString();
+}
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/Person.java
------------------------------------------------------------------------------
svn:keywords = Id Revision
Added: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java?view=auto&rev=511025
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java (added)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java Fri Feb 23 09:23:39 2007
@@ -0,0 +1,43 @@
+package org.apache.servicemix.http.endpoints;
+
+public class PersonImpl implements Person {
+
+ protected String givenName;
+ protected String surName;
+ protected int age;
+
+ public PersonImpl(String givenName, String surName, int age) {
+ this.givenName = givenName;
+ this.surName = surName;
+ this.age = age;
+ }
+
+ public String getGivenName() {
+ return givenName;
+ }
+
+ public String getSurName() {
+ return surName;
+ }
+
+ public void setGivenName(String givenName) {
+ this.givenName = givenName;
+ }
+
+ public void setSurName(String surName) {
+ this.surName = surName;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+
+ public String toString() {
+ return "Person: " +
+ "surName [" + surName + "], givenName [" + givenName + "], age [" + age + "]";
+ }
+}
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/PersonImpl.java
------------------------------------------------------------------------------
svn:keywords = Id Revision
Added: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java
URL: http://svn.apache.org/viewvc/incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java?view=auto&rev=511025
==============================================================================
--- incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java (added)
+++ incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java Fri Feb 23 09:23:39 2007
@@ -0,0 +1,87 @@
+package org.apache.servicemix.http.endpoints;
+
+import java.io.ByteArrayInputStream;
+
+import javax.jbi.component.ComponentContext;
+import javax.jbi.messaging.ExchangeStatus;
+import javax.jbi.messaging.InOut;
+import javax.xml.namespace.QName;
+import javax.xml.transform.stream.StreamSource;
+
+import junit.framework.TestCase;
+
+import org.apache.servicemix.client.DefaultServiceMixClient;
+import org.apache.servicemix.http.HttpComponent;
+import org.apache.servicemix.http.HttpEndpointType;
+import org.apache.servicemix.jbi.container.JBIContainer;
+import org.apache.servicemix.jbi.jaxp.SourceTransformer;
+import org.springframework.mock.web.MockHttpServletRequest;
+
+public class SerializedMarshalerTest extends TestCase {
+
+ protected JBIContainer container;
+ protected ComponentContext context;
+
+ public void setUp() throws Exception {
+ container = new JBIContainer();
+ container.setUseMBeanServer(false);
+ container.setCreateMBeanServer(false);
+ container.setEmbedded(true);
+ container.init();
+ }
+
+ protected void tearDown() throws Exception {
+ if (container != null) {
+ container.shutDown();
+ }
+ }
+
+ public void testCreateExchange() throws Exception{
+ HttpConsumerEndpoint ep = new HttpConsumerEndpoint();
+ ep.setService(new QName("urn:httpconsumer", "HttpConsumer"));
+ ep.setEndpoint("HttpConsumer");
+ ep.setLocationURI("http://localhost:8192/service");
+
+ SerializedMarshaler marshaler = new SerializedMarshaler();
+ ep.setMarshaler(marshaler);
+
+ HttpComponent component = new HttpComponent();
+ component.setEndpoints(new HttpEndpointType[] { ep });
+ container.activateComponent(component, "HttpConsumer");
+
+ container.start();
+
+ DefaultServiceMixClient client = new DefaultServiceMixClient(container);
+ InOut inout = client.createInOutExchange();
+ inout.setInterfaceName(new QName("urn:httpconsumer", "HttpConsumer"));
+ inout.getInMessage().setContent(
+ new StreamSource(new ByteArrayInputStream(createRequestMessage())));
+
+ long t0 = System.currentTimeMillis();
+ client.sendSync(inout);
+ long t1 = System.currentTimeMillis();
+ assertTrue(inout.getStatus() == ExchangeStatus.ACTIVE);
+
+ System.err.println("Executed in " + (t1 - t0) + "ms");
+
+ assertNotNull(inout.getOutMessage());
+ assertNotNull(inout.getOutMessage().getContent());
+
+ SourceTransformer sourceTransformer = new SourceTransformer();
+ String reply = sourceTransformer.toString(inout.getOutMessage().getContent());
+
+ String inputMesage = sourceTransformer.toString(new StreamSource(
+ new ByteArrayInputStream(createRequestMessage())));
+
+ System.err.println("##################################################");
+ System.err.println("Msg Sent [" + inputMesage + "]");
+ System.err.println("Msg Recieved [" + reply + "]");
+ System.err.println("##################################################");
+ }
+
+ private byte[] createRequestMessage() {
+ Person p = new PersonImpl("Hunter", "Thompson", 67);
+ return p.toString().getBytes();
+ }
+
+}
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: incubator/servicemix/trunk/deployables/bindingcomponents/servicemix-http/src/test/java/org/apache/servicemix/http/endpoints/SerializedMarshalerTest.java
------------------------------------------------------------------------------
svn:keywords = Id Revision