DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7270>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=7270

Error when mapping Arrays to Collections

           Summary: Error when mapping Arrays to Collections
           Product: Axis
           Version: beta-1
          Platform: PC
               URL: http://www.silbergrau.com
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: Basic Architecture
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]
                CC: [EMAIL PROTECTED]


Remote method takes a Collection as argument and returns a Collection. 
Type of parameter sent is "xsd:anyType[3]" and contains 3 TypeA arguments
(Note that this there could be types extending TypeA in there!)

Seems that AXIS tries to map this to Object[] altough parameter is Collection:
"java.lang.IllegalArgumentException: argument type mismatch on object 
  &quot;com.silbergrau.services.providers.tests.services.TestService&quot;, 
  method name &quot;passThroughCollection&quot;, tried argument types:  
[Ljava.lang.Object;"


TYPES: 
------
public class TypeA {
  private TypeA reference;
}

public class TypeB extends TypeA {
}

Remote method = Collection passThroughCollection(Collection collection)

REQUEST ENVELOPE: 
-----------------

Collection c = new ArrayList(); 
c.add(new TypeA()); 
c.add(new TypeA()); 
c.add(new TypeA()); 

<soap-env:Envelope xmlns:soap-enc11="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:soap-
enc12="http://www.w3.org/2001/06/soap-encoding"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:silbergrauSoapExtensions="http://www.silbergrau.com/soap/extensions";>
  <soap-env:Body>
    <ns2:passThroughCollection xmlns:ns2="TestService">
      <param soap-env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"; 
xsi:type="soap-enc11:Array" id="5" soap-enc11:arrayType="xsd:anyType[3]">
        <item xsi:type="ns3:TypeA" id="6" 
xmlns:ns3="http://www.silbergrau.com/schemas/encodedTypes";>
          <reference xsi:type="ns3:TypeA" xsi:null="1" 
xsi:nil="true"></reference>
        </item>
        <item xsi:type="ns4:TypeB" id="7" 
xmlns:ns4="http://www.silbergrau.com/schemas/encodedTypes";>
          <reference xsi:type="ns4:TypeA" xsi:null="1" 
xsi:nil="true"></reference>
        </item>
        <item xsi:type="ns5:TypeC" id="8" 
xmlns:ns5="http://www.silbergrau.com/schemas/encodedTypes";>
          <reference xsi:type="ns5:TypeA" xsi:null="1" 
xsi:nil="true"></reference>
        </item>
      </param>
    </ns2:passThroughCollection>
  </soap-env:Body>
</soap-env:Envelope>

RESPONSE ENVELOPE
-----------------
<soap-env:Envelope xmlns:soap-enc11="http://schemas.xmlsoap.org/soap/encoding/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns:soap-
env="http://schemas.xmlsoap.org/soap/envelope/"; xmlns:soap-
enc12="http://www.w3.org/2001/06/soap-encoding"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xmlns:silbergrauSoapExtensions="http://www.silbergrau.com/soap/extensions";>
  <soap-env:Body>
    <soap-env:Fault>
      <faultcode 
xmlns:ns1="http://xml.apache.org/axis/";>ns1:Server.userException</faultcode>
      <faultstring>java.lang.IllegalArgumentException: argument type mismatch 
on object 
&quot;com.silbergrau.services.providers.tests.services.TestService&quot;, 
method name &quot;passThroughCollection&quot;, tried argument types:  
[Ljava.lang.Object;</faultstring>
    <detail>
      <ns2:stackTrace 
xmlns:ns2="http://xml.apache.org/axis/";>java.lang.IllegalArgumentException: 
argument type mismatch on object 
&quot;com.silbergrau.services.providers.tests.services.TestService&quot;, 
method name &quot;passThroughCollection&quot;, tried argument types:  
[Ljava.lang.Object;&#xd;
        at org.apache.axis.providers.java.RPCProvider.processMessage(Unknown 
Source)&#xd;
        at org.apache.axis.providers.java.JavaProvider.invoke(Unknown Source)
&#xd;
        at org.apache.axis.strategies.InvocationStrategy.visit(Unknown Source)
&#xd;
        at org.apache.axis.SimpleChain.doVisiting(Unknown Source)&#xd;
        at org.apache.axis.SimpleChain.invoke(Unknown Source)&#xd;
        at org.apache.axis.server.AxisServer.invoke(Unknown Source)&#xd;
        at org.apache.axis.transport.http.AxisServlet.doPost(Unknown Source)
&#xd;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)&#xd;
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)&#xd;
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:247)&#xd;
        at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:193)&#xd;
        at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:243)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
&#xd;
        at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:201)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
&#xd;
        at org.apache.catalina.core.StandardContext.invoke
(StandardContext.java:2344)&#xd;
        at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:164)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)&#xd;
        at org.apache.catalina.valves.ErrorDispatcherValve.invoke
(ErrorDispatcherValve.java:170)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)&#xd;
        at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:170)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)&#xd;
        at org.apache.catalina.valves.AccessLogValve.invoke
(AccessLogValve.java:462)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:564)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
&#xd;
        at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:163)&#xd;
        at org.apache.catalina.core.StandardPipeline.invokeNext
(StandardPipeline.java:566)&#xd;
        at org.apache.catalina.core.StandardPipeline.invoke
(StandardPipeline.java:472)&#xd;
        at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
&#xd;
        at org.apache.catalina.connector.http.HttpProcessor.process
(HttpProcessor.java:1011)&#xd;
        at org.apache.catalina.connector.http.HttpProcessor.run
(HttpProcessor.java:1106)&#xd;
        at java.lang.Thread.run(Thread.java:484)&#xd;
        </ns2:stackTrace>
      </detail>
    </soap-env:Fault>
  </soap-env:Body>
</soap-env:Envelope>

Reply via email to