dmitri      2004/05/08 13:07:09

  Modified:    jxpath/src/java/org/apache/commons/jxpath/ri
                        InfoSetUtil.java
               jxpath/src/test/org/apache/commons/jxpath/ri/compiler
                        CoreFunctionTest.java
  Log:
  Fixed Bug #28753: conversion of Boolean to Number
  
  Revision  Changes    Path
  1.10      +13 -3     
jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/InfoSetUtil.java
  
  Index: InfoSetUtil.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jxpath/src/java/org/apache/commons/jxpath/ri/InfoSetUtil.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- InfoSetUtil.java  29 Feb 2004 14:17:45 -0000      1.9
  +++ InfoSetUtil.java  8 May 2004 20:07:09 -0000       1.10
  @@ -87,7 +87,12 @@
               return value;
           }
           else if (object instanceof EvalContext) {
  -            return number(stringValue(object));
  +            EvalContext ctx = (EvalContext) object;
  +            Pointer ptr = ctx.getSingleNodePointer();
  +            if (ptr != null) {
  +                return number(ptr);
  +            }
  +            return NOT_A_NUMBER;
           }
           else if (object instanceof NodePointer) {
               return number(((NodePointer) object).getValue());
  @@ -123,7 +128,12 @@
               return doubleValue(((NodePointer) object).getValue());
           }
           else if (object instanceof EvalContext) {
  -            return doubleValue(stringValue(object));
  +            EvalContext ctx = (EvalContext) object;
  +            Pointer ptr = ctx.getSingleNodePointer();
  +            if (ptr != null) {
  +                return doubleValue(ptr);
  +            }
  +            return Double.NaN;
           }
           return doubleValue(stringValue(object));
       }
  
  
  
  1.10      +6 -2      
jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java
  
  Index: CoreFunctionTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/jxpath/src/test/org/apache/commons/jxpath/ri/compiler/CoreFunctionTest.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- CoreFunctionTest.java     29 Feb 2004 14:17:42 -0000      1.9
  +++ CoreFunctionTest.java     8 May 2004 20:07:09 -0000       1.10
  @@ -50,6 +50,8 @@
               context = JXPathContext.newContext(new TestMixedModelBean());
               Variables vars = context.getVariables();
               vars.declareVariable("nan", new Double(Double.NaN));
  +            vars.declareVariable("bool_true", new Boolean("true"));
  +            vars.declareVariable("bool_false", new Boolean("false"));
           }
       }
   
  @@ -95,13 +97,15 @@
           assertXPathValue(context, "not(false())", Boolean.TRUE);
           assertXPathValue(context, "not(true())", Boolean.FALSE);
           assertXPathValue(context, "number('1')", new Double(1));
  +        assertXPathValue(context, "number($bool_true)", new Double(1));
  +        assertXPathValue(context, "number($bool_false)", new Double(0));
           assertXPathValue(context, "floor(1.5)", new Double(1));
           assertXPathValue(context, "floor(-1.5)", new Double(-2));
           assertXPathValue(context, "ceiling(1.5)", new Double(2));
           assertXPathValue(context, "ceiling(-1.5)", new Double(-1));
           assertXPathValue(context, "round(1.5)", new Double(2));
           assertXPathValue(context, "round(-1.5)", new Double(-1));
  -        assertXPathValue(context, "null()", null);
  +        assertXPathValue(context, "null()", null);        
       }
   
       public void testIDFunction() {
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to