You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/10/26 11:28:31 UTC

svn commit: r467932 - in /webservices/axis2/branches/java/1_1/modules: adb/src/org/apache/axis2/databinding/utils/ adb/src/org/apache/axis2/databinding/utils/reader/ adb/src/org/apache/axis2/rpc/client/ adb/src/org/apache/axis2/rpc/receivers/ kernel/sr...

Author: deepal
Date: Thu Oct 26 02:28:31 2006
New Revision: 467932

URL: http://svn.apache.org/viewvc?view=rev&rev=467932
Log:
fixing prc serialization problem whem elementformdefault=flase

adding invokeRobust method into RPCServiceClient to do oneway invocation

- improve null handling in RPC MR

Modified:
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
    webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
    webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Thu Oct 26 02:28:31 2006
@@ -25,7 +25,6 @@
 import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
 import org.apache.axiom.om.util.Base64;
 import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;
 import org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl;
 import org.apache.axis2.engine.ObjectSupplier;
@@ -57,7 +56,7 @@
      */
     public static XMLStreamReader getPullParser(Object beanObject,
                                                 QName beanName,
-                                                TypeTable typeTable) {
+                                                TypeTable typeTable, boolean qualified) {
         try {
             JamServiceFactory factory = JamServiceFactory.getInstance();
             JamServiceParams jam_service_parms = factory.createServiceParams();
@@ -74,14 +73,7 @@
                 throw new AxisFault("No service class found , exception from JAM");
             }
             QName elemntNameSpace = null;
-            if (typeTable == null) {
-                MessageContext currentMessageContext = MessageContext.getCurrentMessageContext();
-                if (currentMessageContext != null) {
-                    typeTable = currentMessageContext.
-                            getAxisService().getTypeTable();
-                }
-            }
-            if (typeTable != null) {
+            if (typeTable != null && qualified) {
                 QName qNamefortheType = typeTable.getQNamefortheType(beanObject.getClass().getName());
                 elemntNameSpace = new QName(qNamefortheType.getNamespaceURI(),
                         "elementName");
@@ -196,7 +188,7 @@
                     object.add(value);
                 }
             }
-            return new ADBXMLStreamReaderImpl(beanName, object.toArray(), null);
+            return new ADBXMLStreamReaderImpl(beanName, object.toArray(), null, typeTable,qualified);
         } catch (java.io.IOException e) {
             throw new RuntimeException(e);
         } catch (java.beans.IntrospectionException e) {
@@ -219,7 +211,7 @@
             className = className.substring(className.lastIndexOf('.') + 1,
                     className.length());
         }
-        return getPullParser(beanObject, new QName(className), null);
+        return getPullParser(beanObject, new QName(className), null, false);
     }
 
     public static Object deserialize(Class beanClass,
@@ -557,7 +549,11 @@
         }
     }
 
-    public static OMElement getOMElement(QName opName, Object [] args, QName partName) {
+    public static OMElement getOMElement(QName opName,
+                                         Object [] args,
+                                         QName partName,
+                                         boolean qualifed,
+                                         TypeTable typeTable) {
         ArrayList objects;
         objects = new ArrayList();
         int argCount = 0;
@@ -636,7 +632,7 @@
             argCount ++;
         }
 
-        XMLStreamReader xr = new ADBXMLStreamReaderImpl(opName, objects.toArray(), null);
+        XMLStreamReader xr = new ADBXMLStreamReaderImpl(opName, objects.toArray(), null, typeTable, qualifed);
 
         StreamWrapper parser = new StreamWrapper(xr);
         StAXOMBuilder stAXOMBuilder =

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/databinding/utils/reader/ADBXMLStreamReaderImpl.java Thu Oct 26 02:28:31 2006
@@ -5,6 +5,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axis2.databinding.ADBBean;
 import org.apache.axis2.databinding.utils.BeanUtil;
+import org.apache.ws.java2wsdl.utils.TypeTable;
 
 import javax.activation.DataHandler;
 import javax.xml.namespace.NamespaceContext;
@@ -43,23 +44,22 @@
  * 4. QName name/String name  - ADBBean value
  * 5. QName name/String name  - Java bean
  * 5. QName name/String name  - Datahandler
- *
+ * <p/>
  * As for the attributes, these are the possible combinations in the
  * array
  * 1. String name/QName name - String value
  * 2. OMAttributeKey - OMAttribute
- *
+ * <p/>
  * Note that certain array methods have  been deliberately removed to avoid
  * complications. The generated code will take the trouble to lay the
  * elements of the array in the correct order
- *
+ * <p/>
  * <p/>
  * Hence there will be a parser impl that knows how to handle these types, and
  * this parent parser will always delegate these tasks to the child pullparasers
  * in effect this is one huge state machine that has only a few states and delegates
  * things down to the child parsers whenever possible
  * <p/>
- *
  */
 public class ADBXMLStreamReaderImpl implements ADBXMLStreamReader {
 
@@ -88,6 +88,12 @@
     //initialized at zero
     private int currentPropertyIndex = 0;
 
+    //To keep element formdefault qualified or not
+    private boolean qualified = false;
+
+    //to keep the current types which are in AxisService
+    private TypeTable typeTable = null;
+
 
     /*
      * we need to pass in a namespace context since when delegated, we've no
@@ -102,8 +108,16 @@
         this.properties = properties;
         this.elementQName = adbBeansQName;
         this.attributes = attributes;
+    }
 
-
+    public ADBXMLStreamReaderImpl(QName adbBeansQName,
+                                  Object[] properties,
+                                  Object[] attributes,
+                                  TypeTable typeTable,
+                                  boolean qualified) {
+        this(adbBeansQName, properties, attributes);
+        this.qualified = qualified;
+        this.typeTable = typeTable;
     }
 
     /**
@@ -133,26 +147,25 @@
     }
 
     /**
-     *
      * @param key
      * @throws IllegalArgumentException
      */
     public Object getProperty(String key) throws IllegalArgumentException {
         if (state == START_ELEMENT_STATE || state == END_ELEMENT_STATE) {
-            if (OPTIMIZATION_ENABLED.equals(key)){
+            if (OPTIMIZATION_ENABLED.equals(key)) {
                 return Boolean.TRUE;
-            }else{
+            } else {
                 return null;
             }
-        }else if (state==TEXT_STATE){
-            if (IS_BINARY.equals(key)){
+        } else if (state == TEXT_STATE) {
+            if (IS_BINARY.equals(key)) {
                 return Boolean.FALSE;
-            }else{
+            } else {
                 return null;
             }
-        }else if (state==DELEGATED_STATE){
+        } else if (state == DELEGATED_STATE) {
             return childReader.getProperty(key);
-        }else{
+        } else {
             return null;
         }
 
@@ -191,14 +204,14 @@
      */
     public boolean hasNext() throws XMLStreamException {
         if (state == DELEGATED_STATE) {
-            if (childReader.isDone()){
+            if (childReader.isDone()) {
                 //the child reader is done. We shouldn't be getting the
                 //hasnext result from the child pullparser then
                 return true;
-            }else{
+            } else {
                 return childReader.hasNext();
             }
-        } else  {
+        } else {
             return (state == START_ELEMENT_STATE
                     || state == TEXT_STATE);
 
@@ -279,7 +292,7 @@
     public int getAttributeCount() {
         return (state == DELEGATED_STATE) ?
                 childReader.getAttributeCount() :
-                ((attributes != null)&&(state==START_ELEMENT_STATE) ? attributes.length / 2 : 0);
+                ((attributes != null) && (state == START_ELEMENT_STATE) ? attributes.length / 2 : 0);
     }
 
     /**
@@ -288,7 +301,7 @@
     public QName getAttributeName(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getAttributeName(i);
-        } else if (state==START_ELEMENT_STATE) {
+        } else if (state == START_ELEMENT_STATE) {
             if (attributes == null) {
                 return null;
             } else {
@@ -310,7 +323,7 @@
                         }
                         OMAttribute att = (OMAttribute) omAttribObj;
                         return att.getQName();
-                    } else if (attribPointer instanceof OMAttribKey){
+                    } else if (attribPointer instanceof OMAttribKey) {
                         Object omAttribObj = attributes[(i * 2) + 1];
                         if (omAttribObj == null ||
                                 !(omAttribObj instanceof OMAttribute)) {
@@ -331,7 +344,7 @@
                     }
                 }
             }
-        }else{
+        } else {
             throw new IllegalStateException();//as per the api contract
         }
 
@@ -340,14 +353,14 @@
     public String getAttributeNamespace(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getAttributeNamespace(i);
-        } else if (state==START_ELEMENT_STATE) {
+        } else if (state == START_ELEMENT_STATE) {
             QName name = getAttributeName(i);
             if (name == null) {
                 return null;
             } else {
                 return name.getNamespaceURI();
             }
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -355,14 +368,14 @@
     public String getAttributeLocalName(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getAttributeLocalName(i);
-        } else if (state==START_ELEMENT_STATE) {
+        } else if (state == START_ELEMENT_STATE) {
             QName name = getAttributeName(i);
             if (name == null) {
                 return null;
             } else {
                 return name.getLocalPart();
             }
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -370,14 +383,14 @@
     public String getAttributePrefix(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getAttributePrefix(i);
-        } else if (state==START_ELEMENT_STATE) {
+        } else if (state == START_ELEMENT_STATE) {
             QName name = getAttributeName(i);
             if (name == null) {
                 return null;
             } else {
                 return name.getPrefix();
             }
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -389,7 +402,7 @@
     public String getAttributeValue(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getAttributeValue(i);
-        } else if (state ==START_ELEMENT_STATE){
+        } else if (state == START_ELEMENT_STATE) {
             if (attributes == null) {
                 return null;
             } else {
@@ -412,7 +425,7 @@
                         }
                         OMAttribute att = (OMAttribute) omAttribObj;
                         return att.getAttributeValue();
-                    } else if (attribPointer instanceof OMAttribKey){
+                    } else if (attribPointer instanceof OMAttribKey) {
                         if (omAttribObj == null ||
                                 !(omAttribObj instanceof OMAttribute)) {
                             // wrong object set to have in the attrib array -
@@ -432,7 +445,7 @@
                     }
                 }
             }
-        }else{
+        } else {
             throw new IllegalStateException();
         }
 
@@ -464,7 +477,7 @@
     public String getNamespacePrefix(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getNamespacePrefix(i);
-        } else if (state!=TEXT_STATE) {
+        } else if (state != TEXT_STATE) {
             //order the prefixes
             String[] prefixes = makePrefixArray();
             if ((i >= prefixes.length) || (i < 0)) {
@@ -473,7 +486,7 @@
                 return prefixes[i];
             }
 
-        }else{
+        } else {
             throw new IllegalStateException();
         }
 
@@ -493,11 +506,11 @@
     public String getNamespaceURI(int i) {
         if (state == DELEGATED_STATE) {
             return childReader.getNamespaceURI(i);
-        } else if (state!=TEXT_STATE) {
+        } else if (state != TEXT_STATE) {
             String namespacePrefix = getNamespacePrefix(i);
             return namespacePrefix == null ? null :
                     (String) declaredNamespaceMap.get(namespacePrefix);
-        }else{
+        } else {
             throw new IllegalStateException();
         }
 
@@ -531,9 +544,9 @@
     public String getText() {
         if (state == DELEGATED_STATE) {
             return childReader.getText();
-        } else if (state==TEXT_STATE) {
-            return (String)properties[currentPropertyIndex-1];
-        }else{
+        } else if (state == TEXT_STATE) {
+            return (String) properties[currentPropertyIndex - 1];
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -541,10 +554,10 @@
     public char[] getTextCharacters() {
         if (state == DELEGATED_STATE) {
             return childReader.getTextCharacters();
-        }else if (state==TEXT_STATE) {
-            return properties[currentPropertyIndex-1]==null?new char[0]:
-                    ((String)properties[currentPropertyIndex-1]).toCharArray();
-        }else{
+        } else if (state == TEXT_STATE) {
+            return properties[currentPropertyIndex - 1] == null ? new char[0] :
+                    ((String) properties[currentPropertyIndex - 1]).toCharArray();
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -553,10 +566,10 @@
             throws XMLStreamException {
         if (state == DELEGATED_STATE) {
             return childReader.getTextCharacters(i, chars, i1, i2);
-        }else if (state==TEXT_STATE) {
+        } else if (state == TEXT_STATE) {
             //todo  - implement this
             return 0;
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -564,9 +577,9 @@
     public int getTextStart() {
         if (state == DELEGATED_STATE) {
             return childReader.getTextStart();
-        } else if (state==TEXT_STATE) {
+        } else if (state == TEXT_STATE) {
             return 0;//assume text always starts at 0
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -574,9 +587,9 @@
     public int getTextLength() {
         if (state == DELEGATED_STATE) {
             return childReader.getTextLength();
-        } else if (state==TEXT_STATE) {
+        } else if (state == TEXT_STATE) {
             return 0;//assume text always starts at 0
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -606,7 +619,7 @@
      */
     public Location getLocation() {
         //return a default location
-        return new Location(){
+        return new Location() {
             public int getLineNumber() {
                 return 0;
             }
@@ -632,9 +645,9 @@
     public QName getName() {
         if (state == DELEGATED_STATE) {
             return childReader.getName();
-        } else if (state!=TEXT_STATE) {
+        } else if (state != TEXT_STATE) {
             return elementQName;
-        }else{
+        } else {
             throw new IllegalStateException();
         }
 
@@ -643,9 +656,9 @@
     public String getLocalName() {
         if (state == DELEGATED_STATE) {
             return childReader.getLocalName();
-        } else if (state!=TEXT_STATE) {
+        } else if (state != TEXT_STATE) {
             return elementQName.getLocalPart();
-        }else{
+        } else {
             throw new IllegalStateException();
         }
     }
@@ -662,9 +675,9 @@
     public String getNamespaceURI() {
         if (state == DELEGATED_STATE) {
             return childReader.getNamespaceURI();
-        } else if (state==TEXT_STATE) {
+        } else if (state == TEXT_STATE) {
             return null;
-        }else{
+        } else {
             return elementQName.getNamespaceURI();
         }
     }
@@ -672,11 +685,11 @@
     public String getPrefix() {
         if (state == DELEGATED_STATE) {
             return childReader.getPrefix();
-        } else if (state==TEXT_STATE) {
+        } else if (state == TEXT_STATE) {
             return null;
-        }else{
+        } else {
             String prefix = elementQName.getPrefix();
-            return "".equals(prefix) ? null : prefix ;
+            return "".equals(prefix) ? null : prefix;
         }
     }
 
@@ -771,7 +784,7 @@
 
     /**
      * By far this should be the most important method in this class
-     * this method changes the state of the parser 
+     * this method changes the state of the parser
      */
     public int next() throws XMLStreamException {
         int returnEvent = -1; //invalid state is the default state
@@ -836,7 +849,7 @@
         //move to the next property depending on the current property
         //index
         Object propPointer = properties[currentPropertyIndex];
-        QName propertyQName=null;
+        QName propertyQName = null;
         boolean textFound = false;
         if (propPointer == null) {
             throw new XMLStreamException("property key cannot be null!");
@@ -844,9 +857,9 @@
             // propPointer being a String has a special case
             // that is it can be a the special constant ELEMENT_TEXT that
             // says this text event
-            if (ELEMENT_TEXT.equals(propPointer)){
+            if (ELEMENT_TEXT.equals(propPointer)) {
                 textFound = true;
-            }else{
+            } else {
                 propertyQName = new QName((String) propPointer);
             }
         } else if (propPointer instanceof QName) {
@@ -864,14 +877,14 @@
         //ok! we got the key. Now look at the value
         Object propertyValue = properties[currentPropertyIndex + 1];
         //cater for the special case now
-        if (textFound){
+        if (textFound) {
             //no delegation here - make the parser null and immediately
             //return with the event characters
             childReader = null;
             state = TEXT_STATE;
             currentPropertyIndex = currentPropertyIndex + 2;
             return CHARACTERS;
-        }else if (propertyValue == null) {
+        } else if (propertyValue == null) {
             //if the value is null we delegate the work to a nullable
             // parser
             childReader = new NullXMLStreamReader(propertyQName);
@@ -881,7 +894,7 @@
             //we've a special pullparser for a datahandler!
         } else if (propertyValue instanceof DataHandler) {
             childReader = new ADBDataHandlerStreamReader(propertyQName,
-                    (DataHandler)propertyValue);
+                    (DataHandler) propertyValue);
             childReader.addNamespaceContext(this.namespaceContext);
             childReader.init();
 
@@ -889,20 +902,20 @@
             //strings are handled by the NameValuePairStreamReader
             childReader =
                     new NameValuePairStreamReader(propertyQName,
-                            (String)propertyValue);
+                            (String) propertyValue);
             childReader.addNamespaceContext(this.namespaceContext);
             childReader.init();
         } else if (propertyValue instanceof String[]) {
             //string[] are handled by the  NameValueArrayStreamReader
             //if the array is empty - skip it
-            if (((String[])propertyValue).length==0){
+            if (((String[]) propertyValue).length == 0) {
                 //advance the index
                 currentPropertyIndex = currentPropertyIndex + 2;
                 return processProperties();
-            }else{
+            } else {
                 childReader =
                         new NameValueArrayStreamReader(propertyQName,
-                                (String[])propertyValue);
+                                (String[]) propertyValue);
                 childReader.addNamespaceContext(this.namespaceContext);
                 childReader.init();
             }
@@ -934,7 +947,7 @@
             //the thing as a bean and try generating events from it
             childReader = new WrappingXMLStreamReader
                     (BeanUtil.getPullParser(propertyValue,
-                            propertyQName, null));
+                            propertyQName, typeTable, qualified));
             //we cannot register the namespace context here
         }
 

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/client/RPCServiceClient.java Thu Oct 26 02:28:31 2006
@@ -63,7 +63,7 @@
      * @return Response OMElement
      */
     public OMElement invokeBlocking(QName opName, Object [] args) throws AxisFault {
-        OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
         if (notNullService) {
             return super.sendReceive(opName, omElement);
         }
@@ -87,7 +87,7 @@
      */
 
     public Object[]  invokeBlocking(QName opName, Object [] args, Object [] returnTypes) throws AxisFault {
-        OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
         OMElement response;
         if (notNullService) {
             response = super.sendReceive(opName, omElement);
@@ -112,7 +112,7 @@
                                   Object [] args,
                                   Callback callback)
             throws AxisFault {
-        OMElement omElement = BeanUtil.getOMElement(opName, args, null);
+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
         //call the underline implementation
         if (notNullService) {
             super.sendReceiveNonBlocking(opName, omElement, callback);
@@ -121,5 +121,14 @@
         }
     }
 
-
+    public void invokeRobust(QName opName,
+                             Object [] args) throws AxisFault {
+        OMElement omElement = BeanUtil.getOMElement(opName, args, null, false, null);
+        //call the underline implementation
+        if (notNullService) {
+            super.sendRobust(opName, omElement);
+        } else {
+            super.sendRobust(omElement);
+        }
+    }
 }

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCInOutAsyncMessageReceiver.java Thu Oct 26 02:28:31 2006
@@ -17,7 +17,6 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.util.Base64;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
@@ -31,7 +30,6 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.xml.namespace.QName;
-import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
@@ -120,47 +118,8 @@
                     service.getSchematargetNamespacePrefix());
             SOAPEnvelope envelope = fac.getDefaultEnvelope();
             OMElement bodyContent = null;
-
-            if (resObject instanceof Object[]) {
-                QName resName = new QName(service.getSchematargetNamespace(),
-                        method.getName() + "Response",
-                        service.getSchematargetNamespacePrefix());
-                OMElement bodyChild = RPCUtil.getResponseElement(resName,
-                        (Object[]) resObject, service.isElementFormDefault());
-                envelope.getBody().addChild(bodyChild);
-            } else {
-                if (resObject.getClass().isArray()) {
-                    int length = Array.getLength(resObject);
-                    Object objArray [];
-                    if (resObject instanceof byte[]) {
-                        objArray = new Object[1];
-                        objArray[0] = Base64.encode((byte[]) resObject);
-                    } else {
-                        objArray = new Object[length];
-                        for (int i = 0; i < length; i++) {
-                            objArray[i] = Array.get(resObject, i);
-                        }
-                    }
-                    QName resName = new QName(service.getSchematargetNamespace(),
-                            method.getName() + "Response",
-                            service.getSchematargetNamespacePrefix());
-                    OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
-                            objArray, service.isElementFormDefault());
-                    envelope.getBody().addChild(bodyChild);
-                } else {
-                    if (service.isElementFormDefault()) {
-                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
-                                envelope, method, service.isElementFormDefault(),
-                                service.getTypeTable());
-                    } else {
-                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
-                                envelope, method, service.isElementFormDefault(),
-                                null);
-                    }
-
-                }
-            }
-            outMessage.setEnvelope(envelope);
+            RPCUtil.processResponse(resObject, service,
+                    method, envelope, fac, ns, bodyContent, outMessage);
         } catch (InvocationTargetException e) {
             String msg = null;
             if (e.getCause() != null) {

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCMessageReceiver.java Thu Oct 26 02:28:31 2006
@@ -22,7 +22,6 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
-import org.apache.axiom.om.util.Base64;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
@@ -36,7 +35,6 @@
 import org.apache.commons.logging.LogFactory;
 
 import javax.xml.namespace.QName;
-import java.lang.reflect.Array;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 
@@ -135,46 +133,9 @@
                     service.getSchematargetNamespacePrefix());
             SOAPEnvelope envelope = fac.getDefaultEnvelope();
             OMElement bodyContent = null;
-
-            if (resObject instanceof Object[]) {
-                QName resName = new QName(service.getSchematargetNamespace(),
-                        method.getName() + "Response",
-                        service.getSchematargetNamespacePrefix());
-                OMElement bodyChild = RPCUtil.getResponseElement(resName,
-                        (Object[]) resObject, service.isElementFormDefault());
-                envelope.getBody().addChild(bodyChild);
-            } else {
-                if (resObject.getClass().isArray()) {
-                    int length = Array.getLength(resObject);
-                    Object objArray [];
-                    if (resObject instanceof byte[]) {
-                        objArray = new Object[1];
-                        objArray[0] = Base64.encode((byte[]) resObject);
-                    } else {
-                        objArray = new Object[length];
-                        for (int i = 0; i < length; i++) {
-                            objArray[i] = Array.get(resObject, i);
-                        }
-                    }
-
-                    QName resName = new QName(service.getSchematargetNamespace(),
-                            method.getName() + "Response",
-                            service.getSchematargetNamespacePrefix());
-                    OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
-                            objArray, service.isElementFormDefault());
-                    envelope.getBody().addChild(bodyChild);
-                } else {
-                    if (service.isElementFormDefault()) {
-                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
-                                envelope, method, service.isElementFormDefault(),
-                                service.getTypeTable());
-                    } else {
-                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
-                                envelope, method, service.isElementFormDefault(),
-                                null);
-                    }
-                }
-            }
+            RPCUtil.processResponse(resObject, service,
+                    method, envelope, fac, ns,
+                    bodyContent, outMessage);
             outMessage.setEnvelope(envelope);
         } catch (InvocationTargetException e) {
             String msg = null;

Modified: webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java (original)
+++ webservices/axis2/branches/java/1_1/modules/adb/src/org/apache/axis2/rpc/receivers/RPCUtil.java Thu Oct 26 02:28:31 2006
@@ -5,17 +5,22 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
 import org.apache.axiom.om.impl.llom.factory.OMXMLBuilderFactory;
+import org.apache.axiom.om.util.Base64;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.databinding.typemapping.SimpleTypeMapper;
 import org.apache.axis2.databinding.utils.BeanUtil;
+import org.apache.axis2.databinding.utils.reader.NullXMLStreamReader;
+import org.apache.axis2.description.AxisService;
 import org.apache.axis2.engine.ObjectSupplier;
 import org.apache.axis2.util.StreamWrapper;
 import org.apache.ws.java2wsdl.utils.TypeTable;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamReader;
+import java.lang.reflect.Array;
 import java.lang.reflect.Method;
 /*
 * Copyright 2004,2005 The Apache Software Foundation.
@@ -83,7 +88,7 @@
                     returnWrapper = new QName(RETURN_WRAPPER);
                 }
                 XMLStreamReader xr = BeanUtil.getPullParser(resObject,
-                        returnWrapper, typeTable);
+                        returnWrapper, typeTable, qualified);
                 StAXOMBuilder stAXOMBuilder =
                         OMXMLBuilderFactory.createStAXOMBuilder(
                                 OMAbstractFactory.getOMFactory(), new StreamWrapper(xr));
@@ -104,24 +109,90 @@
         return BeanUtil.deserialize(methodElement, parameters, objectSupplier);
     }
 
-    public static OMElement getResponseElement(QName resname, Object [] objs, boolean qualified) {
+    public static OMElement getResponseElement(QName resname, Object [] objs,
+                                               boolean qualified, TypeTable typeTable) {
         if (qualified) {
             return BeanUtil.getOMElement(resname, objs,
-                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()));
+                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);
         } else {
             return BeanUtil.getOMElement(resname, objs,
-                    new QName(RETURN_WRAPPER));
+                    new QName(RETURN_WRAPPER), qualified, typeTable);
         }
     }
 
-    public static OMElement getResponseElementForArray(QName resname, Object [] objs, boolean qualified) {
+    public static OMElement getResponseElementForArray(QName resname, Object [] objs,
+                                                       boolean qualified, TypeTable typeTable) {
         if (qualified) {
             return BeanUtil.getOMElement(resname, objs,
-                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()));
+                    new QName(resname.getNamespaceURI(), RETURN_WRAPPER, resname.getPrefix()), qualified, typeTable);
         } else {
             return BeanUtil.getOMElement(resname, objs,
-                    new QName(RETURN_WRAPPER));
+                    new QName(RETURN_WRAPPER), qualified, typeTable);
         }
+    }
+
+    public static void processResponse(Object resObject,
+                                       AxisService service,
+                                       Method method,
+                                       SOAPEnvelope envelope,
+                                       SOAPFactory fac,
+                                       OMNamespace ns,
+                                       OMElement bodyContent,
+                                       MessageContext outMessage
+    ) throws Exception {
+        if (resObject == null) {
+            QName resName = new QName(service.getSchematargetNamespace(),
+                    method.getName() + "Response",
+                    service.getSchematargetNamespacePrefix());
+            XMLStreamReader xr = new NullXMLStreamReader(resName);
+            StreamWrapper parser = new StreamWrapper(xr);
+            StAXOMBuilder stAXOMBuilder =
+                    OMXMLBuilderFactory.createStAXOMBuilder(
+                            OMAbstractFactory.getSOAP11Factory(), parser);
+            OMElement bodyChild = stAXOMBuilder.getDocumentElement();
+            envelope.getBody().addChild(bodyChild);
+        } else {
+            if (resObject instanceof Object[]) {
+                QName resName = new QName(service.getSchematargetNamespace(),
+                        method.getName() + "Response",
+                        service.getSchematargetNamespacePrefix());
+                OMElement bodyChild = RPCUtil.getResponseElement(resName,
+                        (Object[]) resObject, service.isElementFormDefault(), service.getTypeTable());
+                envelope.getBody().addChild(bodyChild);
+            } else {
+                if (resObject.getClass().isArray()) {
+                    int length = Array.getLength(resObject);
+                    Object objArray [];
+                    if (resObject instanceof byte[]) {
+                        objArray = new Object[1];
+                        objArray[0] = Base64.encode((byte[]) resObject);
+                    } else {
+                        objArray = new Object[length];
+                        for (int i = 0; i < length; i++) {
+                            objArray[i] = Array.get(resObject, i);
+                        }
+                    }
+
+                    QName resName = new QName(service.getSchematargetNamespace(),
+                            method.getName() + "Response",
+                            service.getSchematargetNamespacePrefix());
+                    OMElement bodyChild = RPCUtil.getResponseElementForArray(resName,
+                            objArray, service.isElementFormDefault(), service.getTypeTable());
+                    envelope.getBody().addChild(bodyChild);
+                } else {
+                    if (service.isElementFormDefault()) {
+                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
+                                envelope, method, service.isElementFormDefault(),
+                                service.getTypeTable());
+                    } else {
+                        RPCUtil.processResponse(fac, resObject, bodyContent, ns,
+                                envelope, method, service.isElementFormDefault(),
+                                null);
+                    }
+                }
+            }
+        }
+        outMessage.setEnvelope(envelope);
     }
 
 }

Modified: webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java?view=diff&rev=467932&r1=467931&r2=467932
==============================================================================
--- webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java (original)
+++ webservices/axis2/branches/java/1_1/modules/kernel/src/org/apache/axis2/description/OutInAxisOperation.java Thu Oct 26 02:28:31 2006
@@ -268,7 +268,7 @@
              * response message.
              */
             Boolean useCustomListener = (Boolean) options.getProperty(Constants.Configuration.USE_CUSTOM_LISTENER);
-            if (useCustomListener==null || useCustomListener.booleanValue()==false) {
+            if (useCustomListener==null || !useCustomListener.booleanValue()) {
 
                 EndpointReference replyToFromTransport = mc.getConfigurationContext().getListenerManager().
                 getEPRforService(sc.getAxisService().getName(), axisOp.getName().getLocalPart(), mc



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org