It seems like all expression subclasses have the following method. The
expression '$result > 10' hits this method:

    protected Object evaluateObjectObject(Object lhs,
                                          Object rhs)
    {
        if ( bothAreBoolean( lhs,
                             rhs ) )
        {
            return ( ( lhs.equals( rhs ) )
                     ? Boolean.TRUE
                     : Boolean.FALSE );
        }

        Comparable lhsComp = (Comparable) lhs;
        Comparable rhsComp = (Comparable) rhs;
>>>>
>>>> lhsComp is a Double where rhsComp is an Integer: ClassCastException
>>>>
        if ( lhsComp.compareTo( rhsComp ) < 0 )
        {
            return Boolean.TRUE;
        }

        return Boolean.FALSE;
    }

-----Original Message-----
From: bob mcwhirter [mailto:[EMAIL PROTECTED]]
Sent: Monday, December 10, 2001 11:36
To: Yuri de Wit
Cc: [EMAIL PROTECTED]
Subject: RE: [Jaxen] Jaxen Handling of Java Objects in expression
evaluati ons


On Mon, 10 Dec 2001, Yuri de Wit wrote:

> Thats me again with the same problem I outlined earlier.
> 
> If I have an Jaxen XPATH that looks like the following:
> 
> '$result > 10'
> 
> And I have a VariableContext set in the engine that returns, for instance,
a
> String("4") or a Double(4.0), Jaxen is going to throw a ClassCastException
> because it is relying on the Java Comparator of Primitive Objects
(Integer,
> String, Double, etc). From the XPATH expression, 10 is an Integer(10) and
> Integer.compare(String("10")) is going to throw the exception.
> 
> My question is: Is this a Jaxen bug since it is not properly handling the
> object comparations properly? Or are there specific requirements on what
> types can be returned by VariableContext implementations?
> 
> In addition, if the VariableContext returns 'null' it is Jaxen is going to
> throw NullPointerException. Shouldnt Jaxen check for nulls in this case?

Hmmm...

Looking at DefaultRelationalExpr.java, it looks to me that it funnels the
LHS and RHS through the NumberFunction(), which should do type coercion
for strings, etc.

Could you point me to file/line-number where we're Doing The Wrong Thing?

        -bob

_______________________________________________
Jaxen-interest mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jaxen-interest

Reply via email to