axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Todd Doolittle (JIRA)" <j...@apache.org>
Subject [jira] Created: (AXIS2-1780) WSDL2JAVA fails with multiple anonymous simple types
Date Tue, 28 Nov 2006 17:30:21 GMT
WSDL2JAVA fails with multiple anonymous simple types
----------------------------------------------------

                 Key: AXIS2-1780
                 URL: http://issues.apache.org/jira/browse/AXIS2-1780
             Project: Apache Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: codegen
    Affects Versions: 1.1
         Environment: JRE1.4.2, Tomcat 4, Axis 2 1.1
            Reporter: Todd Doolittle
            Priority: Blocker


The problem is that WSDL2JAVA fails when there is more than 1 anonymous simple type.  For
some reason it works fine if there is 1 anonymous simple type.  I'm not sure but this may
affect multiple anonymous complex types as well.

Consider  the example where the schema defines 2 elements (first and last name).  If the schema
defined in the WSDL includes 1 anonymous simple type, everything works fine (like this)...

<xsd:element name="firstName">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="10" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

<xsd:element name="lastName" type="xsd:string" />


As soon as you add more than one anonymous simple type (like below) WSDL2JAVA throws an exception.
<xsd:element name="firstName">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="10" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

<xsd:element name="lastName">
  <xsd:simpleType>
    <xsd:restriction base="xsd:string">
      <xsd:maxLength value="20" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:element>

The exception and full WSDL is listed at the bottom of this email.  We can work around this
problem by pulling out all the anonymous simple types and creating named types.  However we
are not the ones generating the service code and WSDL.  It is being generated by another language
and it uses these anonymous simple (and complex) types extensively.  So we would have to do
this for some very complex WSDL across a lot of services and hundreds of operations.  And
each time a service or operation was changed we have to do it by hand all over again which
would be very tedious and error prone. 

Exception in thread "main" org.apache.axis2.wsdl.codegen.CodeGenerationException
: java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:224)
        at org.apache.axis2.wsdl.WSDL2Code.main(WSDL2Code.java:32)
        at org.apache.axis2.wsdl.WSDL2Java.main(WSDL2Java.java:21)
Caused by: java.lang.RuntimeException: java.lang.reflect.InvocationTargetExcepti
on
        at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(Simp
leDBExtension.java:52)
        at org.apache.axis2.wsdl.codegen.CodeGenerationEngine.generate(CodeGener
ationEngine.java:177)
        ... 2 more
Caused by: java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.axis2.wsdl.codegen.extension.SimpleDBExtension.engage(Simp
leDBExtension.java:49)
        ... 3 more
Caused by: org.apache.axis2.schema.SchemaCompilationException: java.lang.NullPoi
nterException
        at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:25
7)
        at org.apache.axis2.schema.ExtensionUtility.invoke(ExtensionUtility.java
:72)
        ... 8 more
Caused by: java.lang.NullPointerException
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.
java:592)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.
java:489)
        at org.apache.axis2.schema.SchemaCompiler.process(SchemaCompiler.java:14
88)
        at org.apache.axis2.schema.SchemaCompiler.processParticle(SchemaCompiler
.java:1450)
        at org.apache.axis2.schema.SchemaCompiler.processComplexType(SchemaCompi
ler.java:950)
        at org.apache.axis2.schema.SchemaCompiler.processNamedComplexSchemaType(
SchemaCompiler.java:909)
        at org.apache.axis2.schema.SchemaCompiler.processSchema(SchemaCompiler.j
ava:864)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.
java:527)
        at org.apache.axis2.schema.SchemaCompiler.processElement(SchemaCompiler.
java:499)
        at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:33
6)
        at org.apache.axis2.schema.SchemaCompiler.compile(SchemaCompiler.java:24
8)
        ... 9 more

Full WSDL

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
  name="AddressBook" targetNamespace="http://sears.org/"
  xmlns:sears="http://sears.org/"
  xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <wsdl:types>
    <xsd:schema elementFormDefault="qualified"
      targetNamespace="http://sears.org/" xmlns:s1="http://sears.org/">

      <xsd:complexType name="Person">
        <xsd:sequence>
          <xsd:element name="firstName" type="xsd:string" />
          <xsd:element name="lastName" type="xsd:string" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:complexType name="AddressBookEntry">
        <xsd:sequence>
          <xsd:element name="firstName">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:maxLength value="10" />
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:element>
          <xsd:element name="lastName">
            <xsd:simpleType>
              <xsd:restriction base="xsd:string">
                <xsd:maxLength value="20" />
              </xsd:restriction>
            </xsd:simpleType>
          </xsd:element>
          <xsd:element name="streetAddress" type="xsd:string" />
          <xsd:element name="city" type="xsd:string" />
          <xsd:element name="state" type="xsd:string" />
          <xsd:element name="zipCode" type="xsd:int" />
          <xsd:element name="phoneNumber" type="xsd:string" />
        </xsd:sequence>
      </xsd:complexType>

      <xsd:element name="addressLookupRequest" type="Person" />

      <xsd:element name="addressLookupResponse"
        type="AddressBookEntry" />
    </xsd:schema>
  </wsdl:types>
  <wsdl:message name="AddressLookupIn">
    <wsdl:part element="sears:addressLookupRequest"
      name="parameters" />
  </wsdl:message>
  <wsdl:message name="AddressLookupOut">
    <wsdl:part element="sears:addressLookupResponse"
      name="parameters" />
  </wsdl:message>
  <wsdl:portType name="AddressBookPortType">
    <wsdl:operation name="AddressLookup">
      <wsdl:input message="sears:AddressLookupIn"
        name="addressLookupRequest" />
      <wsdl:output message="sears:AddressLookupOut"
        name="addressLookupResponse" />
    </wsdl:operation>
  </wsdl:portType>
  <wsdl:binding name="AddressBookBinding"
    type="sears:AddressBookPortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
    <wsdl:operation name="AddressLookup">
      <soap:operation soapAction="AddressLookup" style="document" />
      <wsdl:input name="addressLookupRequest">
        <soap:body use="literal" />
      </wsdl:input>
      <wsdl:output name="addressLookupResponse">
        <soap:body use="literal" />
      </wsdl:output>
    </wsdl:operation>
  </wsdl:binding>
  <wsdl:service name="AddressBook">
    <wsdl:port binding="sears:AddressBookBinding"
      name="AddressBookPortType">
      <soap:address
        location="http://localhost:8080/axis2/services/AddressBook" />
    </wsdl:port>
  </wsdl:service>
</wsdl:definitions>


-- 
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