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 2010/10/03 13:07:29 UTC
svn commit: r1003946 -
/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
Author: davsclaus
Date: Sun Oct 3 11:07:28 2010
New Revision: 1003946
URL: http://svn.apache.org/viewvc?rev=1003946&view=rev
Log:
CAMEL-3151: CxfProducer uses mandatory body to ensure input message exists. This avoids NPE exceptions later on.
Modified:
camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
Modified: camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java?rev=1003946&r1=1003945&r2=1003946&view=diff
==============================================================================
--- camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java (original)
+++ camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/CxfProducer.java Sun Oct 3 11:07:28 2010
@@ -30,6 +30,7 @@ import javax.xml.ws.handler.MessageConte
import org.apache.camel.AsyncCallback;
import org.apache.camel.AsyncProcessor;
import org.apache.camel.Exchange;
+import org.apache.camel.InvalidPayloadException;
import org.apache.camel.RuntimeCamelException;
import org.apache.camel.impl.DefaultProducer;
import org.apache.camel.util.ObjectHelper;
@@ -213,7 +214,7 @@ public class CxfProducer extends Default
if (boi == null) {
throw new RuntimeCamelException("Can't find the binding operation information from camel exchange");
}
- if (!endpoint.isWrapped() && boi != null) {
+ if (!endpoint.isWrapped()) {
if (boi.isUnwrappedCapable()) {
boi = boi.getUnwrappedOperation();
}
@@ -253,7 +254,7 @@ public class CxfProducer extends Default
/**
* Get the parameters for the web service operation
*/
- private Object[] getParams(CxfEndpoint endpoint, Exchange exchange) {
+ private Object[] getParams(CxfEndpoint endpoint, Exchange exchange) throws InvalidPayloadException {
Object[] params = null;
if (endpoint.getDataFormat() == DataFormat.POJO) {
@@ -276,25 +277,22 @@ public class CxfProducer extends Default
params[0] = exchange.getIn().getBody();
}
}
+ // make sure we have the right number of parameters
checkParameterSize(endpoint, exchange, params);
-
+
} else if (endpoint.getDataFormat() == DataFormat.PAYLOAD) {
params = new Object[1];
- // TODO: maybe it should be mandatory body?
- params[0] = exchange.getIn().getBody(CxfPayload.class);
+ params[0] = exchange.getIn().getMandatoryBody(CxfPayload.class);
} else if (endpoint.getDataFormat() == DataFormat.MESSAGE) {
params = new Object[1];
- // TODO: maybe it should be mandatory body?
- params[0] = exchange.getIn().getBody(InputStream.class);
+ params[0] = exchange.getIn().getMandatoryBody(InputStream.class);
}
if (LOG.isTraceEnabled()) {
- if (params instanceof Object[]) {
+ if (params != null) {
for (int i = 0; i < params.length; i++) {
LOG.trace("params[" + i + "] = " + params[i]);
}
- } else {
- LOG.trace("params = " + params);
}
}