You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by di...@apache.org on 2007/10/25 23:11:28 UTC

svn commit: r588360 - /commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java

Author: dion
Date: Thu Oct 25 14:11:27 2007
New Revision: 588360

URL: http://svn.apache.org/viewvc?rev=588360&view=rev
Log:
remove throws exception
add coercedouble and coerceboolean

Modified:
    commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java

Modified: commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java
URL: http://svn.apache.org/viewvc/commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java?rev=588360&r1=588359&r2=588360&view=diff
==============================================================================
--- commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java (original)
+++ commons/proper/jexl/branches/2.0/src/java/org/apache/commons/jexl/util/Coercion.java Thu Oct 25 14:11:27 2007
@@ -25,6 +25,24 @@
 public class Coercion {
 
     /**
+     * Coerce to a boolean (not a java.lang.Boolean).
+     *
+     * @param val Object to be coerced.
+     * @return The Boolean coerced value, or false if none possible.
+     */
+    public static boolean coerceboolean(Object val) {
+        if (val == null) {
+            return false;
+        } else if (val instanceof Boolean) {
+            return ((Boolean) val).booleanValue();
+        } else if (val instanceof String) {
+            return Boolean.valueOf((String) val).booleanValue();
+        }
+        // TODO: is this a reasonable default?
+        return false;
+    }
+
+    /**
      * Coerce to a Boolean.
      *
      * @param val Object to be coerced.
@@ -109,38 +127,42 @@
      *
      * @param val Object to be coerced.
      * @return The Double coerced value.
-     * @throws Exception If Double coercion fails.
      */
-    public static Double coerceDouble(Object val)
-    throws Exception {
+    public static Double coerceDouble(Object val) {
+        return new Double(coercedouble(val));
+    }
+    
+    /**
+     * Coerce to a double.
+     *
+     * @param val Object to be coerced.
+     * @return The Double coerced value.
+     */
+    public static double coercedouble(Object val) {
         if (val == null) {
-            return new Double(0);
+            return 0;
         } else if (val instanceof String) {
-            if ("".equals(val)) {
-                return new Double(0);
+            String string = (String) val;
+            if ("".equals(string.trim())) {
+                return 0;
             }
-
-            /*
-             * the spec seems to be iffy about this.  Going to give it a wack
-             *  anyway
-             */
-
-            return new Double((String) val);
+            // the spec seems to be iffy about this.  Going to give it a wack anyway
+            return Double.parseDouble(string);
         } else if (val instanceof Character) {
             int i = ((Character) val).charValue();
 
-            return new Double(Double.parseDouble(String.valueOf(i)));
-        } else if (val instanceof Boolean) {
-            throw new Exception("Boolean->Double coercion exception");
+            return i;
         } else if (val instanceof Double) {
-            return (Double) val;
+            return ((Double) val).doubleValue();
         } else if (val instanceof Number) {
             //The below construct is used rather than ((Number)val).doubleValue() to ensure
-            //equality between comparint new Double( 6.4 / 3 ) and the jexl expression of 6.4 / 3
-            return new Double(Double.parseDouble(String.valueOf(val)));
+            //equality between comparing new Double( 6.4 / 3 ) and the jexl expression of 6.4 / 3
+            return Double.parseDouble(String.valueOf(val));
+        } else if (val instanceof Boolean) {
+            throw new IllegalArgumentException("Boolean->Double coercion exception");
         }
 
-        throw new Exception("Double coercion exception");
+        throw new IllegalArgumentException("Double coercion exception, don't know how to convert " + val);
     }
 
     /**