[ https://issues.apache.org/activemq/browse/CAMEL-3151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62144#action_62144 ]
Stephan Siano commented on CAMEL-3151: -------------------------------------- Actually it is an issue in error handling, so I don't really know how to write a unit test for that. Maybe it helps explaining what I actually do: I have a beans.xml that looks like that: <?xml version="1.0"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring" xmlns:cxf="http://camel.apache.org/schema/cxf" xmlns:http-conf="http://cxf.apache.org/transports/http/configuration" xmlns:sample="http://services.samples/xsd" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://cxf.apache.org/transports/http/configuration http://cxf.apache.org/schemas/configuration/http-conf.xsd http://camel.apache.org/schema/cxf http://camel.apache.org/schema/cxf/camel-cxf.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <import resource="classpath:META-INF/cxf/cxf.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml" /> <import resource="classpath:META-INF/cxf/cxf-extension-http.xml"/> <cxf:cxfEndpoint id="serviceEndpoint" address="http://myhost:8080/MockServices/EchoService" wsdlURL="EchoService.wsdl" endpointName="sample:EchoServicePort" serviceName="sample:EchoService"> <cxf:properties> <entry key="dataFormat" value="PAYLOAD" /> </cxf:properties> </cxf:cxfEndpoint> <camel:camelContext> <camel:route> <camel:from uri="file://c:/temp/camel/poller" /> <!-- The wsdl contains multiple operations, so we select one --> <camel:setHeader headerName="operationName"> <camel:constant>buyStocksOperation1K</camel:constant> </camel:setHeader> <camel:to uri="cxf:bean:serviceEndpoint" /> </camel:route> </camel:camelContext> </beans> You can use any wsdl for that (even for a webservice that does not exist, because it will not get called). Then put a xml-file matching the request type of the endpoint into the /temp/camel/poller directory. You will encounter a NullPointerException. After the getBody() statements are replaced by getMandatoryBody() statements, the scenario does still not work, but now you get a (IMO much better) TypeConversionException that indicates the reason for the issue. Mid-term it might be a good idea to have a TypeConverter for CxfPayload type messages. If that is there, the fix will not show up anymore in this scenario (but maybe in other scenarios where no type converter is available). > NullPointerException in CXF Producer if no type converter is available > ---------------------------------------------------------------------- > > Key: CAMEL-3151 > URL: https://issues.apache.org/activemq/browse/CAMEL-3151 > Project: Apache Camel > Issue Type: Bug > Components: camel-cxf > Reporter: Stephan Siano > Priority: Minor > Fix For: 2.5.0 > > > When I am trying to send the content of a file to an CXF endpoint in PAYLOAD > format, I get a NullPointerException in line 603 of the CXFEndpoint class (in > the current trunk). The offending coding is: > CxfPayload<?> payload = (CxfPayload<?>)params[0]; > List<Element> elements = payload.getBody(); > The params are set in line 282 of the CxfProducer class: > params = new Object[1]; > // TODO: maybe it should be mandatory body? > params[0] = exchange.getIn().getBody(CxfPayload.class); > The fix is most probably trivial (change to getMandatoryBody()) and add a > throws InvalidPayloadException to the getParams() method of CxfProducer). > After this is fixed (the same for the MESSAGE format two lines lower), the > example will still not work, but I get a meaningful error message saying that > there is no type converter between GenericFile and CxfPayload. > One could argue, that under some circumstances null payloads may be legal (I > just don't see any), but in this case the CxfEndpoint class would have to be > modified to avoid the NullPointerException. As the coding is a missing > converter or a null payload will trigger NullPointerExceptions for > CxfEndpoints unconditionally. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.