[ 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)