[ 
https://issues.apache.org/jira/browse/AXIS2-6041?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17895955#comment-17895955
 ] 

Christian Ortlepp commented on AXIS2-6041:
------------------------------------------

I've thought a bit more about this now, and I think this needs a different 
solution after all:

Do we know that all string inputs to the compare methods are serialized 
BigDecimals like in the example above? Then we can just use the BigDecimal 
string constructor.

If not, what exactly are we parsing? If we do need to rely on NumberFormat we 
should definitely fix the Locale to e.g. US. This has been an issue before 
(https://issues.apache.org/jira/browse/AXIS2-6068). But even if we do, this 
seems like an imperfect solution. But then we are also computing doubles as the 
result of comparisons, so maybe this is just where we are at?

 

 

> totalDigits Facet of XSD type short incorrectly treated in databinding
> ----------------------------------------------------------------------
>
>                 Key: AXIS2-6041
>                 URL: https://issues.apache.org/jira/browse/AXIS2-6041
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.8.2
>            Reporter: Rob Audenaerde
>            Priority: Major
>             Fix For: 2.0.0
>
>
> I think this is the same problem as AXIS2-5724, but then for `short`
> {{<xsd:simpleType name="Volgnummer">}}
> {{<xsd:annotation>}}
> {{<xsd:documentation>}}
> {{Een getal tussen de 1 en 20.}}
> {{</xsd:documentation>}}
> {{</xsd:annotation>}}
> {{<xsd:restriction base="xsd:short">}}
> {{<xsd:minInclusive value="1" />}}
> {{<xsd:maxInclusive value="20" />}}
> {{<xsd:totalDigits value="2" />}}
> {{</xsd:restriction>}}
> {{</xsd:simpleType>}}
> {{Results in:}}
>  
> {{public void setVolgnummer(short param) {}}
> {{java.lang.String totalDigitsDecimal =}}
> {{org.apache.axis2.databinding.utils.ConverterUtil.convertToStandardDecimalNotation("2")}}
> {{.toPlainString();}}
> {{if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, 
> totalDigitsDecimal) < 0) {}}
> {{this.localVolgnummer = param;}}
> {{} else {}}
> {{throw new java.lang.RuntimeException("Input values do not follow defined 
> XSD restrictions");}}
> {{}}}
> {{}}}
> But the {{totalDigitsDecimal will be filled with 100.0, which cannot be 
> converted to short.}}
>  
> {{@Test}}
> {{public void testVolgnummer() {}}
> {{final ServiceStub.Volgnummer volgnummer = new ServiceStub.Volgnummer();}}
> {{volgnummer.setVolgnummer((short) 1);}}
> {{}}}
> Fails with:
>  
> {{java.lang.NumberFormatException: For input string: "100.0"}}{{    at 
> java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67)}}
> {{    at java.base/java.lang.Integer.parseInt(Integer.java:668)}}
> {{    at java.base/java.lang.Short.parseShort(Short.java:137)}}
> {{    at java.base/java.lang.Short.parseShort(Short.java:163)}}
> {{    at 
> org.apache.axis2.databinding.utils.ConverterUtil.compare(ConverterUtil.java:1330)}}
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to