[ https://issues.apache.org/jira/browse/AXIS2-5342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13814460#comment-13814460 ]
Bill Minglei Zhang edited comment on AXIS2-5342 at 11/6/13 12:48 AM: --------------------------------------------------------------------- The following code was generated using axis2-1.6.2, it's *.compare(param, totalDigitsDecimal) > 0*, should be *<*, correct? {code:java} public void setDecimal154(java.math.BigDecimal param) { java.lang.String totalDigitsDecimal = org.apache.axis2.databinding.utils.ConverterUtil .convertToStandardDecimalNotation("15").toString(); if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, totalDigitsDecimal) > 0) { this.localDecimal154 = param; } else { throw new java.lang.RuntimeException(); } } {code} {code:xml}<xs:simpleType name="decimal-15-4"> <xs:restriction base="xs:decimal"> <xs:fractionDigits value="4" /> <xs:totalDigits value="15" /> </xs:restriction> </xs:simpleType>{code} was (Author: autoaim800): The following code was generated using axis2-1.6.2, it's *.compare(param, totalDigitsDecimal) > 0*, should be *<*, correct? {code:java} public void setDecimal154(java.math.BigDecimal param) { java.lang.String totalDigitsDecimal = org.apache.axis2.databinding.utils.ConverterUtil .convertToStandardDecimalNotation("15").toString(); if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, totalDigitsDecimal) > 0) { this.localDecimal154 = param; } else { throw new java.lang.RuntimeException(); } } {code} > Generated code for xsd:totalDigits cause errors > ----------------------------------------------- > > Key: AXIS2-5342 > URL: https://issues.apache.org/jira/browse/AXIS2-5342 > Project: Axis2 > Issue Type: Bug > Components: adb, codegen > Affects Versions: 1.6.2 > Reporter: Conny Kreyßel > Fix For: 1.7.0, 1.6.3 > > > If you have a element like > <xsd:simpleType name="abc"> > <xsd:restriction base="xsd:integer"> > <xsd:totalDigits value="5" /> > </xsd:restriction> > </xsd:simpleType> > axis generates this as source code > public void setAbc(java.math.BigInteger param){ > java.lang.String totalDigitsDecimal = > org.apache.axis2.databinding.utils.ConverterUtil.convertToStandardDecimalNotation("5").toString(); > if (org.apache.axis2.databinding.utils.ConverterUtil.compare(param, > totalDigitsDecimal) > 0){ > this.localHerkunftsschluessel=param; > } > else { > throw new java.lang.RuntimeException(); > } > } > The problem is the toString() of the result from > .convertToStandardDecimalNotation("5"). It converts the a BigDecimal into > String and this results in "10000.0". Then ConverterUtil.compare() trys to > convert this string into a Long. BANG. > Please change convertToStandardDecimalNotation().toString() into > convertToStandardDecimalNotation().toPlainString(). > The same functionality should be evaluated for xsd:int, xsd:float, > xsd:decimal ... > IMHO, this results from a bad implementation of AXIS2-4190. Please add > testcases for this. > Take a look at the following comment and below. > https://issues.apache.org/jira/browse/AXIS2-4190?focusedCommentId=13285198&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13285198 -- This message was sent by Atlassian JIRA (v6.1#6144) --------------------------------------------------------------------- To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org For additional commands, e-mail: java-dev-h...@axis.apache.org