[
https://issues.apache.org/jira/browse/CXF-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12770950#action_12770950
]
Daniel Kulp commented on CXF-2504:
----------------------------------
Can you attach a small test case for this?
I think the proper fix is to use the incoming MessageInfo to get the part by
index from that. Then find the part with the right name in the output
MessageInfo, and get it's index from that. I think. Maybe just use the
output message indexes. If I have a test case that shows the problem, I can
dig in a bit more to figure out the right sequence.
> HolderOutInterceptor messes up Holder
> -------------------------------------
>
> Key: CXF-2504
> URL: https://issues.apache.org/jira/browse/CXF-2504
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Environment: System:
> 2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
> Java:
> java version "1.6.0_16"
> Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
> Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
> Apache CXF 2.2.3 (not in version list)
> Reporter: Christian Connert
> Priority: Trivial
>
> Hi,
> The HolderOutInterceptor causes that the holder object is lost, when the
> response is send back to the client.
> It's caused by the following code block (line 72 - 79:
> if (inObjects != null) {
> for (int x = 0; x < inObjects.size(); x++) {
> Object o = inObjects.get(x);
> if (o instanceof Holder) {
> outObjects.set(x + 1, o);
> }
> }
> }
> inObjects contains (in this order!) the request and the older object, out
> objects the response. Thus the older which is at index 1 will be appended to
> the out objects at index 2, leaving index 1 empty, but only the first two
> objects are send back to the client. From my point of view it can be fixed by
> using a separate index variable for the outObjects and initialize it with
> outObjects.getSize(). Which would result in some code like this:
> if (inObjects != null) {
> int index = outObjects.size();
> for (int x = 0; x < inObjects.size(); x++) {
> Object o = inObjects.get(x);
> if (o instanceof Holder) {
> outObjects.set(index++, o);
> }
> }
> }
> Cheers
> Christian
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.