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/09/01 06:13:44 UTC

svn commit: r439165 - in /webservices/axis2/trunk/java/modules: adb/src/org/apache/axis2/databinding/utils/ integration/test/org/apache/axis2/rpc/ java2wsdl/src/org/apache/ws/java2wsdl/

Author: deepal
Date: Thu Aug 31 21:13:43 2006
New Revision: 439165

URL: http://svn.apache.org/viewvc?rev=439165&view=rev
Log:
- fixed nil handling in RPC Message receiver

Modified:
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
    webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
    webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
    webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java?rev=439165&r1=439164&r2=439165&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/BeanUtil.java Thu Aug 31 21:13:43 2006
@@ -92,12 +92,12 @@
                 }
                 if (SimpleTypeMapper.isSimpleType(ptype)) {
                     Object value = propDesc.getReadMethod().invoke(beanObject,
-                            (Object[]) null);
+                            null);
                     object.add(new QName(beanName.getNamespaceURI(), propDesc.getName(), beanName.getPrefix()));
                     object.add(value == null ? null : SimpleTypeMapper.getStringValue(value));
                 } else if (ptype.isArray()) {
                     Object value [] = (Object[]) propDesc.getReadMethod().invoke(beanObject,
-                            (Object[]) null);
+                            null);
                     if (SimpleTypeMapper.isSimpleType(ptype.getComponentType())) {
                         for (int j = 0; j < value.length; j++) {
                             Object o = value[j];
@@ -114,7 +114,7 @@
 
                 } else if (SimpleTypeMapper.isArrayList(ptype)) {
                     Object value = propDesc.getReadMethod().invoke(beanObject,
-                            (Object[]) null);
+                            null);
                     ArrayList objList = (ArrayList) value;
                     if (objList != null && objList.size() > 0) {
                         //this was given error , when the array.size = 0
@@ -135,7 +135,7 @@
                 } else {
                     object.add(new QName(propDesc.getName()));
                     Object value = propDesc.getReadMethod().invoke(beanObject,
-                            (Object[]) null);
+                            null);
                     object.add(value);
                 }
             }
@@ -404,8 +404,9 @@
                     done = false;
                     break;
                 }
-                valueList.add(processObject(omElement, arrayClassType,
-                        helper));
+                Object o = processObject(omElement, arrayClassType,
+                        helper);
+                valueList.add(o);
             }
             retObjs[count] = ConverterUtil.convertToArray(arrayClassType,
                     valueList);
@@ -447,6 +448,11 @@
                     return helper.processRef(classType, ref);
                 }
             } else {
+                OMAttribute attribute = omElement.getAttribute(
+                        new QName("http://www.w3.org/2001/XMLSchema-instance", "nil", "xsi"));
+                if (attribute != null) {
+                    return null;
+                }
                 if (SimpleTypeMapper.isSimpleType(classType)) {
                     return SimpleTypeMapper.getSimpleTypeObject(classType, omElement);
                 } else if (SimpleTypeMapper.isArrayList(classType)) {
@@ -465,6 +471,8 @@
         for (int i = 0; i < args.length; i++) {
             Object arg = args[i];
             if (arg == null) {
+                objects.add("item" + i);
+                objects.add(arg);
                 continue;
             }
             //todo if the request parameter has name other than argi (0<i<n) , there should be a

Modified: webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java?rev=439165&r1=439164&r2=439165&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java (original)
+++ webservices/axis2/trunk/java/modules/adb/src/org/apache/axis2/databinding/utils/ConverterUtil.java Thu Aug 31 21:13:43 2006
@@ -1,48 +1,19 @@
 package org.apache.axis2.databinding.utils;
 
+import org.apache.axiom.attachments.ByteArrayDataSource;
+import org.apache.axiom.attachments.utils.IOUtils;
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axiom.om.impl.builder.StAXOMBuilder;
-import org.apache.axiom.attachments.ByteArrayDataSource;
-import org.apache.axiom.attachments.utils.IOUtils;
-import org.apache.axis2.databinding.types.Day;
-import org.apache.axis2.databinding.types.Duration;
-import org.apache.axis2.databinding.types.Entities;
-import org.apache.axis2.databinding.types.Entity;
-import org.apache.axis2.databinding.types.HexBinary;
-import org.apache.axis2.databinding.types.IDRef;
-import org.apache.axis2.databinding.types.IDRefs;
-import org.apache.axis2.databinding.types.Id;
-import org.apache.axis2.databinding.types.Language;
-import org.apache.axis2.databinding.types.Month;
-import org.apache.axis2.databinding.types.MonthDay;
-import org.apache.axis2.databinding.types.NCName;
-import org.apache.axis2.databinding.types.NMToken;
-import org.apache.axis2.databinding.types.NMTokens;
-import org.apache.axis2.databinding.types.Name;
-import org.apache.axis2.databinding.types.NegativeInteger;
-import org.apache.axis2.databinding.types.NonNegativeInteger;
-import org.apache.axis2.databinding.types.NonPositiveInteger;
-import org.apache.axis2.databinding.types.NormalizedString;
-import org.apache.axis2.databinding.types.Notation;
-import org.apache.axis2.databinding.types.PositiveInteger;
-import org.apache.axis2.databinding.types.Time;
-import org.apache.axis2.databinding.types.Token;
-import org.apache.axis2.databinding.types.URI;
-import org.apache.axis2.databinding.types.UnsignedByte;
-import org.apache.axis2.databinding.types.UnsignedInt;
-import org.apache.axis2.databinding.types.UnsignedLong;
-import org.apache.axis2.databinding.types.UnsignedShort;
-import org.apache.axis2.databinding.types.Year;
-import org.apache.axis2.databinding.types.YearMonth;
+import org.apache.axiom.om.util.StAXUtils;
 import org.apache.axis2.databinding.i18n.ADBMessages;
+import org.apache.axis2.databinding.types.*;
 import org.apache.axis2.util.Base64;
 
+import javax.activation.DataHandler;
 import javax.xml.namespace.QName;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
-import javax.activation.DataHandler;
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 import java.lang.reflect.Array;
@@ -51,12 +22,7 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.List;
-import java.util.TimeZone;
+import java.util.*;
 /*
  * Copyright 2004,2005 The Apache Software Foundation.
  *
@@ -102,7 +68,7 @@
     }
 
     public static String convertToString(byte i) {
-        return ((int)i)+"";
+        return ((int) i) + "";
     }
 
     public static String convertToString(char i) {
@@ -124,7 +90,7 @@
         synchronized (calendar) {
             if (calendar.get(Calendar.ERA) == GregorianCalendar.BC) {
                 buf.append("-");
-                calendar.setTime((Date)value);
+                calendar.setTime((Date) value);
                 calendar.set(Calendar.ERA, GregorianCalendar.AD);
                 value = calendar.getTime();
             }
@@ -168,6 +134,7 @@
     public static String convertToString(Time o) {
         return o.toString();
     }
+
     public static String convertToString(Byte o) {
         return o.toString();
     }
@@ -175,6 +142,7 @@
     public static String convertToString(BigInteger o) {
         return o.toString();
     }
+
     public static String convertToString(Integer o) {
         return o.toString();
     }
@@ -243,9 +211,9 @@
     }
 
     public static double convertToDouble(String s) {
-        if (POSITIVE_INFINITY.equals(s)){
+        if (POSITIVE_INFINITY.equals(s)) {
             return Double.POSITIVE_INFINITY;
-        }else if (NEGATIVE_INFINITY.equals(s)){
+        } else if (NEGATIVE_INFINITY.equals(s)) {
             return Double.NEGATIVE_INFINITY;
         }
         return Double.parseDouble(s);
@@ -256,9 +224,9 @@
     }
 
     public static float convertToFloat(String s) {
-        if (POSITIVE_INFINITY.equals(s)){
+        if (POSITIVE_INFINITY.equals(s)) {
             return Float.POSITIVE_INFINITY;
-        }else if (NEGATIVE_INFINITY.equals(s)){
+        } else if (NEGATIVE_INFINITY.equals(s)) {
             return Float.NEGATIVE_INFINITY;
         }
         return Float.parseFloat(s);
@@ -288,12 +256,13 @@
         try {
             XMLStreamReader r = StAXUtils.createXMLStreamReader(
                     new ByteArrayInputStream(s.getBytes()));
-            StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(),r);
+            StAXOMBuilder builder = new StAXOMBuilder(OMAbstractFactory.getOMFactory(), r);
             return builder.getDocumentElement();
         } catch (XMLStreamException e) {
             return null;
         }
     }
+
     public static YearMonth convertToGYearMonth(String s) {
         return new YearMonth(s);
     }
@@ -324,17 +293,17 @@
     }
 
     public static javax.activation.DataHandler convertToBase64Binary(String s)
-            throws Exception{
+            throws Exception {
         // reusing the byteArrayDataSource from the Axiom classes
         ByteArrayDataSource byteArrayDataSource = new ByteArrayDataSource(
                 Base64.decode(s)
         );
         return new DataHandler(byteArrayDataSource);
     }
-    
+
     public static javax.activation.DataHandler convertToDataHandler(String s)
-    		throws Exception{
-    	return convertToBase64Binary(s);
+            throws Exception {
+        return convertToBase64Binary(s);
     }
 
     /**
@@ -399,7 +368,6 @@
     }
 
 
-
     public static NormalizedString convertToNormalizedString(String s) {
         return new NormalizedString(s);
     }
@@ -449,9 +417,9 @@
     }
 
     public static Id convertToId(String s) {
-    	return convertToID(s);
+        return convertToID(s);
     }
-        
+
     public static Language convertToLanguage(String s) {
         return new Language(s);
     }
@@ -494,9 +462,9 @@
     }
 
     public static BigInteger convertToBigInteger(String s) {
-    	return convertToInteger(s);
+        return convertToInteger(s);
     }
-    
+
     public static byte convertToByte(String s) throws Exception {
         return Byte.parseByte(s);
     }
@@ -504,6 +472,7 @@
     /**
      * Code from Axis1 code base
      * Note - We only follow the convention in the latest schema spec
+     *
      * @param source
      * @return Returns Calendar.
      * @throws Exception
@@ -616,19 +585,19 @@
 
     /**
      * Code from Axis1 code base
+     *
      * @param source
      * @return Returns QName.
      */
     public static QName convertToQName(String source) {
         source = source.trim();
         int colon = source.lastIndexOf(":");
-        String namespace = colon < 0 ? "" : "" ;// todo Fix this. Need to take a namespace with this
+        String namespace = colon < 0 ? "" : "";// todo Fix this. Need to take a namespace with this
         //context.getNamespaceURI(source.substring(0, colon));
         String localPart = colon < 0 ? source : source.substring(colon + 1);
         return new QName(namespace, localPart);
     }
 
-
     /* ################################################################# */
 
     /* java Primitive types to Object conversion methods */
@@ -707,26 +676,33 @@
             for (int i = 0; i < listSize; i++) {
                 Array.setDouble(returnArray, i, Double.parseDouble(objectList.get(i).toString()));
             }
-        } else{
-            ConvertToArbitraryObjectArray( returnArray, baseArrayClass, objectList);
+        } else {
+            ConvertToArbitraryObjectArray(returnArray, baseArrayClass, objectList);
         }
         return returnArray;
     }
 
     /**
-     * 
      * @param returnArray
      * @param baseArrayClass
      * @param objectList
      */
-    private static void ConvertToArbitraryObjectArray(                                                     Object returnArray,
+    private static void ConvertToArbitraryObjectArray(Object returnArray,
                                                       Class baseArrayClass,
                                                       List objectList) {
         try {
             for (int i = 0; i < objectList.size(); i++) {
-                Array.set(returnArray, i, getObjectForClass(
-                        baseArrayClass,
-                        objectList.get(i).toString()));
+                Object o = objectList.get(i);
+                if (o == null) {
+                    Array.set(returnArray, i, getObjectForClass(
+                            baseArrayClass,
+                            null));
+                } else {
+                    Array.set(returnArray, i, getObjectForClass(
+                            baseArrayClass,
+                            o.toString()));
+                }
+
             }
             return;
         } catch (Exception e) {
@@ -735,7 +711,7 @@
         }
 
         try {
-            objectList.toArray((Object[])returnArray);
+            objectList.toArray((Object[]) returnArray);
         } catch (Exception e) {
             //we are over with alternatives - throw the
             //converison exception
@@ -746,14 +722,15 @@
     /**
      * We could have used the Arraya.asList() method
      * but that returns an *immutable* list !!!!!
+     *
      * @param array
      * @return
      */
-    public static List toList(Object[] array){
-        if (array==null){
+    public static List toList(Object[] array) {
+        if (array == null) {
             return new ArrayList();
-        }else{
-            ArrayList list =  new ArrayList();
+        } else {
+            ArrayList list = new ArrayList();
             for (int i = 0; i < array.length; i++) {
                 list.add(array[i]);
             }
@@ -763,9 +740,10 @@
 
     /**
      * Converts the given datahandler to a string
+     *
      * @return
      */
-    public static String getStringFromDatahandler(DataHandler dataHandler){
+    public static String getStringFromDatahandler(DataHandler dataHandler) {
         try {
             InputStream inStream;
             inStream = dataHandler.getDataSource().getInputStream();
@@ -779,11 +757,12 @@
     /**
      * A reflection based method to generate an instance of
      * a given class and populate it with a given value
+     *
      * @param clazz
      * @param value
      * @return
      */
-    public static Object getObjectForClass(Class clazz,String value){
+    public static Object getObjectForClass(Class clazz, String value) {
         //first see whether this class has a constructor that can
         //take the string as an argument.
         boolean continueFlag = false;
@@ -801,16 +780,16 @@
                     e);
         }
 
-        if (!continueFlag){
+        if (!continueFlag) {
             throw new ObjectConversionException(
                     ADBMessages.getMessage("converter.cannotConvert",
                             clazz.getName()));
         }
 
         try {
-            Method parseMethod =  clazz.getMethod("parse",new Class[]{String.class});
+            Method parseMethod = clazz.getMethod("parse", new Class[]{String.class});
             Object instance = clazz.newInstance();
-            return parseMethod.invoke(instance,new Object[]{value});
+            return parseMethod.invoke(instance, new Object[]{value});
         } catch (NoSuchMethodException e) {
             throw new ObjectConversionException(
                     ADBMessages.getMessage("converter.cannotConvert",
@@ -827,7 +806,7 @@
     /**
      * A simple exception that is thrown when the conversion fails
      */
-    public static class ObjectConversionException extends RuntimeException{
+    public static class ObjectConversionException extends RuntimeException {
         public ObjectConversionException() {
         }
 

Modified: webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java?rev=439165&r1=439164&r2=439165&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java (original)
+++ webservices/axis2/trunk/java/modules/integration/test/org/apache/axis2/rpc/RPCCallTest.java Thu Aug 31 21:13:43 2006
@@ -41,8 +41,6 @@
 import org.apache.axis2.rpc.client.RPCServiceClient;
 import org.apache.axis2.rpc.receivers.RPCMessageReceiver;
 import org.apache.axis2.wsdl.WSDLConstants;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 
 import javax.xml.namespace.QName;
 import javax.xml.stream.FactoryConfigurationError;
@@ -62,7 +60,6 @@
 
 
     protected EndpointReference targetEPR;
-	private static final Log log = LogFactory.getLog(RPCCallTest.class);
     protected QName serviceName = new QName("EchoXMLService");
     protected QName operationName = new QName("http://org.apache.axis2/xsd", "concat");
     protected QName transportName = new QName("http://org.apache.axis2/xsd",

Modified: webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java?rev=439165&r1=439164&r2=439165&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java (original)
+++ webservices/axis2/trunk/java/modules/java2wsdl/src/org/apache/ws/java2wsdl/SchemaGenerator.java Thu Aug 31 21:13:43 2006
@@ -358,6 +358,7 @@
         if (isArray) {
             elt1.setMaxOccurs(Long.MAX_VALUE);
             elt1.setMinOccurs(1);
+            elt1.setNillable(true);
         }
     }
 



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