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

Tilo Villwock commented on TRB-94:
----------------------------------

I would propose the following patch to remedy this issue:

--- BigDecimalValidator.java.orig       2014-11-21 12:23:48.169990593 +0100
+++ BigDecimalValidator.java    2014-11-21 12:30:26.140718553 +0100
@@ -22,6 +22,7 @@
 import java.math.BigDecimal;
 import java.text.NumberFormat;
 import java.text.ParseException;
+import java.text.ParsePosition;
 import java.util.Locale;
 import java.util.Map;
 
@@ -150,7 +151,11 @@
             NumberFormat nf = NumberFormat.getInstance(locale);
             try
             {
-                Number number = nf.parse(testValue);
+
+                ParsePosition pos = new ParsePosition(0);
+                Number number = nf.parse(testValue, pos);
+                if (pos.getIndex() != testValue.length())
+                    throw new ParseException(null, 0);
                 bd = new BigDecimal(number.doubleValue());
             }
             catch (ParseException e)

> Intake's BigDecimalValidator and the BaseValueParser don't parse inputs the 
> same way
> ------------------------------------------------------------------------------------
>
>                 Key: TRB-94
>                 URL: https://issues.apache.org/jira/browse/TRB-94
>             Project: Turbine
>          Issue Type: Bug
>          Components: Turbine 2.3
>    Affects Versions: Core 2.3.3
>            Reporter: Tilo Villwock
>
> Hello,
> I don't know if this is still the case in the current development version but 
> the BigDecimalValidator does not check whether the parsed value has the same 
> length as the original input while the BaseValueParser does. This leads to 
> unexpected behavior because while a String like "3.21a" passes the validation 
> test it will not get set because the parsed length is not alike. One would 
> expect that the user will get notified by a message that this is not a valid 
> number.
> The relevant lines are:
> org.apache.turbine.services.intake.validator.parser.BigDecimalParser: 149
> org.apache.turbine.util.parser.BaseValueParser: 653-668
> Tilo



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to