axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Leif Mortenson (JIRA)" <axis-...@ws.apache.org>
Subject [jira] Created: (AXIS-2504) ElementDesc class incorrect for String[]
Date Mon, 19 Jun 2006 06:38:29 GMT
ElementDesc class incorrect for String[]
----------------------------------------

         Key: AXIS-2504
         URL: http://issues.apache.org/jira/browse/AXIS-2504
     Project: Apache Axis
        Type: Bug

  Components: Deployment / Registries  
    Versions: 1.4    
    Reporter: Leif Mortenson


I have a class which generates output based on the descriptor objects of a deployed web application.
  One of my operations take an object as a parameter.  That object has a field of class String[].
  The operation itself all works perfectly.   However when I ElementDesc for that field getFields
of the TypeDesc, the getXmlType() method always returns a QName that resolves to String.class.

>From the API, it looks like the getArrayType() should be returning a QName which resolves
to String[].class.  In my case ArrayOf_xsd_string.

Looking at the code, the getArrayType method currently always returns null.

I was able to fix this by modifying the following class: 

org.apache.axis.wsdl.toJava.JavaBeanHelperWriter:
-----
Index: D:/Apache/axis-1.x-svn/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java
===================================================================
--- D:/Apache/axis-1.x-svn/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java	(revision
415249)
+++ D:/Apache/axis-1.x-svn/src/org/apache/axis/wsdl/toJava/JavaBeanHelperWriter.java	(working
copy)
@@ -328,13 +328,13 @@
                     // Some special handling for arrays.
                     TypeEntry elemType = elem.getType();
                     QName xmlType = null;
-
+                    QName arrayType = null;
                     if ((elemType.getDimensions().length() > 1)
                             && (elemType.getClass() == DefinedType.class)) {
-
                         // If we have a DefinedType with dimensions, it must
                         // be a SOAP array derived type.  In this case, use
                         // the refType's QName for the metadata.
+                        arrayType = elemType.getQName();
                         elemType = elemType.getRefType();
                     } else if (elemType.getClass() == DefinedElement.class
                             && elemType.getRefType() != null) {
@@ -375,6 +375,10 @@
                         pw.println("        elemField.setXmlType("
                                 + Utils.getNewQName(xmlType) + ");");
                     }
+                    if (arrayType != null) {
+                        pw.println("        elemField.setArrayType("
+                                + Utils.getNewQName(arrayType) + ");");
+                    }
 
                     if (elem.getMinOccursIs0()) {
                         pw.println("        elemField.setMinOccurs(0);");
@@ -388,6 +392,7 @@
                     if(elem.getMaxOccursIsUnbounded()) {
                         pw.println("        elemField.setMaxOccursUnbounded(true);");
                     }
+                    
                     QName itemQName = elem.getType().getItemQName();
                     if (itemQName != null) {
                         pw.println("        elemField.setItemQName(" +
-----

Thanks,
Leif

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


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


Mime
View raw message