Author: dandiep
Date: Sun Jun 17 20:31:42 2007
New Revision: 548190

URL: http://svn.apache.org/viewvc?view=rev&rev=548190
Log:
Make SwaInInterceptor a bit more robust. Any attachment that has an index 
greater than the list size can simply be appended to the end of the list. This 
prevents conflicts with the HolderInInterceptor. Attachments which have an 
index less than the list size can be inserted.

Modified:
    
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java

Modified: 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java?view=diff&rev=548190&r1=548189&r2=548190
==============================================================================
--- 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java
 (original)
+++ 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/SwAInInterceptor.java
 Sun Jun 17 20:31:42 2007
@@ -75,16 +75,6 @@
             boolean found = false;
             
             int idx = mpi.getMessageInfo().getMessagePartIndex(mpi);
-            /*while (idx >= inObjects.size()) {
-                inObjects.add(null);
-            }*/
-            
-            //fix for testSwaWithHeaders of ClientServerSwaTest
-            inObjects.add(idx, null);
-            
-            if (inObjects.get(idx) != null) {
-                continue;
-            }
             
             for (Attachment a : message.getAttachments()) {
                 if (a.getId().startsWith(start)) {
@@ -110,16 +100,24 @@
                         o = dh;
                     }
                     
-                    inObjects.set(idx, o);
+                    // If the current index is greater than the # of objects,
+                    // just append the attachment to the end
+                    if (idx >= inObjects.size()) {
+                        inObjects.add(o);
+                    } else {
+                        inObjects.add(idx, o);
+                    }
                     found = true;
                     break;
                 }
             }
             
             if (!found) {
-
-                
-                inObjects.add(idx, null);
+                if (idx >= inObjects.size()) {
+                    inObjects.add(null);
+                } else {
+                    inObjects.add(idx, null);
+                }
             }
         }
     }


Reply via email to