[
https://issues.apache.org/jira/browse/CXF-2478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12767522#action_12767522
]
Daniel Kulp commented on CXF-2478:
----------------------------------
The problem is that the wrong index is being used.
- removes.add(mpi.getIndex());
+ removes.add(part.getIndex());
fixes it.
Basically, in wrapped mode, the header has index of 1 (index 0 is the index of
the OpSendCertificate object). When unwrapped, the contents of
OpSendCertificate become 0-15 and the header should be put in slot 16. Since
you didn't generate the code with "-exsh true" flag on wsdl2java, the header
isn't mapped to a param and thus should be removed. It's removing the wrong
one.
In anycase, until I check in the above fix after running tests, you can work
around this by generating code with the -exsh true flag to wsdl2java. That
will generate a param for the header and thus the remove wouldn't trigger.
> Incorrectly removing a parameter from the Message
> -------------------------------------------------
>
> Key: CXF-2478
> URL: https://issues.apache.org/jira/browse/CXF-2478
> Project: CXF
> Issue Type: Bug
> Components: Core, JAX-WS Runtime, Service Model, Soap Binding
> Affects Versions: 2.2.3, 2.1.7, 2.2.4
> Environment: Tomcat 6.0.18, Windows Server 2003. CXF 2.2.4.
> Reporter: Bozhidar Bozhanov
> Priority: Critical
> Attachments: roc_remedy_service.wsdl, SOAPMessage.txt
>
>
> I've been having the following issue for a whole day already, and I'm
> debugging it:
> http://www.coderanch.com/t/466933/Web-Services/java/CXF-fails-serve-WebService
> I've got further ahead:
> in WrapperClassInInterceptor there is this code:
> (line 135 onwards)
> newParams = new MessageContentsList(helper.getWrapperParts(wrappedObject));
> List<Integer> removes = null;
> int count = 0;
> for (MessagePartInfo part : messageInfo.getMessageParts()) {
> if
> (Boolean.TRUE.equals(part.getProperty("messagepart.isheader"))) {
> MessagePartInfo mpi =
> wrappedMessageInfo.getMessagePart(part
> .getName());
> if (lst.hasValue(mpi)) {
> newParams.put(part, lst.get(mpi));
> } else if (mpi.getTypeClass() == null) {
> if (removes == null) {
> removes = new ArrayList();
> }
> removes.add(Integer.valueOf(mpi.getIndex()));
> }
> } else {
> ++count;
> }
> }
> The parameters in "newParams" before the removes are removed are the correct
> params + one null at the end.
> Then index "1" is removed. BUT the param at Index 1 is correct. So perhaps
> the index is wrongly calculated. I don't have any more time to dig further
> into the generation of the index, so I'm just patching my version by
> commenting-out the removal part. I hope you can give me an update no this.
> Thanks
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.