[Geoserver-users] 1.6 cql_filter

hi,

I use the following cql_filter on Geoserver 1.5 without problems.

&cql_filter=object_id=102|object_id=102|object_id=102|object_id=102|object_id=102|INCLUDE|INCLUDE

If I use the same filter on Geoserver 1.6 (same layers, database, configuration etc.) I get a Lexical error (see backtrace below).

Is it a bug? Has the syntax changed? Is there a solution?

thanks,
Piebe

<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE ServiceExceptionReport SYSTEM "http://schemas.opengis.net/wms/1.1.1/WMS_exception_1_1_1.dtd&quot;&gt; <ServiceExceptionReport version="1.1.1" > <ServiceException>
      org.geotools.filter.text.cql2.TokenMgrError: Lexical error at line 1, column 14. Encountered: &quot;|&quot; (124), after : &quot;&quot;
org.geotools.filter.text.cql2.TokenMgrError: Lexical error at line 1, column 14. Encountered: &quot;|&quot; (124), after : &quot;&quot;
Details:
org.geoserver.platform.ServiceException: org.geotools.filter.text.cql2.TokenMgrError: Lexical error at line 1, column 14. Encountered: &quot;|&quot; (124), after : &quot;&quot;
    at org.geoserver.ows.Dispatcher.exception(Dispatcher.java:1136)
    at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:197)
    at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:139)
    at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:44)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:684)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:625)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:392)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:347)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:264)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
    at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:110)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:178)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:229)
    at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:274)
    at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:148)
    at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:834)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:640)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1286)
    at java.lang.Thread.run(Unknown Source)
Caused by: org.geotools.filter.text.cql2.TokenMgrError: Lexical error at line 1, column 14. Encountered: &quot;|&quot; (124), after : &quot;&quot;
    at org.geotools.filter.text.cql2.CQLParserTokenManager.getNextToken(CQLParserTokenManager.java:2389)
    at org.geotools.filter.text.cql2.CQLParser.jj_ntk(CQLParser.java:4051)
    at org.geotools.filter.text.cql2.CQLParser.MultiplicativeExpression(CQLParser.java:1876)
    at org.geotools.filter.text.cql2.CQLParser.BinaryExpression(CQLParser.java:1793)
    at org.geotools.filter.text.cql2.CQLParser.Expression(CQLParser.java:1789)
    at org.geotools.filter.text.cql2.CQLParser.ComparissonPredicate(CQLParser.java:999)
    at org.geotools.filter.text.cql2.CQLParser.Predicate(CQLParser.java:318)
    at org.geotools.filter.text.cql2.CQLParser.BooleanPrimary(CQLParser.java:266)
    at org.geotools.filter.text.cql2.CQLParser.BooleanFactor(CQLParser.java:219)
    at org.geotools.filter.text.cql2.CQLParser.BooleanTerm(CQLParser.java:176)
    at org.geotools.filter.text.cql2.CQLParser.BooleanValueExpression(CQLParser.java:129)
    at org.geotools.filter.text.cql2.CQLParser.SearchCondition(CQLParser.java:98)
    at org.geotools.filter.text.cql2.CQLParser.SequenceOfSearchConditions(CQLParser.java:107)
    at org.geotools.filter.text.cql2.CQLParser.MultipleCompilationUnit(CQLParser.java:91)
    at org.geotools.filter.text.cql2.CQL.toFilterList(CQL.java:240)
    at org.geotools.filter.text.cql2.CQL.toFilterList(CQL.java:210)
    at org.geoserver.wfs.kvp.CQLFilterKvpParser.parse(CQLFilterKvpParser.java:26)
    at org.geoserver.ows.Dispatcher.parseKVP(Dispatcher.java:949)
    at org.geoserver.ows.Dispatcher.init(Dispatcher.java:211)
    at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:167)
    ... 39 more

</ServiceException></ServiceExceptionReport>

--
--------------------------- ----------------------------
  Piebe de Vries piebe.de.vries@anonymised.com
  Geodan IT b.v. Tel: +31 (0)73 - 6925 151
  President Kennedylaan 1 Fax: +31 (0)73 - 5711 333
  1079 MB Amsterdam (NL) http://www.geodan.nl
--------------------------- ----------------------------

Piebe de Vries ha scritto:

hi,

I use the following cql_filter on Geoserver 1.5 without problems.

&cql_filter=object_id=102|object_id=102|object_id=102|object_id=102|object_id=102|INCLUDE|INCLUDE

If I use the same filter on Geoserver 1.6 (same layers, database, configuration etc.) I get a Lexical error (see backtrace below).

Is it a bug? Has the syntax changed? Is there a solution?

Unfortunately it seems the CQL mantainer in GeoTools changed the
filter list syntax between gt2 2.3.x (the one used by GeoServer 1.5.x)
and gt2 2.4.x (the one used by GeoServer 1.6.x).

I believe the new syntax requires you to separate filters with ";"
(http://docs.codehaus.org/display/GEOTDOC/01+CQL+Examples)
Hope this helps
Cheers
Andrea

Hi, Andrea is right, you should use ";" as separator (like sql)

cql_filter=object_id=102; object_id=102; object_id=102; object_id=102;
object_id=102; INCLUDE; INCLUDE

cheers
(Thanks Andrea I am not checking the geoserver-user list. I will register.)

On Thursday 01 November 2007, Andrea Aime wrote:

Piebe de Vries ha scritto:
> hi,
>
> I use the following cql_filter on Geoserver 1.5 without problems.
>
> &cql_filter=object_id=102|object_id=102|object_id=102|object_id=102|objec
>t_id=102|INCLUDE|INCLUDE
>
> If I use the same filter on Geoserver 1.6 (same layers, database,
> configuration etc.) I get a Lexical error (see backtrace below).
>
> Is it a bug? Has the syntax changed? Is there a solution?

Unfortunately it seems the CQL mantainer in GeoTools changed the
filter list syntax between gt2 2.3.x (the one used by GeoServer 1.5.x)
and gt2 2.4.x (the one used by GeoServer 1.6.x).

I believe the new syntax requires you to separate filters with ";"
(http://docs.codehaus.org/display/GEOTDOC/01+CQL+Examples)
Hope this helps
Cheers
Andrea

--
Mauricio Pazos

www.axios.es
tel-:+34 94 441 63 84