You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Christian Connert (JIRA)" <ji...@apache.org> on 2009/10/28 08:41:59 UTC

[jira] Created: (CXF-2504) HolderOutInterceptor messes up Holder

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


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.


[jira] Commented: (CXF-2504) HolderOutInterceptor messes up Holder

Posted by "Daniel Kulp (JIRA)" <ji...@apache.org>.
    [ 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.


[jira] Closed: (CXF-2504) HolderOutInterceptor messes up Holder

Posted by "Christian Connert (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Connert closed CXF-2504.
----------------------------------

    Resolution: Invalid

I created a test case and found out that it works fine.
The problem comes form a self written interceptor.

Sorry


> 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.


[jira] Updated: (CXF-2504) HolderOutInterceptor messes up Holder

Posted by "Christian Connert (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/CXF-2504?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Christian Connert updated CXF-2504:
-----------------------------------

    Priority: Trivial  (was: Major)

> 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.