[
https://issues.apache.org/jira/browse/CXF-7602?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Freeman Fang resolved CXF-7602.
-------------------------------
Resolution: Duplicate
> HolderInInterceptor op.getOutput().getMessageParts() returns single Part with
> index = 1 causing Holder set within MessageContentsList (when It should not
> be)
> -------------------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CXF-7602
> URL: https://issues.apache.org/jira/browse/CXF-7602
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 3.1.11
> Reporter: Wojciech
> Assignee: Freeman Fang
> Priority: Minor
>
> I have walid wsdl containing following operations:
> <wsdl:message name="sendNotification">
> *<wsdl:part element="notifications:Notification"
> name="parameters"></wsdl:part>*
> </wsdl:message>
> <wsdl:message name="sendNotificationResponse">
> *<wsdl:part element="notifications:Notification"
> name="parameters"></wsdl:part>*
> </wsdl:message>
> First operation is input, second is output operation.
> From some reason - output MessagePartInfo object from binding operation info
> from exchange is being set with index = 1 (even if there is only one Part in
> the out message) - this is causing creation of Holder in HolderInInterceptor.
> As a result of following test :
> MessageContentsList response =
> (MessageContentsList)producer.requestBody(to,TestApp.createNotification());
> I will have response containing Notification object within MessageContentList
> - but not the fake response injected for test purposes, but rahter
> Notification which has been send by the producer
> (TestApp.createNotification()). Producer is from Apache Camel in here and
> 'to' is a CXF Endpoint working in POJO mode.
> I have dealt with it by changing the type of resulting Notification (output
> message) to the Acknowledgment by introducing another xsd schema next to
> Notification. Now when wsdl looks like this (not entire - just a part):
> <wsdl:message name="sendNotification">
> *<wsdl:part element="notifications:Notification"
> name="parameters"></wsdl:part>*
> </wsdl:message>
> <wsdl:message name="sendNotificationResponse">
> *<wsdl:part element="ack:Acknowledgement" name="parameters"></wsdl:part>*
> </wsdl:message>
> No holder is being created and everything works as expected.
> I am not aware of CXF internals, even do not know what purpose serves this
> Holder object but from my point of view above behaviour looks like a bug or
> is very non-intuitive. Also I think that if two different operations (in/out)
> with the same type of Part are not allowed - this should be somehow catched
> during wsdl2java validation, or even any kind of runtime exception should be
> thrown on runtime when processing messages. Current behaviour - which is -
> returning Notification object which has been sent to the endpoint doesn't
> look correctly to me :)
> Of course I may be wrong as I'm quite new to CXF :)
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)