You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2008/11/11 19:43:21 UTC

svn commit: r713102 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/MinaPayloadHolder.java test/java/org/apache/camel/component/mina/MinaClientServerTest.java

Author: davsclaus
Date: Tue Nov 11 10:43:21 2008
New Revision: 713102

URL: http://svn.apache.org/viewvc?rev=713102&view=rev
Log:
CAMEL-656: Polished mina code and added an example for wiki

Added:
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java   (contents, props changed)
      - copied, changed from r713095, activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFileTcpTest.java
Modified:
    activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java

Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java?rev=713102&r1=713101&r2=713102&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java Tue Nov 11 10:43:21 2008
@@ -19,7 +19,6 @@
 import java.io.Serializable;
 import java.util.LinkedHashMap;
 import java.util.Map;
-import java.util.Set;
 
 import org.apache.camel.Exchange;
 import org.apache.commons.logging.Log;
@@ -41,6 +40,7 @@
  *     <li>exchange properties</li>
  *     <li>exception</li>
  * </ul>
+ * Any object that is not serializable will be skipped and Camel will log this at WARN level.
  *
  * @version $Revision$
  */
@@ -67,18 +67,18 @@
     public static MinaPayloadHolder marshal(Exchange exchange) {
         MinaPayloadHolder payload = new MinaPayloadHolder();
 
-        payload.inBody = checkSerializableObject(exchange.getIn().getBody());
+        payload.inBody = checkSerializableObject("in body", exchange.getIn().getBody());
+        payload.inHeaders.putAll(checkMapSerializableObjects("in headers", exchange.getIn().getHeaders()));
         if (exchange.getOut(false) != null) {
-            payload.outBody = checkSerializableObject(exchange.getOut().getBody());
+            payload.outBody = checkSerializableObject("out body", exchange.getOut().getBody());
+            payload.outHeaders.putAll(checkMapSerializableObjects("out headers", exchange.getOut().getHeaders()));
         }
-        payload.inHeaders.putAll(checkMapSerializableObjects(exchange.getIn().getHeaders()));
-        payload.outHeaders.putAll(checkMapSerializableObjects(exchange.getOut().getHeaders()));
-        payload.properties.putAll(checkMapSerializableObjects(exchange.getProperties()));
-        payload.exception = exchange.getException();
         if (exchange.getFault(false) != null) {
-            payload.faultBody = exchange.getFault().getBody();
-            payload.faultHeaders.putAll(checkMapSerializableObjects(exchange.getFault().getHeaders()));
+            payload.faultBody = checkSerializableObject("fault body", exchange.getFault().getBody());
+            payload.faultHeaders.putAll(checkMapSerializableObjects("fault headers", exchange.getFault().getHeaders()));
         }
+        payload.properties.putAll(checkMapSerializableObjects("exchange properties", exchange.getProperties()));
+        payload.exception = exchange.getException();
 
         return payload;
     }
@@ -91,9 +91,11 @@
      */
     public static void unmarshal(Exchange exchange, MinaPayloadHolder payload) {
         exchange.getIn().setBody(payload.inBody);
-        exchange.getOut().setBody(payload.outBody);
         exchange.getIn().setHeaders(payload.inHeaders);
-        exchange.getOut().setHeaders(payload.outHeaders);
+        if (payload.outBody != null) {
+            exchange.getOut().setBody(payload.outBody);
+            exchange.getOut().setHeaders(payload.outHeaders);
+        }
         if (payload.faultBody != null) {
             exchange.getFault().setBody(payload.faultBody);
             exchange.getFault().setHeaders(payload.faultHeaders);
@@ -106,37 +108,35 @@
 
     public String toString() {
         return "MinaPayloadHolder{" + "inBody=" + inBody + ", outBody=" + outBody + ", inHeaders="
-               + inHeaders + ", outHeaders=" + outHeaders + ", faultBody=" + faultBody + " , faultHeaders="
+               + inHeaders + ", outHeaders=" + outHeaders + ", faultBody=" + faultBody + ", faultHeaders="
                + faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
     }
 
-    private static Object checkSerializableObject(Object object) {
+    private static Object checkSerializableObject(String type, Object object) {
         if (object instanceof Serializable) {
             return object;
         } else {
-            LOG.warn("Object " + object + " can't be serialized, it will be excluded by the MinaPayloadHolder");
+            LOG.warn(type + " containig object " + object + " can not be serialized, it will be excluded by the MinaPayloadHolder");
             return null;
         }
     }
 
-    private static Map<String, Object> checkMapSerializableObjects(Map<String, Object> map) {
+    private static Map<String, Object> checkMapSerializableObjects(String type, Map<String, Object> map) {
         if (map == null) {
             return null;
         }
 
         Map<String, Object> result = new LinkedHashMap<String, Object>();
         for (Map.Entry<String, Object> entry : map.entrySet()) {
-
             if (entry.getValue() instanceof Serializable) {
                 result.put(entry.getKey(), entry.getValue());
             } else {
-                LOG.warn("Object " + entry.getValue() + " of key " + entry.getKey()
-                         + " can't be serialized, it will be excluded by the MinaPayloadHolder");
+                LOG.warn(type + " containing object " + entry.getValue() + " of key " + entry.getKey()
+                         + " can not be serialized, it will be excluded by the MinaPayloadHolder");
             }
         }
-        return result;
 
+        return result;
     }
 
-
 }

Copied: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java (from r713095, activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFileTcpTest.java)
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java?p2=activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java&p1=activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFileTcpTest.java&r1=713095&r2=713102&rev=713102&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaFileTcpTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java Tue Nov 11 10:43:21 2008
@@ -17,30 +17,46 @@
 package org.apache.camel.component.mina;
 
 import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
 
 /**
  * @version $Revision$
  */
-public class MinaFileTcpTest extends ContextTestSupport {
+public class MinaClientServerTest extends ContextTestSupport {
 
-    public void testMinaRoute() throws Exception {
-        MockEndpoint endpoint = getMockEndpoint("mock:results");
-        endpoint.expectedMessageCount(1);
-
-        assertMockEndpointsSatisfied();
+    public void testSendToServer() {
+        // START SNIPPET: e3
+        String out = (String) template.requestBody("mina:tcp://localhost:5555?sync=true&textline=true", "Claus");
+        assertEquals("Hello Claus", out);
+        // END SNIPPET: e3
     }
 
-    protected RouteBuilder createRouteBuilder() {
+    @Override
+    protected RouteBuilder createRouteBuilder() throws Exception {
         return new RouteBuilder() {
-            public void configure() {
-                // lets setup a server
-                from("mina:tcp://localhost:9123").to("mock:results");
-
-                from("file:src/test/data?noop=true").
-                        to("mina:tcp://localhost:9123");
+            @Override
+            public void configure() throws Exception {
+                // START SNIPPET: e1
+                // lets setup a server on port 5555
+                // we set the sync option so we will send a reply
+                // and we let the request-reply be processed in the MyServerProcessor
+                from("mina:tcp://localhost:5555?sync=true&textline=true").process(new MyServerProcessor());
+                // END SNIPPET: e1
             }
         };
     }
+
+    // START SNIPPET: e2
+    private class MyServerProcessor implements Processor {
+        public void process(Exchange exchange) throws Exception {
+            // get the input from the IN body
+            String name = exchange.getIn().getBody(String.class);
+            // send back a response on the OUT body
+            exchange.getOut().setBody("Hello " + name);
+        }
+    }
+    // END SNIPPET: e2
+
 }
\ No newline at end of file

Propchange: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaClientServerTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain