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 2014/04/29 08:14:24 UTC
git commit: CAMEL-7401 Added continuationTimeout option to camel-cxf
component
Repository: camel
Updated Branches:
refs/heads/master d906885f5 -> 0a60bfdf1
CAMEL-7401 Added continuationTimeout option to camel-cxf component
Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0a60bfdf
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0a60bfdf
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0a60bfdf
Branch: refs/heads/master
Commit: 0a60bfdf1c977e66e4ac297faeb85d2558218f31
Parents: d906885
Author: Willem Jiang <wi...@gmail.com>
Authored: Tue Apr 29 14:12:14 2014 +0800
Committer: Willem Jiang <wi...@gmail.com>
Committed: Tue Apr 29 14:12:54 2014 +0800
----------------------------------------------------------------------
.../java/org/apache/camel/component/cxf/CxfConsumer.java | 7 ++++---
.../java/org/apache/camel/component/cxf/CxfEndpoint.java | 11 +++++++++++
.../apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java | 11 +++++++++++
.../apache/camel/component/cxf/jaxrs/CxfRsInvoker.java | 7 +++----
.../src/main/resources/schema/blueprint/camel-cxf.xsd | 1 +
.../camel-cxf/src/main/resources/schema/cxfEndpoint.xsd | 1 +
.../org/apache/camel/component/cxf/CxfEndpointTest.java | 8 ++++++++
.../camel/component/cxf/jaxrs/CxfRsEndpointTest.java | 6 +++++-
.../camel/component/cxf/spring/CxfEndpointBeanTest.java | 3 ++-
.../camel/component/cxf/spring/CxfEndpointBeans.xml | 2 +-
10 files changed, 47 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
index 7585b38..20f1209 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfConsumer.java
@@ -57,10 +57,11 @@ import org.slf4j.LoggerFactory;
public class CxfConsumer extends DefaultConsumer {
private static final Logger LOG = LoggerFactory.getLogger(CxfConsumer.class);
private Server server;
+ private CxfEndpoint cxfEndpoint;
public CxfConsumer(final CxfEndpoint endpoint, Processor processor) throws Exception {
super(endpoint, processor);
-
+ cxfEndpoint = endpoint;
// create server
ServerFactoryBean svrBean = endpoint.createServerFactoryBean();
svrBean.setInvoker(new Invoker() {
@@ -86,9 +87,9 @@ public class CxfConsumer extends DefaultConsumer {
// Now we don't set up the timeout value
LOG.trace("Suspending continuation of exchangeId: {}", camelExchange.getExchangeId());
- // TODO Support to set the timeout in case the Camel can't send the response back on time.
+
// The continuation could be called before the suspend is called
- continuation.suspend(0);
+ continuation.suspend(cxfEndpoint.getContinuationTimeout());
// use the asynchronous API to process the exchange
getAsyncProcessor().process(camelExchange, new AsyncCallback() {
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
index bde547d..2261c18 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfEndpoint.java
@@ -160,6 +160,9 @@ public class CxfEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
private Object serviceFactoryBean;
private CxfEndpointConfigurer configurer;
+ // The continuation timeout value for CXF continuation to use
+ private long continuationTimeout = 30000;
+
// basic authentication option for the CXF client
private String username;
private String password;
@@ -1183,5 +1186,13 @@ public class CxfEndpoint extends DefaultEndpoint implements HeaderFilterStrategy
this.configurer = configurer;
}
+ public long getContinuationTimeout() {
+ return continuationTimeout;
+ }
+
+ public void setContinuationTimeout(long continuationTimeout) {
+ this.continuationTimeout = continuationTimeout;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
index 8c3ff1b..ab0572d 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpoint.java
@@ -90,6 +90,8 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
private int loggingSizeLimit;
private boolean skipFaultLogging;
private BindingStyle bindingStyle = BindingStyle.Default;
+ // The continuation timeout value for CXF continuation to use
+ private long continuationTimeout = 30000;
private boolean isSetDefaultBus;
@@ -489,6 +491,15 @@ public class CxfRsEndpoint extends DefaultEndpoint implements HeaderFilterStrate
}
+ public long getContinuationTimeout() {
+ return continuationTimeout;
+ }
+
+ public void setContinuationTimeout(long continuationTimeout) {
+ this.continuationTimeout = continuationTimeout;
+ }
+
+
private static class InterceptorHolder extends AbstractBasicInterceptorProvider {
}
}
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsInvoker.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsInvoker.java b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsInvoker.java
index 4f617a7..ec51874 100644
--- a/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsInvoker.java
+++ b/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/jaxrs/CxfRsInvoker.java
@@ -34,8 +34,8 @@ import org.slf4j.LoggerFactory;
public class CxfRsInvoker extends JAXRSInvoker {
private static final Logger LOG = LoggerFactory.getLogger(CxfRsInvoker.class);
private static final String SUSPENED = "org.apache.camel.component.cxf.jaxrs.suspend";
- private CxfRsConsumer cxfRsConsumer;
- private CxfRsEndpoint endpoint;
+ private final CxfRsConsumer cxfRsConsumer;
+ private final CxfRsEndpoint endpoint;
public CxfRsInvoker(CxfRsEndpoint endpoint, CxfRsConsumer consumer) {
this.endpoint = endpoint;
@@ -82,9 +82,8 @@ public class CxfRsInvoker extends JAXRSInvoker {
cxfRsConsumer.createUoW(camelExchange);
// Now we don't set up the timeout value
LOG.trace("Suspending continuation of exchangeId: {}", camelExchange.getExchangeId());
- // TODO Support to set the timeout in case the Camel can't send the response back on time.
// The continuation could be called before the suspend is called
- continuation.suspend(0);
+ continuation.suspend(endpoint.getContinuationTimeout());
cxfExchange.put(SUSPENED, Boolean.TRUE);
cxfRsConsumer.getAsyncProcessor().process(camelExchange, new AsyncCallback() {
public void done(boolean doneSync) {
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd b/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
index 76ad5d9..500f61a 100644
--- a/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
+++ b/components/camel-cxf/src/main/resources/schema/blueprint/camel-cxf.xsd
@@ -59,6 +59,7 @@
<xsd:attribute name="serviceName" type="xsd:QName"/>
<xsd:attribute name="loggingFeatureEnabled" type="xsd:boolean"/>
<xsd:attribute name="loggingSizeLimit" type="xsd:integer" />
+ <xsd:attribute name="continuationTimeout" type="xsd:long" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/main/resources/schema/cxfEndpoint.xsd
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/main/resources/schema/cxfEndpoint.xsd b/components/camel-cxf/src/main/resources/schema/cxfEndpoint.xsd
index ddd1657..a9eff65 100644
--- a/components/camel-cxf/src/main/resources/schema/cxfEndpoint.xsd
+++ b/components/camel-cxf/src/main/resources/schema/cxfEndpoint.xsd
@@ -58,6 +58,7 @@
<xsd:attribute name="loggingFeatureEnabled" type="xsd:boolean"/>
<xsd:attribute name="loggingSizeLimit" type="xsd:integer" />
<xsd:attribute name="skipFaultLogging" type="xsd:boolean" />
+ <xsd:attribute name="continuationTimeout" type="xsd:long" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
index ae7be2c..284f7a4 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CxfEndpointTest.java
@@ -51,6 +51,14 @@ public class CxfEndpointTest extends Assert {
+ "&dataFormat=PAYLOAD";
@Test
+ public void testSettingContinucationTimout() throws Exception {
+ CamelContext context = new DefaultCamelContext();
+ CxfEndpoint endpoint = context.getEndpoint(routerEndpointURI + "&continuationTimeout=800000",
+ CxfEndpoint.class);
+ assertEquals("Get a wrong continucationTimeout value", 800000, endpoint.getContinuationTimeout());
+ }
+
+ @Test
public void testSpringCxfEndpoint() throws Exception {
ClassPathXmlApplicationContext ctx =
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
index 0534f6c..d8ae6c4 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/jaxrs/CxfRsEndpointTest.java
@@ -49,13 +49,15 @@ public class CxfRsEndpointTest extends CamelTestSupport {
public void testCxfRsEndpointParameters() throws Exception {
CxfRsComponent component = new CxfRsComponent(context);
String endpointUri = "cxfrs://http://localhost:" + CTX + "/templatetest/TID/ranges/start=0;end=1?"
- + "httpClientAPI=true&loggingFeatureEnabled=true&loggingSizeLimit=200&q1=11&q2=12";
+ + "continuationTimeout=80000&httpClientAPI=true&loggingFeatureEnabled=true&loggingSizeLimit=200&q1=11&q2=12";
+
CxfRsEndpoint endpoint = (CxfRsEndpoint)component.createEndpoint(endpointUri);
assertEquals("Get a wrong URI ", endpointUri, endpoint.getEndpointUri());
assertEquals("Get a wrong usingClientAPI option", true, endpoint.isHttpClientAPI());
assertNotNull("The Parameter should not be null" + endpoint.getParameters());
assertEquals("Get a wrong parameter map", "{q1=11, q2=12}", endpoint.getParameters().toString());
+ assertEquals("Get a wrong continucationTimeout", 80000, endpoint.getContinuationTimeout());
}
@Test
@@ -70,6 +72,8 @@ public class CxfRsEndpointTest extends CamelTestSupport {
assertEquals("Get a wrong address ", endpointUri, endpoint.getEndpointUri());
assertEquals("Get a wrong size of resouces classes", 1, endpoint.getResourceClasses().size());
assertEquals("Get a wrong resources class", CustomerService.class, endpoint.getResourceClasses().get(0));
+ // check the default continuation value
+ assertEquals("Get a wrong continucationTimeout", 30000, endpoint.getContinuationTimeout());
}
@Test
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
index 7e3c003..912ab99 100644
--- a/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
+++ b/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/spring/CxfEndpointBeanTest.java
@@ -56,7 +56,8 @@ public class CxfEndpointBeanTest extends AbstractSpringBeanTestSupport {
assertEquals("Got the wrong handlers size", 1, routerEndpoint.getHandlers().size());
assertEquals("Got the wrong schemalocations size", 1, routerEndpoint.getSchemaLocations().size());
assertEquals("Got the wrong schemalocation", "classpath:wsdl/Message.xsd", routerEndpoint.getSchemaLocations().get(0));
-
+ assertEquals("Got the wrong continuationTimeout", 60000, routerEndpoint.getContinuationTimeout());
+
CxfEndpoint myEndpoint = ctx.getBean("myEndpoint", CxfEndpoint.class);
assertEquals("Got the wrong endpointName", endpointName, myEndpoint.getPortName());
assertEquals("Got the wrong serviceName", serviceName, myEndpoint.getServiceName());
http://git-wip-us.apache.org/repos/asf/camel/blob/0a60bfdf/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/CxfEndpointBeans.xml
----------------------------------------------------------------------
diff --git a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/CxfEndpointBeans.xml b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/CxfEndpointBeans.xml
index 0504561..b0a2067 100644
--- a/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/CxfEndpointBeans.xml
+++ b/components/camel-cxf/src/test/resources/org/apache/camel/component/cxf/spring/CxfEndpointBeans.xml
@@ -31,7 +31,7 @@
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"/>
<cxf:cxfEndpoint id="routerEndpoint" address="http://localhost:${CXFTestSupport.port1}/CxfEndpointBeanTest/router"
- serviceClass="org.apache.camel.component.cxf.HelloService">
+ serviceClass="org.apache.camel.component.cxf.HelloService" continuationTimeout="60000">
<cxf:schemaLocations>
<cxf:schemaLocation>classpath:wsdl/Message.xsd</cxf:schemaLocation>
</cxf:schemaLocations>