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 "Bill Minglei Zhang (JIRA)" <ji...@apache.org> on 2013/11/06 01:48:18 UTC
[jira] [Commented] (AXIS2-5342) Generated code for xsd:totalDigits
cause errors
[ https://issues.apache.org/jira/browse/AXIS2-5342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13814460#comment-13814460 ]
Bill Minglei Zhang commented on AXIS2-5342:
-------------------------------------------
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-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org