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/01 11:29:50 UTC
svn commit: r690920 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/converter/
components/camel-mina/src/main/java/org/apache/camel/component/mina/
components/camel-mina/src/test/java/org...
Author: ningjiang
Date: Mon Sep 1 02:29:48 2008
New Revision: 690920
URL: http://svn.apache.org/viewvc?rev=690920&view=rev
Log:
CAMEL-873 CAMEL-400
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
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/MinaConverter.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Mon Sep 1 02:29:48 2008
@@ -29,7 +29,9 @@
* @version $Revision$
*/
public interface Exchange {
-
+
+ String CHARSET_NAME = "org.apache.camel.Exchange.CharsetName";
+
/**
* Returns the {@link ExchangePattern} (MEP) of this exchange.
*
@@ -173,7 +175,7 @@
* Returns true if this exchange is transacted
*/
boolean isTransacted();
-
+
/**
* Returns the container so that a processor can resolve endpoints from URIs
*
@@ -194,7 +196,7 @@
/**
* Copies the data into this exchange from the given exchange
- *
+ *
* @param source is the source from which headers and messages will be copied
*/
void copyFrom(Exchange source);
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java Mon Sep 1 02:29:48 2008
@@ -39,8 +39,10 @@
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.Properties;
import javax.xml.transform.OutputKeys;
@@ -52,6 +54,7 @@
import javax.xml.transform.stream.StreamResult;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.camel.util.CollectionStringBuffer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -135,10 +138,21 @@
}
@Converter
- public static String toString(byte[] data) {
+ public static String toString(byte[] data, Exchange exchange) {
+ if (exchange != null) {
+ String charsetName = (String) exchange.getProperty(Exchange.CHARSET_NAME);
+ if (charsetName != null) {
+ try {
+ return new String(data, charsetName);
+ } catch (UnsupportedEncodingException e) {
+ LOG.warn("Can't convert the byte to String with the charset " + charsetName, e);
+ }
+ }
+ }
return new String(data);
}
+
@Converter
public static String toString(File file) throws IOException {
return toString(toReader(file));
@@ -226,7 +240,7 @@
return new ObjectInputStream(stream);
}
}
-
+
@Converter
public static byte[] toBytes(InputStream stream) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java Mon Sep 1 02:29:48 2008
@@ -21,9 +21,12 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -49,8 +52,8 @@
}
@Converter
- public static String toString(ByteBuffer buffer) {
- return IOConverter.toString(buffer.array());
+ public static String toString(ByteBuffer buffer, Exchange exchange) {
+ return IOConverter.toString(buffer.array(), exchange);
}
@Converter
@@ -84,9 +87,22 @@
}
@Converter
- public static ByteBuffer toByteBuffer(String value) {
+ public static ByteBuffer toByteBuffer(String value, Exchange exchange) {
ByteBuffer buf = ByteBuffer.allocate(value.length());
- byte[] bytes = value.getBytes();
+ byte[] bytes = null;
+ if (exchange != null) {
+ String charsetName = (String)exchange.getProperty(Exchange.CHARSET_NAME);
+ if (charsetName != null) {
+ try {
+ bytes = value.getBytes(charsetName);
+ } catch (UnsupportedEncodingException e) {
+ LOG.warn("Can't convert the byte to String with the charset " + charsetName, e);
+ }
+ }
+ }
+ if (bytes == null) {
+ bytes = value.getBytes();
+ }
buf.put(bytes);
return buf;
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java Mon Sep 1 02:29:48 2008
@@ -144,7 +144,9 @@
}
MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange, sync);
-
+ if (encoding != null) {
+ endpoint.setCharsetName(getEncodingParameter("MinaProducer", encoding).name());
+ }
// set sync or async mode after endpoint is created
if (sync) {
endpoint.setExchangePattern(ExchangePattern.InOut);
@@ -204,7 +206,9 @@
}
MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange, sync);
-
+ if (encoding != null) {
+ endpoint.setCharsetName(getEncodingParameter("MinaProducer", encoding).name());
+ }
// set sync or async mode after endpoint is created
if (sync) {
endpoint.setExchangePattern(ExchangePattern.InOut);
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -19,6 +19,7 @@
import java.net.SocketAddress;
import org.apache.camel.CamelException;
+import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultConsumer;
import org.apache.camel.util.ExchangeHelper;
@@ -94,6 +95,10 @@
}
MinaExchange exchange = endpoint.createExchange(session, object);
+ //Set the exchange charset property for converting
+ if (endpoint.getCharsetName() != null) {
+ exchange.setProperty(Exchange.CHARSET_NAME, endpoint.getCharsetName());
+ }
getProcessor().process(exchange);
// if sync then we should return a response
@@ -106,12 +111,23 @@
}
boolean failed = exchange.isFailed();
- if (failed) {
+ /*if (failed) {
// can not write a response since the exchange is failed and we don't know in what state the
// in/out messages are in so the session is closed
LOG.warn("Can not write body since the exchange is failed, closing session: " + exchange);
session.close();
- } else if (body == null) {
+ if (exchange.getException() != null) {
+ throw new CamelException(exchange.getException());
+ }
+ if (exchange.getFault(false) != null) {
+ if (exchange.getFault().getBody() instanceof Throwable) {
+ System.out.println("throw the exception here");
+ throw new CamelException((Throwable)exchange.getFault().getBody());
+ }
+ }
+
+ } else*/
+ 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)
LOG.warn("Can not write body since its null, closing session: " + exchange);
@@ -123,7 +139,7 @@
}
MinaHelper.writeBody(session, body, exchange);
}
- }
+ }
}
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java Mon Sep 1 02:29:48 2008
@@ -21,6 +21,7 @@
import java.io.ObjectInput;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.camel.converter.IOConverter;
import org.apache.mina.common.ByteBuffer;
@@ -48,9 +49,8 @@
}
@Converter
- public static String toString(ByteBuffer buffer) {
- // TODO: CAMEL-381, we should have type converters to strings that accepts a Charset parameter to handle encoding
- return IOConverter.toString(toByteArray(buffer));
+ public static String toString(ByteBuffer buffer, Exchange exchange) {
+ return IOConverter.toString(toByteArray(buffer), exchange);
}
@Converter
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java Mon Sep 1 02:29:48 2008
@@ -17,6 +17,7 @@
package org.apache.camel.component.mina;
import java.net.SocketAddress;
+import java.nio.charset.Charset;
import org.apache.camel.Consumer;
import org.apache.camel.ExchangePattern;
@@ -47,6 +48,7 @@
private final boolean lazySessionCreation;
private final boolean transferExchange;
private final boolean sync;
+ private String charsetName;
public MinaEndpoint(String endpointUri, MinaComponent component, SocketAddress address,
IoAcceptor acceptor, IoAcceptorConfig acceptorConfig, IoConnector connector,
@@ -67,6 +69,7 @@
this.sync = sync;
}
+
@SuppressWarnings({"unchecked"})
public Producer<MinaExchange> createProducer() throws Exception {
return new MinaProducer(this);
@@ -128,4 +131,12 @@
public boolean isSync() {
return sync;
}
+
+ public void setCharsetName(String charset) {
+ this.charsetName = charset;
+ }
+
+ public String getCharsetName() {
+ return charsetName;
+ }
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java Mon Sep 1 02:29:48 2008
@@ -35,7 +35,7 @@
public static Object getIn(MinaEndpoint endpoint, Exchange exchange) {
if (endpoint.isTransferExchange()) {
- // we should transfer the entire exchange over the wire (includes in/out)
+ // we should transfer the entire exchange over the wire (includes in/out)\
return MinaPayloadHolder.marshal(exchange);
} else {
// normal transfer using the body only
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -33,6 +33,8 @@
* <li>out body</li>
* <li>in headers</li>
* <li>out headers</li>
+ * <li>fault body </li>
+ * <li>fault headers</li>
* <li>exchange properties</li>
* <li>exception</li>
* </ul>
@@ -44,9 +46,11 @@
private Object inBody;
private Object outBody;
+ private Object faultBody;
private Map<String, Object> inHeaders = new LinkedHashMap<String, Object>();
private Map<String, Object> outHeaders = new LinkedHashMap<String, Object>();
private Map<String, Object> properties = new LinkedHashMap<String, Object>();
+ private Map<String, Object> faultHeaders = new LinkedHashMap<String, Object>();
private Throwable exception;
/**
@@ -66,7 +70,11 @@
payload.outHeaders.putAll(exchange.getOut().getHeaders());
payload.properties.putAll(exchange.getProperties());
payload.exception = exchange.getException();
-
+ if (exchange.getFault(false) != null) {
+ payload.faultBody = exchange.getFault().getBody();
+ payload.faultHeaders.putAll(exchange.getFault().getHeaders());
+ }
+ System.out.println("marshal " + payload);
return payload;
}
@@ -81,6 +89,10 @@
exchange.getOut().setBody(payload.outBody);
exchange.getIn().setHeaders(payload.inHeaders);
exchange.getOut().setHeaders(payload.outHeaders);
+ if (payload.faultBody != null) {
+ exchange.getFault().setBody(payload.faultBody);
+ exchange.getFault().setHeaders(payload.faultHeaders);
+ }
for (String key : payload.properties.keySet()) {
exchange.setProperty(key, payload.properties.get(key));
}
@@ -89,8 +101,8 @@
public String toString() {
return "MinaPayloadHolder{" + "inBody=" + inBody + ", outBody=" + outBody + ", inHeaders="
- + inHeaders + ", outHeaders=" + outHeaders + ", properties=" + properties + ", exception="
- + exception + '}';
+ + inHeaders + ", outHeaders=" + outHeaders + ", faultBody=" + faultBody + " , faultHeaders="
+ + faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
}
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java Mon Sep 1 02:29:48 2008
@@ -134,7 +134,7 @@
if (session != null) {
session.close();
}
-
+
super.doStop();
}
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java Mon Sep 1 02:29:48 2008
@@ -42,7 +42,7 @@
String in = "Hello World";
ByteBuffer bb = ByteBuffer.wrap(in.getBytes());
- String out = MinaConverter.toString(bb);
+ String out = MinaConverter.toString(bb, null);
assertEquals("Hello World", out);
}
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -34,9 +34,19 @@
*/
public class MinaTransferExchangeOptionTest extends ContextTestSupport {
- private static final String URI = "mina:tcp://localhost:6321?sync=true&transferExchange=true";
+ private static final String URI = "mina:tcp://localhost:6321?sync=true&encoding=UTF-8&transferExchange=true";
- public void testMinaTransferExchangeOption() throws Exception {
+ public void testMianTransferExchangeOptionWithoutException() throws Exception {
+ Exchange exchange = sendExchange(false);
+ assertExchange(exchange, false);
+ }
+
+ public void testMinaTransferExchangeOptionWithException() throws Exception {
+ Exchange exchange = sendExchange(true);
+ assertExchange(exchange, true);
+ }
+
+ private Exchange sendExchange(boolean setException) throws Exception {
Endpoint endpoint = context.getEndpoint(URI);
Exchange exchange = endpoint.createExchange();
@@ -44,16 +54,28 @@
message.setBody("Hello!");
message.setHeader("cheese", "feta");
exchange.setProperty("ham", "old");
+ exchange.setProperty("setException", setException);
Producer producer = endpoint.createProducer();
producer.start();
producer.process(exchange);
- Message out = exchange.getOut();
- assertNotNull(out);
- assertEquals("Goodbye!", out.getBody());
- assertEquals("cheddar", out.getHeader("cheese"));
- assertEquals("fresh", exchange.getProperty("salami"));
+ return exchange;
+ }
+
+ private void assertExchange(Exchange exchange, boolean hasFault) {
+ if (!hasFault) {
+ Message out = exchange.getOut();
+ assertNotNull(out);
+ assertEquals("Goodbye!", out.getBody());
+ assertEquals("cheddar", out.getHeader("cheese"));
+ } else {
+ Message fault = exchange.getFault();
+ assertNotNull(fault);
+ assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
+ assertEquals("nihao", fault.getHeader("hello"));
+ }
+
// in should stay the same
Message in = exchange.getIn();
@@ -76,9 +98,15 @@
Assert.assertEquals("feta", e.getIn().getHeader("cheese"));
Assert.assertEquals("old", e.getProperty("ham"));
Assert.assertEquals(ExchangePattern.InOut, e.getPattern());
+ Boolean setException = (Boolean) e.getProperty("setException");
- e.getOut().setBody("Goodbye!");
- e.getOut().setHeader("cheese", "cheddar");
+ if (setException) {
+ e.getFault().setBody(new InterruptedException());
+ e.getFault().setHeader("hello", "nihao");
+ } else {
+ e.getOut().setBody("Goodbye!");
+ e.getOut().setHeader("cheese", "cheddar");
+ }
e.setProperty("salami", "fresh");
}
});
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java Mon Sep 1 02:29:48 2008
@@ -70,7 +70,7 @@
from("mina:udp://127.0.0.1:" + PORT + "?sync=true").process(new Processor() {
public void process(Exchange exchange) throws Exception {
ByteBuffer in = exchange.getIn().getBody(ByteBuffer.class);
- String s = MinaConverter.toString(in);
+ String s = MinaConverter.toString(in, exchange);
exchange.getOut().setBody("Hello " + s);
}
});
RE: svn commit: r690920 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/converter/ components/camel-mina/src/main/java/org/apache/camel/component/mina/ components/camel-mina/src/test/java/or
Posted by Claus Ibsen <ci...@silverbullet.dk>.
Hi Willem
You should use the getProperty method that take the expected type.
+ String charsetName = (String) exchange.getProperty(Exchange.CHARSET_NAME);
Should be
+ String charsetName = exchange.getProperty(Exchange.CHARSET_NAME, String.class);
Chatting about camel 2.0 and talked about if we needed such a method. But we got it already:
jstrachan should be String name = exchange.getProperty(..., String.class);
jstrachan as that avoids classcastexception and also uses the type converters
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: 1. september 2008 11:30
To: camel-commits@activemq.apache.org
Subject: svn commit: r690920 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/converter/ components/camel-mina/src/main/java/org/apache/camel/component/mina/ components/camel-mina/src/test/java/org...
Author: ningjiang
Date: Mon Sep 1 02:29:48 2008
New Revision: 690920
URL: http://svn.apache.org/viewvc?rev=690920&view=rev
Log:
CAMEL-873 CAMEL-400
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
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/MinaConverter.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHolder.java
activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTransferExchangeOptionTest.java
activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Exchange.java Mon Sep 1 02:29:48 2008
@@ -29,7 +29,9 @@
* @version $Revision$
*/
public interface Exchange {
-
+
+ String CHARSET_NAME = "org.apache.camel.Exchange.CharsetName";
+
/**
* Returns the {@link ExchangePattern} (MEP) of this exchange.
*
@@ -173,7 +175,7 @@
* Returns true if this exchange is transacted
*/
boolean isTransacted();
-
+
/**
* Returns the container so that a processor can resolve endpoints from URIs
*
@@ -194,7 +196,7 @@
/**
* Copies the data into this exchange from the given exchange
- *
+ *
* @param source is the source from which headers and messages will be copied
*/
void copyFrom(Exchange source);
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/IOConverter.java Mon Sep 1 02:29:48 2008
@@ -39,8 +39,10 @@
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.StringReader;
+import java.io.UnsupportedEncodingException;
import java.io.Writer;
import java.net.URL;
+import java.nio.charset.Charset;
import java.util.Properties;
import javax.xml.transform.OutputKeys;
@@ -52,6 +54,7 @@
import javax.xml.transform.stream.StreamResult;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.camel.util.CollectionStringBuffer;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -135,10 +138,21 @@
}
@Converter
- public static String toString(byte[] data) {
+ public static String toString(byte[] data, Exchange exchange) {
+ if (exchange != null) {
+ String charsetName = (String) exchange.getProperty(Exchange.CHARSET_NAME);
+ if (charsetName != null) {
+ try {
+ return new String(data, charsetName);
+ } catch (UnsupportedEncodingException e) {
+ LOG.warn("Can't convert the byte to String with the charset " + charsetName, e);
+ }
+ }
+ }
return new String(data);
}
+
@Converter
public static String toString(File file) throws IOException {
return toString(toReader(file));
@@ -226,7 +240,7 @@
return new ObjectInputStream(stream);
}
}
-
+
@Converter
public static byte[] toBytes(InputStream stream) throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/NIOConverter.java Mon Sep 1 02:29:48 2008
@@ -21,9 +21,12 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.UnsupportedEncodingException;
import java.nio.ByteBuffer;
+import java.nio.charset.Charset;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -49,8 +52,8 @@
}
@Converter
- public static String toString(ByteBuffer buffer) {
- return IOConverter.toString(buffer.array());
+ public static String toString(ByteBuffer buffer, Exchange exchange) {
+ return IOConverter.toString(buffer.array(), exchange);
}
@Converter
@@ -84,9 +87,22 @@
}
@Converter
- public static ByteBuffer toByteBuffer(String value) {
+ public static ByteBuffer toByteBuffer(String value, Exchange exchange) {
ByteBuffer buf = ByteBuffer.allocate(value.length());
- byte[] bytes = value.getBytes();
+ byte[] bytes = null;
+ if (exchange != null) {
+ String charsetName = (String)exchange.getProperty(Exchange.CHARSET_NAME);
+ if (charsetName != null) {
+ try {
+ bytes = value.getBytes(charsetName);
+ } catch (UnsupportedEncodingException e) {
+ LOG.warn("Can't convert the byte to String with the charset " + charsetName, e);
+ }
+ }
+ }
+ if (bytes == null) {
+ bytes = value.getBytes();
+ }
buf.put(bytes);
return buf;
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaComponent.java Mon Sep 1 02:29:48 2008
@@ -144,7 +144,9 @@
}
MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange, sync);
-
+ if (encoding != null) {
+ endpoint.setCharsetName(getEncodingParameter("MinaProducer", encoding).name());
+ }
// set sync or async mode after endpoint is created
if (sync) {
endpoint.setExchangePattern(ExchangePattern.InOut);
@@ -204,7 +206,9 @@
}
MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation, timeout, transferExchange, sync);
-
+ if (encoding != null) {
+ endpoint.setCharsetName(getEncodingParameter("MinaProducer", encoding).name());
+ }
// set sync or async mode after endpoint is created
if (sync) {
endpoint.setExchangePattern(ExchangePattern.InOut);
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -19,6 +19,7 @@
import java.net.SocketAddress;
import org.apache.camel.CamelException;
+import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.impl.DefaultConsumer;
import org.apache.camel.util.ExchangeHelper;
@@ -94,6 +95,10 @@
}
MinaExchange exchange = endpoint.createExchange(session, object);
+ //Set the exchange charset property for converting
+ if (endpoint.getCharsetName() != null) {
+ exchange.setProperty(Exchange.CHARSET_NAME, endpoint.getCharsetName());
+ }
getProcessor().process(exchange);
// if sync then we should return a response
@@ -106,12 +111,23 @@
}
boolean failed = exchange.isFailed();
- if (failed) {
+ /*if (failed) {
// can not write a response since the exchange is failed and we don't know in what state the
// in/out messages are in so the session is closed
LOG.warn("Can not write body since the exchange is failed, closing session: " + exchange);
session.close();
- } else if (body == null) {
+ if (exchange.getException() != null) {
+ throw new CamelException(exchange.getException());
+ }
+ if (exchange.getFault(false) != null) {
+ if (exchange.getFault().getBody() instanceof Throwable) {
+ System.out.println("throw the exception here");
+ throw new CamelException((Throwable)exchange.getFault().getBody());
+ }
+ }
+
+ } else*/
+ 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)
LOG.warn("Can not write body since its null, closing session: " + exchange);
@@ -123,7 +139,7 @@
}
MinaHelper.writeBody(session, body, exchange);
}
- }
+ }
}
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConverter.java Mon Sep 1 02:29:48 2008
@@ -21,6 +21,7 @@
import java.io.ObjectInput;
import org.apache.camel.Converter;
+import org.apache.camel.Exchange;
import org.apache.camel.converter.IOConverter;
import org.apache.mina.common.ByteBuffer;
@@ -48,9 +49,8 @@
}
@Converter
- public static String toString(ByteBuffer buffer) {
- // TODO: CAMEL-381, we should have type converters to strings that accepts a Charset parameter to handle encoding
- return IOConverter.toString(toByteArray(buffer));
+ public static String toString(ByteBuffer buffer, Exchange exchange) {
+ return IOConverter.toString(toByteArray(buffer), exchange);
}
@Converter
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaEndpoint.java Mon Sep 1 02:29:48 2008
@@ -17,6 +17,7 @@
package org.apache.camel.component.mina;
import java.net.SocketAddress;
+import java.nio.charset.Charset;
import org.apache.camel.Consumer;
import org.apache.camel.ExchangePattern;
@@ -47,6 +48,7 @@
private final boolean lazySessionCreation;
private final boolean transferExchange;
private final boolean sync;
+ private String charsetName;
public MinaEndpoint(String endpointUri, MinaComponent component, SocketAddress address,
IoAcceptor acceptor, IoAcceptorConfig acceptorConfig, IoConnector connector,
@@ -67,6 +69,7 @@
this.sync = sync;
}
+
@SuppressWarnings({"unchecked"})
public Producer<MinaExchange> createProducer() throws Exception {
return new MinaProducer(this);
@@ -128,4 +131,12 @@
public boolean isSync() {
return sync;
}
+
+ public void setCharsetName(String charset) {
+ this.charsetName = charset;
+ }
+
+ public String getCharsetName() {
+ return charsetName;
+ }
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaPayloadHelper.java Mon Sep 1 02:29:48 2008
@@ -35,7 +35,7 @@
public static Object getIn(MinaEndpoint endpoint, Exchange exchange) {
if (endpoint.isTransferExchange()) {
- // we should transfer the entire exchange over the wire (includes in/out)
+ // we should transfer the entire exchange over the wire (includes in/out)\
return MinaPayloadHolder.marshal(exchange);
} else {
// normal transfer using the body only
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -33,6 +33,8 @@
* <li>out body</li>
* <li>in headers</li>
* <li>out headers</li>
+ * <li>fault body </li>
+ * <li>fault headers</li>
* <li>exchange properties</li>
* <li>exception</li>
* </ul>
@@ -44,9 +46,11 @@
private Object inBody;
private Object outBody;
+ private Object faultBody;
private Map<String, Object> inHeaders = new LinkedHashMap<String, Object>();
private Map<String, Object> outHeaders = new LinkedHashMap<String, Object>();
private Map<String, Object> properties = new LinkedHashMap<String, Object>();
+ private Map<String, Object> faultHeaders = new LinkedHashMap<String, Object>();
private Throwable exception;
/**
@@ -66,7 +70,11 @@
payload.outHeaders.putAll(exchange.getOut().getHeaders());
payload.properties.putAll(exchange.getProperties());
payload.exception = exchange.getException();
-
+ if (exchange.getFault(false) != null) {
+ payload.faultBody = exchange.getFault().getBody();
+ payload.faultHeaders.putAll(exchange.getFault().getHeaders());
+ }
+ System.out.println("marshal " + payload);
return payload;
}
@@ -81,6 +89,10 @@
exchange.getOut().setBody(payload.outBody);
exchange.getIn().setHeaders(payload.inHeaders);
exchange.getOut().setHeaders(payload.outHeaders);
+ if (payload.faultBody != null) {
+ exchange.getFault().setBody(payload.faultBody);
+ exchange.getFault().setHeaders(payload.faultHeaders);
+ }
for (String key : payload.properties.keySet()) {
exchange.setProperty(key, payload.properties.get(key));
}
@@ -89,8 +101,8 @@
public String toString() {
return "MinaPayloadHolder{" + "inBody=" + inBody + ", outBody=" + outBody + ", inHeaders="
- + inHeaders + ", outHeaders=" + outHeaders + ", properties=" + properties + ", exception="
- + exception + '}';
+ + inHeaders + ", outHeaders=" + outHeaders + ", faultBody=" + faultBody + " , faultHeaders="
+ + faultHeaders + ", properties=" + properties + ", exception=" + exception + '}';
}
}
Modified: activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaProducer.java Mon Sep 1 02:29:48 2008
@@ -134,7 +134,7 @@
if (session != null) {
session.close();
}
-
+
super.doStop();
}
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java Mon Sep 1 02:29:48 2008
@@ -42,7 +42,7 @@
String in = "Hello World";
ByteBuffer bb = ByteBuffer.wrap(in.getBytes());
- String out = MinaConverter.toString(bb);
+ String out = MinaConverter.toString(bb, null);
assertEquals("Hello World", out);
}
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=690920&r1=690919&r2=690920&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 Mon Sep 1 02:29:48 2008
@@ -34,9 +34,19 @@
*/
public class MinaTransferExchangeOptionTest extends ContextTestSupport {
- private static final String URI = "mina:tcp://localhost:6321?sync=true&transferExchange=true";
+ private static final String URI = "mina:tcp://localhost:6321?sync=true&encoding=UTF-8&transferExchange=true";
- public void testMinaTransferExchangeOption() throws Exception {
+ public void testMianTransferExchangeOptionWithoutException() throws Exception {
+ Exchange exchange = sendExchange(false);
+ assertExchange(exchange, false);
+ }
+
+ public void testMinaTransferExchangeOptionWithException() throws Exception {
+ Exchange exchange = sendExchange(true);
+ assertExchange(exchange, true);
+ }
+
+ private Exchange sendExchange(boolean setException) throws Exception {
Endpoint endpoint = context.getEndpoint(URI);
Exchange exchange = endpoint.createExchange();
@@ -44,16 +54,28 @@
message.setBody("Hello!");
message.setHeader("cheese", "feta");
exchange.setProperty("ham", "old");
+ exchange.setProperty("setException", setException);
Producer producer = endpoint.createProducer();
producer.start();
producer.process(exchange);
- Message out = exchange.getOut();
- assertNotNull(out);
- assertEquals("Goodbye!", out.getBody());
- assertEquals("cheddar", out.getHeader("cheese"));
- assertEquals("fresh", exchange.getProperty("salami"));
+ return exchange;
+ }
+
+ private void assertExchange(Exchange exchange, boolean hasFault) {
+ if (!hasFault) {
+ Message out = exchange.getOut();
+ assertNotNull(out);
+ assertEquals("Goodbye!", out.getBody());
+ assertEquals("cheddar", out.getHeader("cheese"));
+ } else {
+ Message fault = exchange.getFault();
+ assertNotNull(fault);
+ assertTrue("Should get the InterrupteException exception", fault.getBody() instanceof InterruptedException);
+ assertEquals("nihao", fault.getHeader("hello"));
+ }
+
// in should stay the same
Message in = exchange.getIn();
@@ -76,9 +98,15 @@
Assert.assertEquals("feta", e.getIn().getHeader("cheese"));
Assert.assertEquals("old", e.getProperty("ham"));
Assert.assertEquals(ExchangePattern.InOut, e.getPattern());
+ Boolean setException = (Boolean) e.getProperty("setException");
- e.getOut().setBody("Goodbye!");
- e.getOut().setHeader("cheese", "cheddar");
+ if (setException) {
+ e.getFault().setBody(new InterruptedException());
+ e.getFault().setHeader("hello", "nihao");
+ } else {
+ e.getOut().setBody("Goodbye!");
+ e.getOut().setHeader("cheese", "cheddar");
+ }
e.setProperty("salami", "fresh");
}
});
Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java?rev=690920&r1=690919&r2=690920&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java Mon Sep 1 02:29:48 2008
@@ -70,7 +70,7 @@
from("mina:udp://127.0.0.1:" + PORT + "?sync=true").process(new Processor() {
public void process(Exchange exchange) throws Exception {
ByteBuffer in = exchange.getIn().getBody(ByteBuffer.class);
- String s = MinaConverter.toString(in);
+ String s = MinaConverter.toString(in, exchange);
exchange.getOut().setBody("Hello " + s);
}
});