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/03/08 15:56:01 UTC

svn commit: r634981 - in /activemq/camel/trunk/components/camel-mina: ./ src/main/java/org/apache/camel/component/mina/ src/test/java/org/apache/camel/component/mina/ src/test/resources/

Author: ningjiang
Date: Sat Mar  8 06:56:00 2008
New Revision: 634981

URL: http://svn.apache.org/viewvc?rev=634981&view=rev
Log:
CAMEL-356 patch applied with thanks to Claus

Added:
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java   (with props)
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java   (with props)
    activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties   (with props)
Modified:
    activemq/camel/trunk/components/camel-mina/pom.xml
    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/MinaEndpoint.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/MinaMulticastTest.java
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpWithInOutUsingPlainSocketTest.java
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpTest.java
    activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpUsingTemplateTest.java

Modified: activemq/camel/trunk/components/camel-mina/pom.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/pom.xml?rev=634981&r1=634980&r2=634981&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/pom.xml (original)
+++ activemq/camel/trunk/components/camel-mina/pom.xml Sat Mar  8 06:56:00 2008
@@ -65,6 +65,16 @@
       <artifactId>junit</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>log4j</groupId>
+      <artifactId>log4j</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
@@ -79,10 +89,7 @@
             <include>**/*Test.*</include>
           </includes>
           <excludes>
-            <exclude>**/MinaMulticastTest.*</exclude>
-            <!-- TODO this currently fails for some reason on our linux based CI server -->
-            <exclude>**/MinaTcpWithInOutUsingPlainSocketTest.*</exclude>
-            <!--<exclude>**/MinaUdpTest.*</exclude>-->
+            <!-- <exclude>**/XXXTest.*</exclude> -->
           </excludes>
         </configuration>
       </plugin>

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=634981&r1=634980&r2=634981&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 Sat Mar  8 06:56:00 2008
@@ -16,7 +16,6 @@
  */
 package org.apache.camel.component.mina;
 
-import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
 import java.net.URI;
@@ -33,8 +32,8 @@
 import org.apache.mina.common.ByteBuffer;
 import org.apache.mina.common.IoAcceptor;
 import org.apache.mina.common.IoConnector;
+import org.apache.mina.common.IoServiceConfig;
 import org.apache.mina.common.IoSession;
-import org.apache.mina.common.support.BaseIoConnectorConfig;
 import org.apache.mina.filter.codec.ProtocolCodecFactory;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.codec.ProtocolDecoder;
@@ -44,9 +43,11 @@
 import org.apache.mina.filter.codec.serialization.ObjectSerializationCodecFactory;
 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
 import org.apache.mina.transport.socket.nio.DatagramAcceptor;
+import org.apache.mina.transport.socket.nio.DatagramAcceptorConfig;
 import org.apache.mina.transport.socket.nio.DatagramConnector;
 import org.apache.mina.transport.socket.nio.DatagramConnectorConfig;
 import org.apache.mina.transport.socket.nio.SocketAcceptor;
+import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;
 import org.apache.mina.transport.socket.nio.SocketConnector;
 import org.apache.mina.transport.socket.nio.SocketConnectorConfig;
 import org.apache.mina.transport.vmpipe.VmPipeAcceptor;
@@ -54,7 +55,8 @@
 import org.apache.mina.transport.vmpipe.VmPipeConnector;
 
 /**
- * The component for using the Mina libaray
+ * The component for using Apache MINA.
+ * 
  * @version $Revision$
  */
 public class MinaComponent extends DefaultComponent<MinaExchange> {
@@ -82,7 +84,7 @@
             return createVmEndpoint(uri, u);
         }
         else {
-            throw new IOException("Unrecognised MINA protocol: " + protocol + " for uri: " + uri);
+            throw new IllegalArgumentException("Unrecognised MINA protocol: " + protocol + " for uri: " + uri);
         }
     }
 
@@ -90,7 +92,7 @@
         IoAcceptor acceptor = new VmPipeAcceptor();
         SocketAddress address = new VmPipeAddress(connectUri.getPort());
         IoConnector connector = new VmPipeConnector();
-        return new MinaEndpoint(uri, this, address, acceptor, connector, null, false);
+        return new MinaEndpoint(uri, this, address, acceptor, null, connector, null, false);
     }
 
     protected MinaEndpoint createSocketEndpoint(String uri, URI connectUri, Map parameters) {
@@ -98,13 +100,24 @@
         SocketAddress address = new InetSocketAddress(connectUri.getHost(), connectUri.getPort());
         IoConnector connector = new SocketConnector();
 
-        // TODO customize the config via URI
-        SocketConnectorConfig config = new SocketConnectorConfig();
-        configureSocketCodecFactory(config, parameters);
-        
+        // connector config
+        SocketConnectorConfig connectorConfig = new SocketConnectorConfig();
+        configureSocketCodecFactory(connectorConfig, parameters);
+        // TODO: verbose logging from Mina should use our logger instead of MINA INFO logger
+        //connectorConfig.getFilterChain().addLast("logger", new LoggingFilter());
+
+        // acceptor connectorConfig
+        SocketAcceptorConfig acceptorConfig = new SocketAcceptorConfig();
+        configureSocketCodecFactory(acceptorConfig, parameters);
+        acceptorConfig.setReuseAddress(true);
+        acceptorConfig.setDisconnectOnUnbind(true);
+        // TODO: verbose logging from Mina should use our logger instead of MINA INFO logger
+        //acceptorConfig.getFilterChain().addLast("logger", new LoggingFilter());
+
+
         boolean lazySessionCreation = ObjectConverter.toBool(parameters.get("lazySessionCreation"));
         
-        MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, connector, config, lazySessionCreation);
+        MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation);
 
         boolean sync = ObjectConverter.toBool(parameters.get("sync"));
         if (sync) {
@@ -116,7 +129,7 @@
         return endpoint;
     }
 
-    protected void configureSocketCodecFactory(BaseIoConnectorConfig config, Map parameters) {
+    protected void configureSocketCodecFactory(IoServiceConfig config, Map parameters) {
         ProtocolCodecFactory codecFactory = getCodecFactory(parameters);
 
         boolean textline = false;
@@ -138,22 +151,38 @@
         IoAcceptor acceptor = new DatagramAcceptor();
         SocketAddress address = new InetSocketAddress(connectUri.getHost(), connectUri.getPort());
         IoConnector connector = new DatagramConnector();
-
-        // TODO customize the config via URI
-        DatagramConnectorConfig config = new DatagramConnectorConfig();
-
-        configureDataGramCodecFactory(config, parameters);
+        
+        DatagramConnectorConfig connectorConfig = new DatagramConnectorConfig();
+        configureDataGramCodecFactory(connectorConfig, parameters);
+        // TODO: verbose logging from Mina should use our logger instead of MINA INFO logger
+        //connectorConfig.getFilterChain().addLast("logger", new LoggingFilter());
+
+        DatagramAcceptorConfig acceptorConfig = new DatagramAcceptorConfig();
+        configureDataGramCodecFactory(acceptorConfig, parameters);
+        acceptorConfig.setDisconnectOnUnbind(true);
+        // reuse address is default true for datagram
+        // TODO: verbose logging from Mina should use our logger instead of MINA INFO logger
+        //acceptorConfig.getFilterChain().addLast("logger", new LoggingFilter());
 
         boolean lazySessionCreation = ObjectConverter.toBool(parameters.get("lazySessionCreation"));
         
-        return new MinaEndpoint(uri, this, address, acceptor, connector, config, lazySessionCreation);
+        MinaEndpoint endpoint = new MinaEndpoint(uri, this, address, acceptor, acceptorConfig, connector, connectorConfig, lazySessionCreation);
+
+        boolean sync = ObjectConverter.toBool(parameters.get("sync"));
+        if (sync) {
+            endpoint.setExchangePattern(ExchangePattern.InOut);
+        } else {
+            endpoint.setExchangePattern(ExchangePattern.InOnly);
+        }
+
+        return endpoint;
     }
 
     /**
      * For datagrams the entire message is available as a single ByteBuffer so lets just pass those around by default
      * and try converting whatever they payload is into ByteBuffers unless some custom converter is specified
      */
-    protected void configureDataGramCodecFactory(BaseIoConnectorConfig config, Map parameters) {
+    protected void configureDataGramCodecFactory(IoServiceConfig config, Map parameters) {
         ProtocolCodecFactory codecFactory = getCodecFactory(parameters);
         if (codecFactory == null) {
             codecFactory = new ProtocolCodecFactory() {
@@ -187,7 +216,6 @@
             };
         }
         addCodecFactory(config, codecFactory);
-        //addCodecFactory(config, new TextLineCodecFactory());
     }
 
     protected ByteBuffer toByteBuffer(Object message) throws CharacterCodingException {
@@ -220,7 +248,8 @@
         return codecFactory;
     }
 
-    protected void addCodecFactory(BaseIoConnectorConfig config, ProtocolCodecFactory codecFactory) {
+    protected void addCodecFactory(IoServiceConfig config, ProtocolCodecFactory codecFactory) {
         config.getFilterChain().addLast("codec", new ProtocolCodecFilter(codecFactory));
     }
+    
 }

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=634981&r1=634980&r2=634981&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 Sat Mar  8 06:56:00 2008
@@ -59,8 +59,10 @@
             @Override
             public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
                 // close invalid session
-                LOG.debug("Closing session as an exception was thrown from MINA");
-                session.close();
+                if (session != null) {
+                    LOG.debug("Closing session as an exception was thrown from MINA");
+                    session.close();
+                }
 
                 // must wrap and rethrow since cause can be of Throwable and we must only throw Exception
                 throw new CamelException(cause);
@@ -98,11 +100,14 @@
             }
         };
 
-        acceptor.bind(address, handler, endpoint.getConfig());
+        acceptor.bind(address, handler, endpoint.getAcceptorConfig());
     }
 
     @Override
     protected void doStop() throws Exception {
+        if (LOG.isDebugEnabled()) {
+            LOG.debug("Unbinding from server address: " + address + " using acceptor: " + acceptor);
+        }
         acceptor.unbind(address);
         super.doStop();
     }

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=634981&r1=634980&r2=634981&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 Sat Mar  8 06:56:00 2008
@@ -24,25 +24,30 @@
 import org.apache.camel.ExchangePattern;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.mina.common.IoAcceptor;
+import org.apache.mina.common.IoAcceptorConfig;
 import org.apache.mina.common.IoConnector;
-import org.apache.mina.common.IoServiceConfig;
+import org.apache.mina.common.IoConnectorConfig;
 import org.apache.mina.common.IoSession;
 
 /**
+ * Endpoint for Camel MINA. 
+ *
  * @version $Revision$
  */
 public class MinaEndpoint extends DefaultEndpoint<MinaExchange> {
     private final IoAcceptor acceptor;
     private final SocketAddress address;
     private final IoConnector connector;
-    private final IoServiceConfig config;
+    private final IoAcceptorConfig acceptorConfig;
+    private final IoConnectorConfig connectorConfig;
     private final boolean lazySessionCreation;
 
-    public MinaEndpoint(String endpointUri, MinaComponent component, SocketAddress address, IoAcceptor acceptor, IoConnector connector, IoServiceConfig config, boolean lazySessionCreation) {
+    public MinaEndpoint(String endpointUri, MinaComponent component, SocketAddress address, IoAcceptor acceptor, IoAcceptorConfig acceptorConfig, IoConnector connector, IoConnectorConfig connectorConfig, boolean lazySessionCreation) {
         super(endpointUri, component);
-        this.config = config;
         this.address = address;
         this.acceptor = acceptor;
+        this.acceptorConfig = acceptorConfig;
+        this.connectorConfig = connectorConfig;
         this.connector = connector;
         this.lazySessionCreation = lazySessionCreation;
     }
@@ -81,14 +86,18 @@
         return connector;
     }
 
-    public IoServiceConfig getConfig() {
-        return config;
-    }
-
     public boolean getLazySessionCreation() {
     	return lazySessionCreation;
     }
-    
+
+    public IoAcceptorConfig getAcceptorConfig() {
+        return acceptorConfig;
+    }
+
+    public IoConnectorConfig getConnectorConfig() {
+        return connectorConfig;
+    }
+
     public boolean isSingleton() {
         return true;
     }

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=634981&r1=634980&r2=634981&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 Sat Mar  8 06:56:00 2008
@@ -22,6 +22,7 @@
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Producer;
+import org.apache.camel.CamelException;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.camel.util.ExchangeHelper;
 import org.apache.commons.logging.Log;
@@ -40,6 +41,7 @@
  */
 public class MinaProducer extends DefaultProducer {
     private static final transient Log LOG = LogFactory.getLog(MinaProducer.class);
+    // TODO: The max wait response should be configurable
     private static final long MAX_WAIT_RESPONSE = 10000;
     private IoSession session;
     private MinaEndpoint endpoint;
@@ -66,23 +68,27 @@
         } else {
             if (ExchangeHelper.isOutCapable(exchange)) {
                 if (LOG.isDebugEnabled()) {
-                    LOG.debug("Writing body : " + body);
+                    LOG.debug("Writing body: " + body);
                 }
+
+                // write the body
                 latch = new CountDownLatch(1);
                 WriteFuture future = session.write(body);
                 future.join();
                 if (!future.isWritten()) {
-                    throw new RuntimeException(
-                        "Timed out waiting for response: " + exchange);
+                    throw new CamelException("Timed out waiting for response: " + exchange);
                 }
+
+                // wait for response, consider timeout
                 latch.await(MAX_WAIT_RESPONSE, TimeUnit.MILLISECONDS);
                 if (latch.getCount() == 1) {
-                    throw new RuntimeException("No response from server within "
-                        + MAX_WAIT_RESPONSE + " millisecs");
+                    throw new CamelException("No response from server within " + MAX_WAIT_RESPONSE + " millisecs");
                 }
-                ResponseHandler handler = (ResponseHandler)session.getHandler();
+
+                // did we get a response
+                ResponseHandler handler = (ResponseHandler) session.getHandler();
                 if (handler.getCause() != null) {
-                    throw new Exception("Response Handler had an exception", handler.getCause());
+                    throw new CamelException("Response Handler had an exception", handler.getCause());
                 } else {
                     if (LOG.isDebugEnabled()) {
                         LOG.debug("Handler message: " + handler.getMessage());
@@ -116,7 +122,7 @@
             LOG.debug("Creating connector to address: " + address + " using connector: " + connector);
         }
         IoHandler ioHandler = new ResponseHandler(endpoint);
-        ConnectFuture future = connector.connect(address, ioHandler, endpoint.getConfig());
+        ConnectFuture future = connector.connect(address, ioHandler, endpoint.getConnectorConfig());
         future.join();
         session = future.getSession();
     }
@@ -131,9 +137,6 @@
         private Object message;
         private Throwable cause;
 
-        /**
-         * @param endpoint
-         */
         private ResponseHandler(MinaEndpoint endpoint) {
             this.endpoint = endpoint;
         }
@@ -175,4 +178,5 @@
             return this.message;
         }
     }
+
 }

Added: 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=634981&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java (added)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaConverterTest.java Sat Mar  8 06:56:00 2008
@@ -0,0 +1,54 @@
+package org.apache.camel.component.mina;
+
+import junit.framework.TestCase;
+import org.apache.mina.common.ByteBuffer;
+
+import java.io.InputStream;
+
+/**
+ * @version $Revision$ 
+ */
+public class MinaConverterTest extends TestCase {
+
+    public void testToByteArray() {
+        byte[] in = "Hello World".getBytes();
+        ByteBuffer bb = ByteBuffer.wrap(in);
+
+        byte[] out = MinaConverter.toByteArray(bb);
+
+        for (int i = 0; i < out.length; i++) {
+            assertEquals(in[i], out[i]);
+        }
+    }
+
+    public void testToString() {
+        String in = "Hello World";
+        ByteBuffer bb = ByteBuffer.wrap(in.getBytes());
+
+        String out = MinaConverter.toString(bb);
+        assertEquals("Hello World", out);
+    }
+
+    public void testToInputStream() throws Exception {
+        byte[] in = "Hello World".getBytes();
+        ByteBuffer bb = ByteBuffer.wrap(in);
+
+        InputStream is = MinaConverter.toInputStream(bb);
+        for (byte b : in) {
+            int out = is.read();
+            assertEquals(b, out);
+        }
+    }
+
+    public void testToByteBuffer() {
+        byte[] in = "Hello World".getBytes();
+
+        ByteBuffer bb = MinaConverter.toByteBuffer(in);
+        byte[] out = bb.array();
+
+        for (int i = 0; i < out.length; i++) {
+            assertEquals(in[i], out[i]);
+        }
+    }
+
+}

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

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

Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaMulticastTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaMulticastTest.java?rev=634981&r1=634980&r2=634981&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaMulticastTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaMulticastTest.java Sat Mar  8 06:56:00 2008
@@ -22,7 +22,7 @@
 public class MinaMulticastTest extends MinaVmTest {
     @Override
     protected void setUp() throws Exception {
-        uri = "mina:multicast://224.1.2.3:6255";
+        uri = "mina:multicast://127.0.0.1:6255";
         super.setUp();
     }
 }

Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpWithInOutUsingPlainSocketTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpWithInOutUsingPlainSocketTest.java?rev=634981&r1=634980&r2=634981&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpWithInOutUsingPlainSocketTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaTcpWithInOutUsingPlainSocketTest.java Sat Mar  8 06:56:00 2008
@@ -38,8 +38,9 @@
 
     protected CamelContext container = new DefaultCamelContext();
 
+    private static final int PORT = 6333;
     // use parameter sync=true to force InOut pattern of the MinaExchange
-    protected String uri = "mina:tcp://localhost:6333?textline=true&sync=true";
+    protected String uri = "mina:tcp://localhost:" + PORT + "?textline=true&sync=true";
 
     public void testSendAndReceiveOnce() throws Exception {
         String response = sendAndReceive("World");
@@ -58,12 +59,12 @@
         assertEquals("Hello Paris", paris);
     }
 
-    public void xtestReceiveNoResponseSinceOutBodyIsNull() throws Exception {
+    public void testReceiveNoResponseSinceOutBodyIsNull() throws Exception {
         String out = sendAndReceive("force-null-out-body");
         assertNull("no data should be recieved", out);
     }
 
-    public void xtestReceiveNoResponseSinceOutBodyIsNullTwice() throws Exception {
+    public void testReceiveNoResponseSinceOutBodyIsNullTwice() throws Exception {
         String out = sendAndReceive("force-null-out-body");
         assertNull("no data should be recieved", out);
 
@@ -81,7 +82,7 @@
         byte buf[] = new byte[128];
 
         Socket soc = new Socket();
-        soc.connect(new InetSocketAddress("localhost", 6333));
+        soc.connect(new InetSocketAddress("localhost", PORT));
 
         // Send message using plain Socket to test if this works
         OutputStream os = null;

Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpTest.java?rev=634981&r1=634980&r2=634981&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpTest.java Sat Mar  8 06:56:00 2008
@@ -16,8 +16,6 @@
  */
 package org.apache.camel.component.mina;
 
-import java.io.ByteArrayInputStream;
-import java.io.ObjectInputStream;
 import java.net.DatagramPacket;
 import java.net.DatagramSocket;
 import java.net.InetAddress;
@@ -65,7 +63,7 @@
             socket.send(packet);
             Thread.sleep(1000);
         }
-        System.out.println("Sent " + messageCount + " messages");
+        LOG.debug("Sent " + messageCount + " messages");
     }
 
     protected RouteBuilder createRouteBuilder() {
@@ -75,4 +73,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}

Modified: activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpUsingTemplateTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpUsingTemplateTest.java?rev=634981&r1=634980&r2=634981&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpUsingTemplateTest.java (original)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpUsingTemplateTest.java Sat Mar  8 06:56:00 2008
@@ -16,11 +16,6 @@
  */
 package org.apache.camel.component.mina;
 
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectOutputStream;
-import java.net.DatagramPacket;
-import java.net.DatagramSocket;
-import java.net.InetAddress;
 import java.util.List;
 
 import org.apache.camel.ContextTestSupport;
@@ -62,4 +57,4 @@
             }
         };
     }
-}
\ No newline at end of file
+}

Added: 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=634981&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java (added)
+++ activemq/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaUdpWithInOutUsingPlainSocketTest.java Sat Mar  8 06:56:00 2008
@@ -0,0 +1,68 @@
+package org.apache.camel.component.mina;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.util.ExchangeHelper;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.mina.common.ByteBuffer;
+
+import java.net.DatagramSocket;
+import java.net.InetAddress;
+import java.net.DatagramPacket;
+import java.nio.CharBuffer;
+import java.nio.charset.CharsetDecoder;
+
+/**
+ * To test InOut exchange for the UDP protocol.
+ */
+public class MinaUdpWithInOutUsingPlainSocketTest extends ContextTestSupport {
+
+    private static final transient Log LOG = LogFactory.getLog(MinaUdpWithInOutUsingPlainSocketTest.class);
+    private static final int PORT = 4445;
+
+    public void testSendAndReceiveOnce() throws Exception {
+        String out = sendAndReceiveUdpMessages("World");
+        assertNotNull("should receive data", out);
+        assertEquals("Hello World", out);
+    }
+
+    private String sendAndReceiveUdpMessages(String input) throws Exception {
+        DatagramSocket socket = new DatagramSocket();
+        InetAddress address = InetAddress.getByName("127.0.0.1");
+
+        byte[] data = input.getBytes();
+
+        DatagramPacket packet = new DatagramPacket(data, data.length, address, PORT);
+        LOG.debug("Sending data");
+        socket.send(packet);
+
+        Thread.sleep(1000);
+
+        byte[] buf = new byte[128];
+        DatagramPacket receive = new DatagramPacket(buf, buf.length, address, PORT);
+        LOG.debug("Receving data");
+        socket.receive(receive);
+
+        socket.close();
+
+        return new String(receive.getData(), 0, receive.getLength());
+    }
+
+    protected RouteBuilder createRouteBuilder() {
+        return new RouteBuilder() {
+            public void configure() {
+                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);
+                        exchange.getOut().setBody("Hello " + s);
+                    }
+                });
+            }
+        };
+    }
+    
+}

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

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

Added: activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties?rev=634981&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties (added)
+++ activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties Sat Mar  8 06:56:00 2008
@@ -0,0 +1,35 @@
+## ---------------------------------------------------------------------------
+## Licensed to the Apache Software Foundation (ASF) under one or more
+## contributor license agreements.  See the NOTICE file distributed with
+## this work for additional information regarding copyright ownership.
+## The ASF licenses this file to You under the Apache License, Version 2.0
+## (the "License"); you may not use this file except in compliance with
+## the License.  You may obtain a copy of the License at
+## 
+## http://www.apache.org/licenses/LICENSE-2.0
+## 
+## Unless required by applicable law or agreed to in writing, software
+## distributed under the License is distributed on an "AS IS" BASIS,
+## WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+## See the License for the specific language governing permissions and
+## limitations under the License.
+## ---------------------------------------------------------------------------
+
+#
+# The logging properties used during tests..
+#
+log4j.rootLogger=INFO, console, file
+
+# CONSOLE appender not used by default
+log4j.appender.console=org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout=org.apache.log4j.PatternLayout
+log4j.appender.console.layout.ConversionPattern=%d %-5p %c{1} - %m %n
+
+# File appender
+log4j.appender.file=org.apache.log4j.FileAppender
+log4j.appender.file.layout=org.apache.log4j.PatternLayout
+log4j.appender.file.layout.ConversionPattern=%d %-5p %c{1} - %m %n
+log4j.appender.file.file=target/camel-mina-test.log
+
+# debug loging for Camel
+log4j.logger.org.apache.camel.component.mina=DEBUG

Propchange: activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties
------------------------------------------------------------------------------
    svn:keywords = Rev Date

Propchange: activemq/camel/trunk/components/camel-mina/src/test/resources/log4j.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain