Hi,
today I was trying to understand why some filters we set
up in Geoserver threw a:

Caused by: java.lang.ClassCastException: 
org.geotools.filter.AttributeExpressionImpl
         at 
org.geotools.filter.visitor.PostPreProcessFilterSplittingVisitor.getFilterPre(PostPreProcessFilterSplittingVisitor.java:125)

during filter splitting. Now, it turned out we were using a
non existent attribute name, but the error message was totally
uninformative. Let's have a look at the code that visits an attribute 
expression:

public Object visit(PropertyName expression, Object notUsed) {
        //JD: use an expression to get at the attribute type intead of 
accessing directly
        if (parent != null  && expression.evaluate( parent ) == null )  {
        postStack.push(expression);
        return null; // on 2.3.x this return is not there!!!!!
     }
     if(transactionAccessor!=null){
        Filter updateFilter= (Filter) 
transactionAccessor.getUpdateFilter(expression.getPropertyName());
        if( updateFilter!=null ){
                changedStack.add(updateFilter);
                preStack.push(updateFilter);
        }else
                preStack.push(expression);
     } else{
        preStack.push(expression);
     }
     return null;
}

now, can anyone tell me why if we have the faature type handy (parent)
and the attribute is not there, we put the expression in the postStack
instead of throwing an hard exception?

Theoretically the check could be performed during PropertyName 
construction, but during filter parsing it's not always possible to
have the feature type handy, so it's pretty much common to have
a PropertyName that contains a wrong property name.

Imho it would be much better if we threw an exception stating that
the attribute is not there. Any objection?

Cheers
Andrea




-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel

Reply via email to