[ 
https://issues.apache.org/jira/browse/AXIS2-5190?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13158117#comment-13158117
 ] 

Brett Walker commented on AXIS2-5190:
-------------------------------------

Hi Sangara,

This exception is occuring on client-side. I have attached the relevant WSDL 
and the associated XSD in the wsdl.zip attachment as you have requested.

Given the xml string contained in the request.xml attachment I performed the 
following actions

  StringReader in = new StringReader( xmlString );
  XMLStreamReader reader = StAXUtils.createXMLStreamReader( in );

  try
  {
    ManageContentRequest.Factory.parse( reader );
  }
  catch ( Exception e )
  {
    this.log.error( xmlString );
    this.log.info( e.getLocalizedMessage(), e );
    e.printStackTrace();
  }

The xmlString is a string; it is not read from a file. The production of the 
xmlString is beyond my immediate control as it is produced by another system. I 
take this xmlString and perfom a web service request. I have not got to the 
stage of making the request as I have yet to obtain a valid 
ManageContentRequest object from the parse method of the Factory object.

The stacktrace in the original description occurs when I try to parse the XML 
string. The XML String is faulty as I latter discovered. The URL about 1/3 of 
the way into the string is invalid. A MalformedURLException is the root cause 
of the stacktrace but this is obfuscated but the ArrayStoreException being 
thrown.

See my original comment about the issue. Better error handling is needed IMHO.

Hope this clarifies the situation.

Brett
                
> Throwing ArrayStoreException on construction of URI List
> --------------------------------------------------------
>
>                 Key: AXIS2-5190
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5190
>             Project: Axis2
>          Issue Type: Bug
>          Components: databinding
>    Affects Versions: 1.6.1
>         Environment: Windows 7, 64-bit; Java 1.6.0_24; Tomcat 7.0.8
>            Reporter: Brett Walker
>            Priority: Minor
>         Attachments: request.xml, service.xsd, wsdl.zip
>
>
> This stacktrace is generated on the client side when constructing Java 
> classes by parsing xml data
> org.apache.axis2.databinding.utils.ConverterUtil$ObjectConversionException: 
> java.lang.ArrayStoreException 
>   at 
> org.apache.axis2.databinding.utils.ConverterUtil.ConvertToArbitraryObjectArray(ConverterUtil.java:1211)
>  
>   at 
> org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(ConverterUtil.java:1172)
>  
>   at 
> au.gov.business.ablis._2011_09.data.ServiceType$Factory.parse(ServiceType.java:3864)
>  
>   at 
> au.gov.business.ablis._2011_09.messages.contentmanagement.RequestItemChoice_type0$Factory.parse(RequestItemChoice_type0.java:1202)
>  
>   at 
> au.gov.business.ablis._2011_09.messages.contentmanagement.RequestItem_type0$Factory.parse(RequestItem_type0.java:463)
>  
>   at 
> au.gov.business.ablis._2011_09.messages.contentmanagement.ManageContentRequest$Factory.parse(ManageContentRequest.java:544)
>  
>   at 
> com.geometryit.blis.production.Publish.publishLicenceUsingWebService(Publish.java:762)
>  
>   .. 21  more (mainly tomcat portion of stacktrace, excluded for brevity)
> Caused by: java.lang.ArrayStoreException 
>   at java.lang.System.arraycopy(Native Method) 
>   at java.util.ArrayList.toArray(ArrayList.java:306) 
>   at 
> org.apache.axis2.databinding.utils.ConverterUtil.ConvertToArbitraryObjectArray(ConverterUtil.java:1207)
>  
>   ... 27 more 
> The section of code that creates the Java classes follows:
> 757        StringReader in = new StringReader( xmlString ); 
> 758        XMLStreamReader reader = StAXUtils.createXMLStreamReader( in ); 
> 759 
> 760        try 
> 761        { 
> 762          ManageContentRequest.Factory.parse( reader ); 
> 763        } 
> 764        catch ( Exception e ) 
> 765        { 
> 766          this.log.error( xmlString ); 
> 767          this.log.info( e.getLocalizedMessage(), e ); 
> 768          e.printStackTrace(); 
> 769        } 
> The portion of the Java-Axis2 class that is involved in the stacktrace is 
>       java.util.ArrayList list25 = new java.util.ArrayList();
>       // Process the array and step past its final element's end.
>       list25.add(reader.getElementText());
>       //loop until we find a start element that is not part of this array
>       boolean loopDone25 = false;
>       while(!loopDone25){
>         // Ensure we are at the EndElement
>         while (!reader.isEndElement()){
>           reader.next();
>         }
>         // Step out of this element
>         reader.next();
>         // Step to next element event.
>         while (!reader.isStartElement() && !reader.isEndElement())
>           reader.next();
>         if (reader.isEndElement()){
>           //two continuous end elements means we are exiting the xml structure
>           loopDone25 = true;
>         } else {
>           if (new 
> javax.xml.namespace.QName("http://ablis.business.gov.au/2011-09/Data","URL";).equals(reader.getName())){
>             list25.add(reader.getElementText());
>           }else{
>             loopDone25 = true;
>           }
>         }
>       }
>           // call the converter utility  to convert and set the array
>       object.setURL((org.apache.axis2.databinding.types.URI[])
> 3864    org.apache.axis2.databinding.utils.ConverterUtil.convertToArray(
>           org.apache.axis2.databinding.types.URI.class,list25));
> See the attachments for the relevant xml string and the relevant xsd. These 
> are not complete files but snippets. More detailed information can be 
> provided if required.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to