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