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