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/ja

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

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/ja

Willem.Jiang
Administrator
Got that , you are a good code reviewer :)
I will fix it in my next commit.

Willem

On Thu, Sep 4, 2008 at 5:19 PM, Claus Ibsen <[hidden email]> wrote:

> 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: [hidden email] [mailto:[hidden email]]
> Sent: 1. september 2008 11:30
> To: [hidden email]
> 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);
>                     }
>                 });
>
>
>