axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Denis Rachal (JIRA)" <j...@apache.org>
Subject [jira] Created: (AXIS2-2952) wsdl2java -d jaxrbi does not corretly handle namespace "http://www.w3.org/XML/1998/namespace"
Date Thu, 12 Jul 2007 11:13:05 GMT
wsdl2java -d jaxrbi does not corretly handle namespace "http://www.w3.org/XML/1998/namespace"
---------------------------------------------------------------------------------------------

                 Key: AXIS2-2952
                 URL: https://issues.apache.org/jira/browse/AXIS2-2952
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: databinding
    Affects Versions: 1.2
         Environment: All platforms
            Reporter: Denis Rachal


wsdl2java -d jaxrbi does not corretly handle namespace "http://www.w3.org/XML/1998/namespace"

When using the namespace "http://www.w3.org/XML/1998/namespace" within an XSD, wsdl2java with
binding jaxbri puts the 

generated code in the incorrect package.

I have an XSD that uses "xml:lang", defined in the namespace "http://www.w3.org/XML/1998/namespace".
Although you should not 

need to declare the namespace prefix "xml" the XSD in this example does so (see http://www.w3.org/XML/1998/namespace
for 

details). The WSDL2java will fail if it is not declared for this use case.

If the namespace "http://www.w3.org/XML/1998/namespace" is explicitely declared and included,
then the JAXB classes are put 

into the package "org.w3.www.xml._1998.namespace" instead of the package for the target namespace
of the XSD. In this example 

"http://schemas.xmlsoap.org/ws/2004/09/enumeration", which should be package "org.xmlsoap.schemas.ws._2004._09.enumeration".

While this may seem to just be a bit of an annoyance, it can actually produce errors in some
cases. I have two different XSDs 

that use "xml:lang" and include the "http://www.w3.org/XML/1998/namespace" namespace. In the
case where both XSDs are 

referenced by a single WSDL one package is overwritten by the other during the "wsdl2java"
process and you end up with 

classes in the wrong namespace. package-info.java gets overwritten when processing the second
XSD. Classes generated from the 

first XSD end up with the wrong package-info.java file.

Even stranger is that if I have the two XSDs consumed by a single WSDL, the overwrite does
not always occur. Sometimes the 

classes end up in the correct package for one of the XSDs. Simply by moving the schemas and
WSDLs to a new directory and 

calling wsdl2java again may produce different results. Therefore I have only documented this
case as best as I can here.

WSDL file for reproducing this bug is attached:

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions
	targetNamespace="http://schemas.xmlsoap.org/ws/2004/07/bug/test"
        xmlns:tns="http://schemas.xmlsoap.org/ws/2004/07/bug/test"
        xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing"
	xmlns:wsen="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
	xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
	xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12/">

	<!-- Import external WSDL schemas -->

	<wsdl:import
		namespace="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
		location="http://schemas.xmlsoap.org/ws/2004/09/enumeration/enumeration.wsdl" />
		
	<wsdl:types>
		<xs:schema>
			<xs:import
				namespace="http://schemas.xmlsoap.org/ws/2004/09/enumeration"
				schemaLocation="http://schemas.xmlsoap.org/ws/2004/09/enumeration/enumeration.xsd" />
		</xs:schema>
	</wsdl:types>

	<wsdl:binding name="TestBinding" type="wsen:DataSource">
		<wsoap12:binding
			transport="http://schemas.xmlsoap.org/soap/http" style="document" />

		<!-- Operations -->
		<wsdl:operation name="EnumerateOp">
			<wsoap12:operation
				soapAction="http://schemas.xmlsoap.org/ws/2004/09/enumeration/Enumerate" />
			<wsdl:input>
				<wsoap12:body message="wsen:EnumerateMessage" parts="Body" use="literal" />
			</wsdl:input>
			<wsdl:output>
				<wsoap12:body wsdl:required="true"
					message="wsen:EnumerateResponseMessage" parts="Body" use="literal" />
			</wsdl:output>
		</wsdl:operation>

	</wsdl:binding>

	<wsdl:service name="TestService">
		<wsdl:documentation>
			Test Service
		</wsdl:documentation>

		<wsdl:port name="TestResource" binding="tns:TestBinding">
                        <wsoap12:address location="http://localhost:8080/test/user/" />
		</wsdl:port>

	</wsdl:service>
</wsdl:definitions>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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