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 2010/07/26 15:25:40 UTC
svn commit: r979273 - in /camel/trunk/components/camel-cxf/src:
main/java/org/apache/camel/component/cxf/
main/java/org/apache/camel/component/cxf/interceptors/
test/java/org/apache/camel/component/cxf/
Author: ningjiang
Date: Mon Jul 26 13:25:40 2010
New Revision: 979273
URL: http://svn.apache.org/viewvc?rev=979273&view=rev
Log:
CAMEL-2994 Fixed the issue of CxfClientCallback is invoked twice when only one was expected
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java
camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/GreeterImplWithSleep.java
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java?rev=979273&r1=979272&r2=979273&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfClientCallback.java Mon Jul 26 13:25:40 2010
@@ -47,35 +47,33 @@ public class CxfClientCallback extends C
}
public void handleResponse(Map<String, Object> ctx, Object[] res) {
- LOG.trace("Handling response +++ START +++");
-
- super.handleResponse(ctx, res);
- // bind the CXF response to Camel exchange
- if (!boi.getOperationInfo().isOneWay()) {
- // copy the InMessage header to OutMessage header
- camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders());
- endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
- ctx);
+ try {
+ super.handleResponse(ctx, res);
+ // bind the CXF response to Camel exchange
+ if (!boi.getOperationInfo().isOneWay()) {
+ // copy the InMessage header to OutMessage header
+ camelExchange.getOut().getHeaders().putAll(camelExchange.getIn().getHeaders());
+ endpoint.getCxfBinding().populateExchangeFromCxfResponse(camelExchange, cxfExchange,
+ ctx);
+ }
+ } finally {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(Thread.currentThread().getName() + "calling handleResponse");
+ }
+ camelAsyncCallback.done(false);
}
-
- // TODO: callback should be in finally to ensure its invoked
-
- LOG.trace("Handling response +++ DONE +++");
- camelAsyncCallback.done(false);
- LOG.trace("Handling response +++ END +++");
}
public void handleException(Map<String, Object> ctx, Throwable ex) {
- LOG.trace("Handling exception +++ START +++");
-
- super.handleException(ctx, ex);
- camelExchange.setException(ex);
-
- // TODO: callback should be in finally to ensure its invoked
-
- LOG.trace("Handling response +++ DONE +++");
- camelAsyncCallback.done(false);
- LOG.trace("Handling response +++ END +++");
- }
+ try {
+ super.handleException(ctx, ex);
+ camelExchange.setException(ex);
+ } finally {
+ if (LOG.isDebugEnabled()) {
+ LOG.debug(Thread.currentThread().getName() + "calling handleException");
+ }
+ camelAsyncCallback.done(false);
+ }
+ }
}
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java?rev=979273&r1=979272&r2=979273&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/interceptors/RawMessageContentRedirectInterceptor.java Mon Jul 26 13:25:40 2010
@@ -53,7 +53,7 @@ public class RawMessageContentRedirectIn
throw new Fault(e);
} finally {
IOHelper.close(is, "input stream", null);
- IOHelper.close(os, "output stream", null);
+ // Should not close the output stream as the interceptor chain will close it
}
}
}
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java?rev=979273&r1=979272&r2=979273&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/CXFWsdlOnlyTest.java Mon Jul 26 13:25:40 2010
@@ -80,24 +80,19 @@ public class CXFWsdlOnlyTest extends Cam
personId.value = "hello";
Holder<String> ssn = new Holder<String>();
Holder<String> name = new Holder<String>();
- System.out.println(">>>>>>>>>");
client.getPerson(personId, ssn, name);
- System.out.println("<<<<<<<<");
assertEquals("Bonjour", name.value);
- // TODO: camel-cxf invokes async callback 2 times, there is a problem with this kind of using CXF
-
-/* Person client2 = ss.getSoap2();
+ Person client2 = ss.getSoap2();
Holder<String> personId2 = new Holder<String>();
personId2.value = "hello";
Holder<String> ssn2 = new Holder<String>();
Holder<String> name2 = new Holder<String>();
client2.getPerson(personId2, ssn2, name2);
- assertEquals("Bonjour", name2.value);*/
+ assertEquals("Bonjour", name2.value);
}
@Test
- @Ignore
public void testSoapFaultRoutes() {
URL wsdlURL = getClass().getClassLoader().getResource("person.wsdl");
PersonService ss = new PersonService(wsdlURL, new QName("http://camel.apache.org/wsdl-first",
@@ -117,6 +112,7 @@ public class CXFWsdlOnlyTest extends Cam
}
assertTrue(t instanceof UnknownPersonFault);
+
// test PAYLOAD mode
Person client2 = ss.getSoap2();
Holder<String> personId2 = new Holder<String>();
Modified: camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/GreeterImplWithSleep.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/GreeterImplWithSleep.java?rev=979273&r1=979272&r2=979273&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/GreeterImplWithSleep.java (original)
+++ camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/GreeterImplWithSleep.java Mon Jul 26 13:25:40 2010
@@ -23,9 +23,8 @@ public class GreeterImplWithSleep extend
@Override
public String greetMe(String hi) {
-
try {
- Thread.sleep(10000);
+ Thread.sleep(2000);
} catch (Exception ignore) {
}