You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by "Tom Trader (JIRA)" <ji...@apache.org> on 2008/09/27 21:19:44 UTC

[jira] Created: (AXIS2-4053) Problem with restricted numeric elements

Problem with restricted numeric elements
----------------------------------------

                 Key: AXIS2-4053
                 URL: https://issues.apache.org/jira/browse/AXIS2-4053
             Project: Axis 2.0 (Axis2)
          Issue Type: Bug
          Components: wsdl
    Affects Versions: 1.4
         Environment: Windows XP
            Reporter: Tom Trader


The code generated by wsdl2java for the adb data binding fails when it involved a XML schema that includes the deserialization of a restricted group that restricts out a numeric type.

In the sample wsdl below the element A (short) is restricted out of the response. When the response is deserialized the factory for parsing the RestrictedGroup is attempting to set the element A if present (which it isn't as it was restricted out) and the else clause (if element not present) for numeric types has the property set it to a minimum value which causes the throwing of a runtime error.

The code at fault is:

if (reader.isStartElement() && new javax.xml.namespace.QName("","A").equals(reader.getName())){
                                
                                    java.lang.String content = reader.getElementText();
                                    
                                              object.setA(
                                                    org.apache.axis2.databinding.utils.ConverterUtil.convertToShort(content));
                                              
                                        reader.next();
                                    
                              }  // End of if for expected property start element
                                
                                    else {
                                        
                                               object.setA(java.lang.Short.MIN_VALUE); // Code at fault as A property has been restricted out !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                                           
                                    }

WSDL
=====

<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="ns://Sample/SampleService" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" name="SampleService" targetNamespace="ns://Sample/SampleService">
	<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
	<types>
		<xsd:schema targetNamespace="ns://Sample/SampleService" xmlns:tns="ns://Sample/SampleService" elementFormDefault="unqualified" attributeFormDefault="unqualified">
			<xsd:element name="FullGroup" type="tns:FullGroupType"/>
			<xsd:complexType name="FullGroupType">
				<xsd:sequence>
					<xsd:element name="A" type="xsd:short" minOccurs="0"/>
					<xsd:element name="B" type="xsd:string"/>
				</xsd:sequence>
			</xsd:complexType>
			<xsd:element name="RestrictedGroup" type="tns:RestrictedGroupType"/>
			<xsd:complexType name="RestrictedGroupType">
				<xsd:complexContent>
					<xsd:restriction base="tns:FullGroupType">
						<xsd:sequence>
							<xsd:element name="B" type="xsd:string"/>
						</xsd:sequence>
					</xsd:restriction>
				</xsd:complexContent>
			</xsd:complexType>
		</xsd:schema>
	</types>
	<message name="someOperationIn">
		<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
		<part name="SomeOperationRequestMsg" element="tns:FullGroup"/>
	</message>
	<message name="someOperationOut">
		<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
		<part name="SomeOperationResponseMsg" element="tns:RestrictedGroup"/>
	</message>
	<portType name="SomeHTTPInterface">
		<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
		<operation name="SomeOperation">
			<documentation xmlns="http://schemas.xmlsoap.org/wsdl/"/>
			<input message="tns:someOperationIn"/>
			<output message="tns:someOperationOut"/>
		</operation>
	</portType>
	<binding name="SomeHTTPBinding" type="tns:SomeHTTPInterface">
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
		<operation name="SomeOperation">
			<soap:operation soapAction="ns://Sample/SampleService/SomeHTTPInterface/SomeOperationRequest" soapActionRequired="true" style="document"/>
			<input>
				<soap:body parts="SomeOperationRequestMsg" use="literal"/>
			</input>
			<output>
				<soap:body parts="SomeOperationResponseMsg" use="literal"/>
			</output>
		</operation>
	</binding>
	<service name="SampleService">
		<port name="SampleServiceSomeHTTPSOAP" binding="tns:SomeHTTPBinding">
			<soap:address location="https://localhost/SampleService"/>
		</port>
	</service>
</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