You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2009/02/20 16:02:50 UTC
svn commit: r746269 - in /camel/trunk/components/camel-mina/src:
main/java/org/apache/camel/component/mina/MinaConsumer.java
test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java
Author: davsclaus
Date: Fri Feb 20 15:02:50 2009
New Revision: 746269
URL: http://svn.apache.org/viewvc?rev=746269&view=rev
Log:
CAMEL-1362: added special header to indicate mina session should be closed when its complete, to eg by used when sending a BYE message.
Added:
camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java
- copied, changed from r746234, camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTest.java
Modified:
camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
Modified: camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java?rev=746269&r1=746268&r2=746269&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java (original)
+++ camel/trunk/components/camel-mina/src/main/java/org/apache/camel/component/mina/MinaConsumer.java Fri Feb 20 15:02:50 2009
@@ -36,6 +36,8 @@
* @version $Revision$
*/
public class MinaConsumer extends DefaultConsumer {
+ public static final transient String HEADER_CLOSE_SESSION_WHEN_COMPLETE = "CamelMinaCloseSessionWhenComplete";
+
private static final transient Log LOG = LogFactory.getLog(MinaConsumer.class);
private final MinaEndpoint endpoint;
@@ -109,6 +111,7 @@
} else {
body = MinaPayloadHelper.getIn(endpoint, exchange);
}
+
boolean failed = exchange.isFailed();
if (failed && !endpoint.getConfiguration().isTransferExchange()) {
if (exchange.getException() != null) {
@@ -129,8 +132,22 @@
LOG.debug("Writing body: " + body);
}
MinaHelper.writeBody(session, body, exchange);
+
}
}
+
+ // should session be closed after complete?
+ Boolean close;
+ if (ExchangeHelper.isOutCapable(exchange)) {
+ close = exchange.getOut().getHeader(HEADER_CLOSE_SESSION_WHEN_COMPLETE, Boolean.class);
+ } else {
+ close = exchange.getIn().getHeader(HEADER_CLOSE_SESSION_WHEN_COMPLETE, Boolean.class);
+ }
+
+ if (close != null && close) {
+ LOG.debug("Closing session when complete");
+ session.close();
+ }
}
}
Copied: camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java (from r746234, camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java?p2=camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java&p1=camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTest.java&r1=746234&r2=746269&rev=746269&view=diff
==============================================================================
--- camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutRouteTest.java (original)
+++ camel/trunk/components/camel-mina/src/test/java/org/apache/camel/component/mina/MinaInOutCloseSessionWhenCompleteTest.java Fri Feb 20 15:02:50 2009
@@ -20,24 +20,14 @@
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
-import org.apache.camel.component.mock.MockEndpoint;
/**
- * Unit test to verify that MINA can be used with an InOut MEP but still use sync to send and receive data
- * from a remote server.
+ * Unit test for close session when complete test.
*/
-public class MinaInOutRouteTest extends ContextTestSupport {
+public class MinaInOutCloseSessionWhenCompleteTest extends ContextTestSupport {
- public void testInOutUsingMina() throws Exception {
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedBodiesReceived("Bye Claus");
- // we should preserve headers
- mock.expectedHeaderReceived("city", "Copenhagen");
- mock.setResultWaitTime(5000);
-
- Object out = template.requestBodyAndHeader("direct:in", "Claus", "city", "Copenhagen");
-
- assertMockEndpointsSatisfied();
+ public void testCloseSessionWhenComplete() throws Exception {
+ Object out = template.sendBody("mina:tcp://localhost:8080?sync=true&textline=true", "Claus");
assertEquals("Bye Claus", out);
}
@@ -45,16 +35,13 @@
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
- from("mina:tcp://localhost:8080?sync=true").process(new Processor() {
+ from("mina:tcp://localhost:8080?sync=true&textline=true").process(new Processor() {
public void process(Exchange exchange) throws Exception {
String body = exchange.getIn().getBody(String.class);
exchange.getOut().setBody("Bye " + body);
+ exchange.getOut().setHeader(MinaConsumer.HEADER_CLOSE_SESSION_WHEN_COMPLETE, true);
}
});
-
- from("direct:in")
- .to("mina:tcp://localhost:8080?sync=true")
- .to("mock:result");
}
};
}