axis-c-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nadira...@apache.org
Subject svn commit: r1349033 - /axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
Date Mon, 11 Jun 2012 21:46:48 GMT
Author: nadiramra
Date: Mon Jun 11 21:46:48 2012
New Revision: 1349033

URL: http://svn.apache.org/viewvc?rev=1349033&view=rev
Log:
Minor, need to obtain reference type for arrays...

Modified:
    axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java

Modified: axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java
URL: http://svn.apache.org/viewvc/axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java?rev=1349033&r1=1349032&r2=1349033&view=diff
==============================================================================
--- axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java (original)
+++ axis/axis1/c/trunk/src/wsdl/org/apache/axis/wsdl/wsdl2ws/info/WSDLInfo.java Mon Jun 11
21:46:48 2012
@@ -625,22 +625,19 @@ public class WSDLInfo
         
         if (-1 != type.getQName().getLocalPart().indexOf('['))
         { 
-            /* it seems that this is an array */
-            if (null == type.getRefType())
-                throw new WrapperFault("Array type found without a Ref type");
+            // An array...
             
-            // Handle array that references an element
-            QName qn = type.getRefType().getQName();
-            // TODO
-//            if (type.getRefType().getRefType() != null)
-//                qn = type.getRefType().getRefType().getQName();
-           
-            if (null == qn)
-                throw new WrapperFault("Array type found without a Ref type");
+            // Get referenced type
+            TypeEntry typeEntryOfRefType = getActualRefType(type);
+            if (null == typeEntryOfRefType || typeEntryOfRefType.getQName() == null)
+                throw new WrapperFault("Array type found without a Ref type: " + type.getQName());
             
+            // If referenced type is primitive, we are done...
+            QName qn = typeEntryOfRefType.getQName();
             if (CUtils.isPrimitiveType(qn))
                 return null;
             
+            // Create array 
             QName newqn;
             if (useCounter)
             {
@@ -651,7 +648,7 @@ public class WSDLInfo
             else
                 newqn = new QName(type.getQName().getNamespaceURI(), qn.getLocalPart() +
"_Array");
             
-            // type is a inbuilt type or a already created type?
+            // type is a inbuilt type or an already created type?
             typedata = c_typeMap.getType(newqn);
             if (typedata != null)
             {
@@ -898,6 +895,29 @@ public class WSDLInfo
     }    
     
     /**
+     * Returns the actual referenced type (i.e. a defined type or base type)
+     *  
+     * @param type
+     * @return
+     */
+    private TypeEntry getActualRefType(TypeEntry type)
+    {
+        if (type == null)
+            return null;
+        
+        TypeEntry rt = type.getRefType();
+        
+        if (rt != null)
+        {
+            if (rt instanceof org.apache.axis.wsdl.symbolTable.DefinedType 
+                    || rt instanceof org.apache.axis.wsdl.symbolTable.BaseType)
+                return rt;
+        }
+        
+        return getActualRefType(rt);
+    }
+
+    /**
      * If the specified node represents a supported JAX-RPC restriction,
      * a Vector is returned which contains the base type and the values (enumerations etc).
      * The first element in the vector is the base type (an TypeEntry).



Mime
View raw message