org.jruby.util
Class SafeFloatParser

java.lang.Object
  extended by org.jruby.util.SafeFloatParser

public final class SafeFloatParser
extends java.lang.Object

A safer way to parse float values

Prevents brute force attacks using the famous Java bug.


Field Summary
protected static java.math.BigDecimal LOWER
          Lower allowed value
protected static java.math.BigDecimal MIDDLE
          The middle of the bad interval - used for rounding bad values
protected static java.math.BigDecimal TWO
          Constant 2
protected static java.math.BigDecimal UPPER
          Upper allowed value
 
Constructor Summary
SafeFloatParser()
           
 
Method Summary
protected static double decimalValue(java.math.BigDecimal bigDecimal)
          Safe way of getting the double value
Prevents BigDecimal from calling Double.parseDouble()
protected static double decimalValue(java.lang.Number number)
          Safe way of getting the double value
prevents BigDecimal from calling Double.parseDouble()
protected static java.lang.Double decimalValueOf(java.lang.String s)
          Safe parsing of a String into a Double
static float floatValue(java.math.BigDecimal bigDecimal)
          Safe way of getting the float value
Prevents BigDecimal from calling Float.parseFloat()
static float floatValue(java.lang.Number number)
          Safe way of getting the float value
prevents BigDecimal from calling Float.parseFloat()
protected static boolean isSuspicious(java.lang.String s)
          Heuristic test if we should look closer at the value
static java.lang.Float parseFloat(java.lang.String s)
          Safe way of parsing a Float value from a String
static java.lang.Float valueOf(java.lang.String s)
          Safe way of parsing a Float value from a String
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TWO

protected static final java.math.BigDecimal TWO
Constant 2


LOWER

protected static final java.math.BigDecimal LOWER
Lower allowed value


UPPER

protected static final java.math.BigDecimal UPPER
Upper allowed value


MIDDLE

protected static final java.math.BigDecimal MIDDLE
The middle of the bad interval - used for rounding bad values

Constructor Detail

SafeFloatParser

public SafeFloatParser()
Method Detail

valueOf

public static java.lang.Float valueOf(java.lang.String s)
Safe way of parsing a Float value from a String

Parameters:
s - The input String
Returns:
the Float value

parseFloat

public static java.lang.Float parseFloat(java.lang.String s)
Safe way of parsing a Float value from a String

Parameters:
s - The input String
Returns:
the Float value

floatValue

public static float floatValue(java.lang.Number number)
Safe way of getting the float value
prevents BigDecimal from calling Float.parseFloat()

Parameters:
number -
Returns:
the float value

floatValue

public static float floatValue(java.math.BigDecimal bigDecimal)
Safe way of getting the float value
Prevents BigDecimal from calling Float.parseFloat()

Parameters:
bigDecimal -
Returns:
the float value

isSuspicious

protected static final boolean isSuspicious(java.lang.String s)
Heuristic test if we should look closer at the value

Parameters:
s - The non-null input String
Returns:
true if the value is suspicious, false otherwise

decimalValueOf

protected static final java.lang.Double decimalValueOf(java.lang.String s)
Safe parsing of a String into a Double

Parameters:
s - The input String, can be null
Returns:
The Double value

decimalValue

protected static final double decimalValue(java.lang.Number number)
Safe way of getting the double value
prevents BigDecimal from calling Double.parseDouble()

Parameters:
number -
Returns:
the double value

decimalValue

protected static final double decimalValue(java.math.BigDecimal bigDecimal)
Safe way of getting the double value
Prevents BigDecimal from calling Double.parseDouble()

Parameters:
bigDecimal -
Returns:
the double value


Copyright © 2002-2009 JRuby Team. All Rights Reserved.