@Override public <T> boolean evaluate( T obj, XPathEvaluator<T> xpathEvaluator ) throws FilterEvaluationException { Expression param1 = getParam1(); if ( param1 != null ) { for ( TypedObjectNode paramValue : param1.evaluate( obj, xpathEvaluator ) ) { Geometry param1Value = checkGeometryOrNull( paramValue ); if ( param1Value != null ) { Envelope transformedBBox = (Envelope) getCompatibleGeometry( param1Value, param2 ); return transformedBBox.intersects( param1Value ); } } } else if ( obj instanceof Feature ) { // handle the case where the property name is empty Feature f = (Feature) obj; Envelope env = f.getEnvelope(); if ( env != null ) { Envelope transformedBBox = (Envelope) getCompatibleGeometry( env, param2 ); return transformedBBox.intersects( env ); } } else { LOG.warn( "Evaluating BBOX on non-Feature object and property name not specified." ); } return false; }