Author: tli
Date: Tue Jan 23 19:15:23 2007
New Revision: 499220

URL: http://svn.apache.org/viewvc?view=rev&rev=499220
Log:
CXF-388 support order params in holder processing

Modified:
    
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCInInterceptor.java
    
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
    
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java

Modified: 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCInInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCInInterceptor.java?view=diff&rev=499220&r1=499219&r2=499220
==============================================================================
--- 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCInInterceptor.java
 (original)
+++ 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCInInterceptor.java
 Tue Jan 23 19:15:23 2007
@@ -110,26 +110,6 @@
             }            
             Object param = dr.read(part, message);
             parameters.add(param);
-//            MessagePartInfo p = msg.getMessageParts().get(idx);
-//            if (p == null) {
-//                throw new SoapFault("Parameter " + xmlReader.getName() + " 
does not exist!",
-//                                    
((SoapMessage)message).getVersion().getSender());
-//            }
-//            QName elName = new 
QName(operation.getOperationInfo().getName().getNamespaceURI(), 
-//                    p.getName().getLocalPart());
-//
-//            if (!elName.getLocalPart().equals(name.getLocalPart())) {
-//                String expMessage = "Parameter " + name + " is not equal to 
the name ["
-//                                    + elName.getLocalPart() + "] in the 
servicemodel!";
-//                throw new SoapFault(expMessage, 
((SoapMessage)message).getVersion().getSender());
-//            }
-//            Object param = null;
-//            param = dr.read(p, message);
-//            if (param != null) {
-//                parameters.add(param);
-//            } else {
-//                throw new RuntimeException(p.getName() + " can not be 
unmarshalled");
-//            }
         }
         message.setContent(List.class, parameters);
     }

Modified: 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java?view=diff&rev=499220&r1=499219&r2=499220
==============================================================================
--- 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
 (original)
+++ 
incubator/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/RPCOutInterceptor.java
 Tue Jan 23 19:15:23 2007
@@ -90,14 +90,13 @@
                         llist.add(i, mpi);
                     }
                 }
-                for (int idx = 0; idx < countParts; idx++) {
-                    Object arg = null;
-                    for (arg = objs.get(notNullIndex); arg == null; 
notNullIndex++) {
-                        arg = objs.get(notNullIndex);
+                for (int idx = 0; idx < countParts; idx++) {                   
 
+                    while (objs.get(notNullIndex) == null) {
+                        notNullIndex++;
                     }
-                    notNullIndex++;
                     MessagePartInfo part = (MessagePartInfo) llist.get(idx);
-                    dataWriter.write(arg, part, message);
+                    dataWriter.write(objs.get(notNullIndex), part, message);
+                    notNullIndex++;
                 }
             }
             // Finishing the writing.

Modified: 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java?view=diff&rev=499220&r1=499219&r2=499220
==============================================================================
--- 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
 (original)
+++ 
incubator/cxf/trunk/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/HolderOutInterceptor.java
 Tue Jan 23 19:15:23 2007
@@ -85,7 +85,7 @@
                     Holder holder = (Holder) outObjects.get(idx);
                     if 
(part.getProperty(ReflectionServiceFactoryBean.MODE_INOUT) != null) {
                         newObjects.set(idx, holder.value);
-                    } 
+                    }
                     holders.add(holder);
                 }
             }
@@ -101,8 +101,23 @@
                     i++;
                     continue;
                 }
-                
-                newObjects.set(part.getIndex(), outObjects.get(i));
+                List<String> ordering = 
part.getMessageInfo().getOperation().getParameterOrdering();
+                if (ordering != null && ordering.size() > 0) {
+                    int orderIdx = -1;
+                    for (int j = 0; j < ordering.size(); j++) {
+                        if 
(ordering.get(j).equals(part.getName().getLocalPart())) {
+                            orderIdx = j;
+                            break;
+                        }
+                    }
+                    if (orderIdx != -1) {                        
+                        newObjects.set(part.getIndex(), 
outObjects.get(orderIdx));
+                    } else {
+                        newObjects.set(part.getIndex(), outObjects.get(i));
+                    }                    
+                } else {
+                    newObjects.set(part.getIndex(), outObjects.get(i));
+                }
                 i++;
             }
             


Reply via email to