You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2008/09/02 11:58:24 UTC
svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src:
main/java/org/apache/camel/component/mina/
test/java/org/apache/camel/component/mina/
Author: ningjiang
Date: Tue Sep 2 02:58:23 2008
New Revision: 691178
URL: http://svn.apache.org/viewvc?rev=691178&view=rev
Log:
CAMEL-874 Add seralizable checking on the MinaPayloadHolder to make sure the MinaPayloadHolder can be seralized by Mina
Modified:
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=691178&r1=691177&r2=691178&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Tue Sep 2 02:58:23 2008
@@ -109,14 +109,15 @@
} else {
body = MinaPayloadHelper.getIn(endpoint, exchange);
}
- boolean failed = exchange.isFailed();
- if (!endpoint.isTransferExchange() && failed) {
+ boolean failed = exchange.isFailed();
+ if (failed && !endpoint.isTransferExchange()) {
if (exchange.getException() != null) {
body = exchange.getException();
} else {
body = exchange.getFault().getBody();
}
}
+
if (body == null) {
// must close session if no data to write otherwise client will never receive a response
// and wait forever (if not timing out)
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=691178&r1=691177&r2=691178&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 Sep 2 02:58:23 2008
@@ -19,8 +19,11 @@
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;
+import org.apache.commons.logging.LogFactory;
/**
* Holder object for sending an exchange over the wire using the MINA ObjectSerializationCodecFactory codec.
@@ -43,6 +46,7 @@
*/
public class MinaPayloadHolder implements Serializable {
private static final long serialVersionUID = 1L;
+ private static final transient Log LOG = LogFactory.getLog(MinaPayloadHolder.class);
private Object inBody;
private Object outBody;
@@ -55,6 +59,7 @@
/**
* Creates a payload object with the information from the given exchange.
+ * Only marshal the Serializable object
*
* @param exchange the exchange
* @return the holder object with information copied form the exchange
@@ -62,17 +67,17 @@
public static MinaPayloadHolder marshal(Exchange exchange) {
MinaPayloadHolder payload = new MinaPayloadHolder();
- payload.inBody = exchange.getIn().getBody();
+ payload.inBody = checkSerializableObject(exchange.getIn().getBody());
if (exchange.getOut(false) != null) {
- payload.outBody = exchange.getOut().getBody();
+ payload.outBody = checkSerializableObject(exchange.getOut().getBody());
}
- payload.inHeaders.putAll(exchange.getIn().getHeaders());
- payload.outHeaders.putAll(exchange.getOut().getHeaders());
- payload.properties.putAll(exchange.getProperties());
+ 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(exchange.getFault().getHeaders());
+ payload.faultHeaders.putAll(checkMapSerializableObjects(exchange.getFault().getHeaders()));
}
return payload;
@@ -105,4 +110,33 @@
+ faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
}
+ private static Object checkSerializableObject(Object object) {
+ if (object instanceof Serializable) {
+ return object;
+ } else {
+ LOG.warn("Object " + object + " can't be serialized, it will be exculed by the MinaPayloadHold");
+ return null;
+ }
+ }
+
+ private static Map<String, Object> checkMapSerializableObjects(Map<String, Object> map) {
+ if (map == null) {
+ return null;
+ }
+ Set<String> keys = map.keySet();
+ Map<String, Object> result = new LinkedHashMap<String, Object>();
+ for (String key : keys) {
+ Object object = map.get(key);
+ if (object instanceof Serializable) {
+ result.put(key, object);
+ } else {
+ LOG.warn("Object " + object + " of key " + key
+ + " can't be serialized, it will be exculed by the MinaPayloadHold");
+ }
+ }
+ return result;
+
+ }
+
+
}
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java?rev=691178&r1=691177&r2=691178&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java Tue Sep 2 02:58:23 2008
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.mina;
+import java.nio.charset.Charset;
+
import junit.framework.Assert;
import org.apache.camel.ContextTestSupport;
@@ -71,7 +73,7 @@
assertEquals("cheddar", out.getHeader("cheese"));
} else {
Message fault = exchange.getFault();
- assertNotNull(fault);
+ assertNotNull(fault.getBody());
assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
assertEquals("nihao", fault.getHeader("hello"));
}
@@ -84,6 +86,7 @@
assertEquals("feta", in.getHeader("cheese"));
// however the shared properties have changed
assertEquals("fresh", exchange.getProperty("salami"));
+ assertNull(exchange.getProperty("Charset"));
}
protected RouteBuilder createRouteBuilder() {
@@ -108,6 +111,7 @@
e.getOut().setHeader("cheese", "cheddar");
}
e.setProperty("salami", "fresh");
+ e.setProperty("Charset", Charset.defaultCharset());
}
});
}
RE: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
Posted by Claus Ibsen <ci...@silverbullet.dk>.
Hi Willem
You forgot one typo ;)
exclued => excluded
Med venlig hilsen
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: Willem Jiang [mailto:willem.jiang@gmail.com]
Sent: 3. september 2008 05:36
To: camel-dev@activemq.apache.org
Subject: Re: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
Hi Claus
Thank you for point the issues out, I just commit a quick fix for it.
I just went through the William's header filter, it mainly works for
filtering the header name.
For the mina component the headers only are sent with the exchange ,
most works can be done in the MinaPayloadHolder :)
Willem
Claus Ibsen wrote:
> Hi
>
> A few cosmetic issues:
> - System.out in a unit test
> - Spelling in the WARN log" exculed by the MinaPayloadHold"
> Should be excluded and ...holder
>
> A side note: What about William Tam's new header stuff? Can't it be used to exclude the headers not supported? Maybe it's to confusing to use ;)
>
>
> Med venlig hilsen
>
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: ningjiang@apache.org [mailto:ningjiang@apache.org]
> Sent: 2. september 2008 11:58
> To: camel-commits@activemq.apache.org
> Subject: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
>
> Author: ningjiang
> Date: Tue Sep 2 02:58:23 2008
> New Revision: 691178
>
> URL: http://svn.apache.org/viewvc?rev=691178&view=rev
> Log:
> CAMEL-874 Add seralizable checking on the MinaPayloadHolder to make sure the MinaPayloadHolder can be seralized by Mina
>
> Modified:
> activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
> activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
> activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
>
> Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
> URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=691178&r1=691177&r2=691178&view=diff
> ==============================================================================
> --- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
> +++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Tue Sep 2 02:58:23 2008
> @@ -109,14 +109,15 @@
> } else {
> body = MinaPayloadHelper.getIn(endpoint, exchange);
> }
> - boolean failed = exchange.isFailed();
> - if (!endpoint.isTransferExchange() && failed) {
> + boolean failed = exchange.isFailed();
> + if (failed && !endpoint.isTransferExchange()) {
> if (exchange.getException() != null) {
> body = exchange.getException();
> } else {
> body = exchange.getFault().getBody();
> }
> }
> +
> if (body == null) {
> // must close session if no data to write otherwise client will never receive a response
> // and wait forever (if not timing out)
>
> 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=691178&r1=691177&r2=691178&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 Sep 2 02:58:23 2008
> @@ -19,8 +19,11 @@
> 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;
> +import org.apache.commons.logging.LogFactory;
>
> /**
> * Holder object for sending an exchange over the wire using the MINA ObjectSerializationCodecFactory codec.
> @@ -43,6 +46,7 @@
> */
> public class MinaPayloadHolder implements Serializable {
> private static final long serialVersionUID = 1L;
> + private static final transient Log LOG = LogFactory.getLog(MinaPayloadHolder.class);
>
> private Object inBody;
> private Object outBody;
> @@ -55,6 +59,7 @@
>
> /**
> * Creates a payload object with the information from the given exchange.
> + * Only marshal the Serializable object
> *
> * @param exchange the exchange
> * @return the holder object with information copied form the exchange
> @@ -62,17 +67,17 @@
> public static MinaPayloadHolder marshal(Exchange exchange) {
> MinaPayloadHolder payload = new MinaPayloadHolder();
>
> - payload.inBody = exchange.getIn().getBody();
> + payload.inBody = checkSerializableObject(exchange.getIn().getBody());
> if (exchange.getOut(false) != null) {
> - payload.outBody = exchange.getOut().getBody();
> + payload.outBody = checkSerializableObject(exchange.getOut().getBody());
> }
> - payload.inHeaders.putAll(exchange.getIn().getHeaders());
> - payload.outHeaders.putAll(exchange.getOut().getHeaders());
> - payload.properties.putAll(exchange.getProperties());
> + 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(exchange.getFault().getHeaders());
> + payload.faultHeaders.putAll(checkMapSerializableObjects(exchange.getFault().getHeaders()));
> }
>
> return payload;
> @@ -105,4 +110,33 @@
> + faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
> }
>
> + private static Object checkSerializableObject(Object object) {
> + if (object instanceof Serializable) {
> + return object;
> + } else {
> + LOG.warn("Object " + object + " can't be serialized, it will be exculed by the MinaPayloadHold");
> + return null;
> + }
> + }
> +
> + private static Map<String, Object> checkMapSerializableObjects(Map<String, Object> map) {
> + if (map == null) {
> + return null;
> + }
> + Set<String> keys = map.keySet();
> + Map<String, Object> result = new LinkedHashMap<String, Object>();
> + for (String key : keys) {
> + Object object = map.get(key);
> + if (object instanceof Serializable) {
> + result.put(key, object);
> + } else {
> + LOG.warn("Object " + object + " of key " + key
> + + " can't be serialized, it will be exculed by the MinaPayloadHold");
> + }
> + }
> + return result;
> +
> + }
> +
> +
> }
>
> Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
> URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java?rev=691178&r1=691177&r2=691178&view=diff
> ==============================================================================
> --- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java (original)
> +++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java Tue Sep 2 02:58:23 2008
> @@ -16,6 +16,8 @@
> */
> package org.apache.camel.component.mina;
>
> +import java.nio.charset.Charset;
> +
> import junit.framework.Assert;
>
> import org.apache.camel.ContextTestSupport;
> @@ -71,7 +73,7 @@
> assertEquals("cheddar", out.getHeader("cheese"));
> } else {
> Message fault = exchange.getFault();
> - assertNotNull(fault);
> + assertNotNull(fault.getBody());
> assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
> assertEquals("nihao", fault.getHeader("hello"));
> }
> @@ -84,6 +86,7 @@
> assertEquals("feta", in.getHeader("cheese"));
> // however the shared properties have changed
> assertEquals("fresh", exchange.getProperty("salami"));
> + assertNull(exchange.getProperty("Charset"));
> }
>
> protected RouteBuilder createRouteBuilder() {
> @@ -108,6 +111,7 @@
> e.getOut().setHeader("cheese", "cheddar");
> }
> e.setProperty("salami", "fresh");
> + e.setProperty("Charset", Charset.defaultCharset());
> }
> });
> }
>
>
>
>
Re: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src:
main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
Posted by Willem Jiang <wi...@gmail.com>.
Hi Claus
Thank you for point the issues out, I just commit a quick fix for it.
I just went through the William's header filter, it mainly works for
filtering the header name.
For the mina component the headers only are sent with the exchange ,
most works can be done in the MinaPayloadHolder :)
Willem
Claus Ibsen wrote:
> Hi
>
> A few cosmetic issues:
> - System.out in a unit test
> - Spelling in the WARN log" exculed by the MinaPayloadHold"
> Should be excluded and ...holder
>
> A side note: What about William Tam's new header stuff? Can't it be used to exclude the headers not supported? Maybe it's to confusing to use ;)
>
>
> Med venlig hilsen
>
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: ningjiang@apache.org [mailto:ningjiang@apache.org]
> Sent: 2. september 2008 11:58
> To: camel-commits@activemq.apache.org
> Subject: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
>
> Author: ningjiang
> Date: Tue Sep 2 02:58:23 2008
> New Revision: 691178
>
> URL: http://svn.apache.org/viewvc?rev=691178&view=rev
> Log:
> CAMEL-874 Add seralizable checking on the MinaPayloadHolder to make sure the MinaPayloadHolder can be seralized by Mina
>
> Modified:
> activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
> activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
> activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
>
> Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
> URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=691178&r1=691177&r2=691178&view=diff
> ==============================================================================
> --- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
> +++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Tue Sep 2 02:58:23 2008
> @@ -109,14 +109,15 @@
> } else {
> body = MinaPayloadHelper.getIn(endpoint, exchange);
> }
> - boolean failed = exchange.isFailed();
> - if (!endpoint.isTransferExchange() && failed) {
> + boolean failed = exchange.isFailed();
> + if (failed && !endpoint.isTransferExchange()) {
> if (exchange.getException() != null) {
> body = exchange.getException();
> } else {
> body = exchange.getFault().getBody();
> }
> }
> +
> if (body == null) {
> // must close session if no data to write otherwise client will never receive a response
> // and wait forever (if not timing out)
>
> 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=691178&r1=691177&r2=691178&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 Sep 2 02:58:23 2008
> @@ -19,8 +19,11 @@
> 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;
> +import org.apache.commons.logging.LogFactory;
>
> /**
> * Holder object for sending an exchange over the wire using the MINA ObjectSerializationCodecFactory codec.
> @@ -43,6 +46,7 @@
> */
> public class MinaPayloadHolder implements Serializable {
> private static final long serialVersionUID = 1L;
> + private static final transient Log LOG = LogFactory.getLog(MinaPayloadHolder.class);
>
> private Object inBody;
> private Object outBody;
> @@ -55,6 +59,7 @@
>
> /**
> * Creates a payload object with the information from the given exchange.
> + * Only marshal the Serializable object
> *
> * @param exchange the exchange
> * @return the holder object with information copied form the exchange
> @@ -62,17 +67,17 @@
> public static MinaPayloadHolder marshal(Exchange exchange) {
> MinaPayloadHolder payload = new MinaPayloadHolder();
>
> - payload.inBody = exchange.getIn().getBody();
> + payload.inBody = checkSerializableObject(exchange.getIn().getBody());
> if (exchange.getOut(false) != null) {
> - payload.outBody = exchange.getOut().getBody();
> + payload.outBody = checkSerializableObject(exchange.getOut().getBody());
> }
> - payload.inHeaders.putAll(exchange.getIn().getHeaders());
> - payload.outHeaders.putAll(exchange.getOut().getHeaders());
> - payload.properties.putAll(exchange.getProperties());
> + 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(exchange.getFault().getHeaders());
> + payload.faultHeaders.putAll(checkMapSerializableObjects(exchange.getFault().getHeaders()));
> }
>
> return payload;
> @@ -105,4 +110,33 @@
> + faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
> }
>
> + private static Object checkSerializableObject(Object object) {
> + if (object instanceof Serializable) {
> + return object;
> + } else {
> + LOG.warn("Object " + object + " can't be serialized, it will be exculed by the MinaPayloadHold");
> + return null;
> + }
> + }
> +
> + private static Map<String, Object> checkMapSerializableObjects(Map<String, Object> map) {
> + if (map == null) {
> + return null;
> + }
> + Set<String> keys = map.keySet();
> + Map<String, Object> result = new LinkedHashMap<String, Object>();
> + for (String key : keys) {
> + Object object = map.get(key);
> + if (object instanceof Serializable) {
> + result.put(key, object);
> + } else {
> + LOG.warn("Object " + object + " of key " + key
> + + " can't be serialized, it will be exculed by the MinaPayloadHold");
> + }
> + }
> + return result;
> +
> + }
> +
> +
> }
>
> Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
> URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java?rev=691178&r1=691177&r2=691178&view=diff
> ==============================================================================
> --- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java (original)
> +++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java Tue Sep 2 02:58:23 2008
> @@ -16,6 +16,8 @@
> */
> package org.apache.camel.component.mina;
>
> +import java.nio.charset.Charset;
> +
> import junit.framework.Assert;
>
> import org.apache.camel.ContextTestSupport;
> @@ -71,7 +73,7 @@
> assertEquals("cheddar", out.getHeader("cheese"));
> } else {
> Message fault = exchange.getFault();
> - assertNotNull(fault);
> + assertNotNull(fault.getBody());
> assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
> assertEquals("nihao", fault.getHeader("hello"));
> }
> @@ -84,6 +86,7 @@
> assertEquals("feta", in.getHeader("cheese"));
> // however the shared properties have changed
> assertEquals("fresh", exchange.getProperty("salami"));
> + assertNull(exchange.getProperty("Charset"));
> }
>
> protected RouteBuilder createRouteBuilder() {
> @@ -108,6 +111,7 @@
> e.getOut().setHeader("cheese", "cheddar");
> }
> e.setProperty("salami", "fresh");
> + e.setProperty("Charset", Charset.defaultCharset());
> }
> });
> }
>
>
>
>
RE: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
Posted by Claus Ibsen <ci...@silverbullet.dk>.
Hi
A few cosmetic issues:
- System.out in a unit test
- Spelling in the WARN log" exculed by the MinaPayloadHold"
Should be excluded and ...holder
A side note: What about William Tam's new header stuff? Can't it be used to exclude the headers not supported? Maybe it's to confusing to use ;)
Med venlig hilsen
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: ningjiang@apache.org [mailto:ningjiang@apache.org]
Sent: 2. september 2008 11:58
To: camel-commits@activemq.apache.org
Subject: svn commit: r691178 - in /activemq/camel/trunk/components/camel-mina/src: main/java/org/apache/camel/component/mina/ test/java/org/apache/camel/component/mina/
Author: ningjiang
Date: Tue Sep 2 02:58:23 2008
New Revision: 691178
URL: http://svn.apache.org/viewvc?rev=691178&view=rev
Log:
CAMEL-874 Add seralizable checking on the MinaPayloadHolder to make sure the MinaPayloadHolder can be seralized by Mina
Modified:
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=691178&r1=691177&r2=691178&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Tue Sep 2 02:58:23 2008
@@ -109,14 +109,15 @@
} else {
body = MinaPayloadHelper.getIn(endpoint, exchange);
}
- boolean failed = exchange.isFailed();
- if (!endpoint.isTransferExchange() && failed) {
+ boolean failed = exchange.isFailed();
+ if (failed && !endpoint.isTransferExchange()) {
if (exchange.getException() != null) {
body = exchange.getException();
} else {
body = exchange.getFault().getBody();
}
}
+
if (body == null) {
// must close session if no data to write otherwise client will never receive a response
// and wait forever (if not timing out)
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=691178&r1=691177&r2=691178&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 Sep 2 02:58:23 2008
@@ -19,8 +19,11 @@
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;
+import org.apache.commons.logging.LogFactory;
/**
* Holder object for sending an exchange over the wire using the MINA ObjectSerializationCodecFactory codec.
@@ -43,6 +46,7 @@
*/
public class MinaPayloadHolder implements Serializable {
private static final long serialVersionUID = 1L;
+ private static final transient Log LOG = LogFactory.getLog(MinaPayloadHolder.class);
private Object inBody;
private Object outBody;
@@ -55,6 +59,7 @@
/**
* Creates a payload object with the information from the given exchange.
+ * Only marshal the Serializable object
*
* @param exchange the exchange
* @return the holder object with information copied form the exchange
@@ -62,17 +67,17 @@
public static MinaPayloadHolder marshal(Exchange exchange) {
MinaPayloadHolder payload = new MinaPayloadHolder();
- payload.inBody = exchange.getIn().getBody();
+ payload.inBody = checkSerializableObject(exchange.getIn().getBody());
if (exchange.getOut(false) != null) {
- payload.outBody = exchange.getOut().getBody();
+ payload.outBody = checkSerializableObject(exchange.getOut().getBody());
}
- payload.inHeaders.putAll(exchange.getIn().getHeaders());
- payload.outHeaders.putAll(exchange.getOut().getHeaders());
- payload.properties.putAll(exchange.getProperties());
+ 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(exchange.getFault().getHeaders());
+ payload.faultHeaders.putAll(checkMapSerializableObjects(exchange.getFault().getHeaders()));
}
return payload;
@@ -105,4 +110,33 @@
+ faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
}
+ private static Object checkSerializableObject(Object object) {
+ if (object instanceof Serializable) {
+ return object;
+ } else {
+ LOG.warn("Object " + object + " can't be serialized, it will be exculed by the MinaPayloadHold");
+ return null;
+ }
+ }
+
+ private static Map<String, Object> checkMapSerializableObjects(Map<String, Object> map) {
+ if (map == null) {
+ return null;
+ }
+ Set<String> keys = map.keySet();
+ Map<String, Object> result = new LinkedHashMap<String, Object>();
+ for (String key : keys) {
+ Object object = map.get(key);
+ if (object instanceof Serializable) {
+ result.put(key, object);
+ } else {
+ LOG.warn("Object " + object + " of key " + key
+ + " can't be serialized, it will be exculed by the MinaPayloadHold");
+ }
+ }
+ return result;
+
+ }
+
+
}
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java?rev=691178&r1=691177&r2=691178&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java Tue Sep 2 02:58:23 2008
@@ -16,6 +16,8 @@
*/
package org.apache.camel.component.mina;
+import java.nio.charset.Charset;
+
import junit.framework.Assert;
import org.apache.camel.ContextTestSupport;
@@ -71,7 +73,7 @@
assertEquals("cheddar", out.getHeader("cheese"));
} else {
Message fault = exchange.getFault();
- assertNotNull(fault);
+ assertNotNull(fault.getBody());
assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
assertEquals("nihao", fault.getHeader("hello"));
}
@@ -84,6 +86,7 @@
assertEquals("feta", in.getHeader("cheese"));
// however the shared properties have changed
assertEquals("fresh", exchange.getProperty("salami"));
+ assertNull(exchange.getProperty("Charset"));
}
protected RouteBuilder createRouteBuilder() {
@@ -108,6 +111,7 @@
e.getOut().setHeader("cheese", "cheddar");
}
e.setProperty("salami", "fresh");
+ e.setProperty("Charset", Charset.defaultCharset());
}
});
}