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 "Andreas Veithen (JIRA)" <ji...@apache.org> on 2016/04/15 09:14:25 UTC
[jira] [Resolved] (AXIS2-5758) wsdl2java: nillable = "true" is
ignored
[ https://issues.apache.org/jira/browse/AXIS2-5758?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Andreas Veithen resolved AXIS2-5758.
------------------------------------
Resolution: Fixed
Fix Version/s: 1.7.2
> wsdl2java: nillable = "true" is ignored
> ---------------------------------------
>
> Key: AXIS2-5758
> URL: https://issues.apache.org/jira/browse/AXIS2-5758
> Project: Axis2
> Issue Type: Bug
> Components: adb
> Affects Versions: 1.7.1
> Reporter: Philemon Schucker
> Fix For: 1.7.2
>
>
> I tried to create a java client with wsdl2java. With version 1.7.0 and older ones everything is fine. But since version 1.7.1 the {{nillable="true"}} attribute is ignored. Here is a small example wsdl:
> {code:xml}
> <definitions name="StockQuote"
> targetNamespace="http://example.com/stockquote.wsdl"
> xmlns:tns="http://example.com/stockquote.wsdl"
> xmlns:xsd1="http://example.com/stockquote.xsd"
> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/">
>
> <types>
> <schema targetNamespace="http://example.com/stockquote.xsd"
> xmlns="http://www.w3.org/2001/XMLSchema">
> <element name="TradePriceRequest">
> <complexType>
> <all>
> <element name="tickerSymbol" nillable="true" type="string"/>
> </all>
> </complexType>
> </element>
> <element name="TradePrice">
> <complexType>
> <all>
> <element name="price" nillable="true" type="float"/>
> </all>
> </complexType>
> </element>
> </schema>
> </types>
>
> <message name="GetLastTradePriceInput">
> <part name="body" element="xsd1:TradePriceRequest"/>
> </message>
>
> <message name="GetLastTradePriceOutput">
> <part name="body" element="xsd1:TradePrice"/>
> </message>
>
> <portType name="StockQuotePortType">
> <operation name="GetLastTradePrice">
> <input message="tns:GetLastTradePriceInput"/>
> <output message="tns:GetLastTradePriceOutput"/>
> </operation>
> </portType>
>
> <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType">
> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
> <operation name="GetLastTradePrice">
> <soap:operation soapAction="http://example.com/GetLastTradePrice"/>
> <input>
> <soap:body use="literal"/>
> </input>
> <output>
> <soap:body use="literal"/>
> </output>
> </operation>
> </binding>
>
> <service name="StockQuoteService">
> <documentation>My first service</documentation>
> <port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
> <soap:address location="http://example.com/stockquote"/>
> </port>
> </service>
>
> </definitions>
> {code}
> For creating the client I use the {{-u}} option. The problem appears in the Factory's parse method for the defined types. For example for TradePrice.java from the given wsdl above:
> Genereated code from version 1.7.0 (snippet from Factory parse method):
> {code:title=TradePrice.java|borderStyle=solid}
> if (!"true".equals(nillableValue) &&
> !"1".equals(nillableValue)) {
> java.lang.String content = reader.getElementText();
> object.setPrice(org.apache.axis2.databinding.utils.ConverterUtil.convertToFloat(
> content));
> } else {
> object.setPrice(java.lang.Float.NaN);
> reader.getElementText(); // throw away text nodes if any.
> }
> {code}
> Genereated code from version 1.7.1 (snippet from Factory parse method):
> {code:title=TradePrice.java|borderStyle=solid}
> if ("true".equals(nillableValue) ||
> "1".equals(nillableValue)) {
> throw new org.apache.axis2.databinding.ADBException(
> "The element: " + "price" +
> " cannot be null");
> }
> java.lang.String content = reader.getElementText();
> object.setPrice(org.apache.axis2.databinding.utils.ConverterUtil.convertToFloat(
> content));
> {code}
> So as you can see, in 1.7.1 the {{price}} element is handled as a non nillable value although it is nillable. So if the server sends a repsonse with price = null the client will throw an exception although everything is fine...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org