[ 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