[ https://issues.apache.org/activemq/browse/CAMEL-3151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=62311#action_62311 ]
Stephan Siano commented on CAMEL-3151: -------------------------------------- The file contains the XML for the Payload of the SOAP message (without the SOAP Envelope). If the file did contain the whole SOAP message (with envelope and all) this would be MESSAGE data format and that works. Writing a type converter for camel-cxf is pretty easy. The CXFPayload contains two lists, one for headers, that can remain empty for this use case and one for the body, which is a list of DOM elements, so it's actually pretty easy to have a type converter between NodeList, Document or Element and CXFPayload. This can be glued together with other type converters by a default converter. I have already done so (about 100 lines of code), however before I can provide the code we need to undergo some outbound open source process, which will take some weeks, sorry for that. Nevertheless, I think this fix here is useful, even if these type converters where there, because there could still be some StrangeMessageWithoutConverters and it is helpful to get the error message that there is no type converter for that instead of a NullPointerException. > 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 > Assignee: Claus Ibsen > 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.