Hey Jason,

Unfortunately it isn't possible to support sorting on properties that map to expressions which are not basic properties themselves. I am guessing that if you look in your mapping file, that title.value is mapped to a more complex expression (using operators or functions).

This choice was made due to a limitation of geotools and geoserver core code that made it not possible to implement this in a straight-forward manner that would support all catalogue implementations.

Let me know if that makes any sense.

Kind Regards
Niels

On 30-06-17 18:47, Andrea Aime wrote:
Hum, looks like there is some issue during the unmapping between the outside model and the internal catalog one, but I'm not familiar with that part of the code,
someone else wrote it.

Niels (cc'ed, original author), does this ring any bell?

Cheers
Andrea

On Fri, Jun 30, 2017 at 12:28 PM, Jason Smith <[email protected] <mailto:[email protected]>> wrote:

    Andrea –

    Sure here it is:

    org.geoserver.platform.ServiceException: Request failed due to:
    Sorting on dc:title/dc:value is not supported.

            at org.geoserver.csw.GetRecords.run(GetRecords.java:175)

            at
    
org.geoserver.csw.DefaultWebCatalogService.getRecords(DefaultWebCatalogService.java:83)

            at sun.reflect.GeneratedMethodAccessor272.invoke(Unknown
    Source)

            at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

            at java.lang.reflect.Method.invoke(Method.java:498)

            at
    
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)

            at
    
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)

            at
    
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)

            at
    
org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:55)

            at
    
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)

            at
    
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)

            at com.sun.proxy.$Proxy24.getRecords(Unknown Source)

            at sun.reflect.GeneratedMethodAccessor271.invoke(Unknown
    Source)

            at
    
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

            at java.lang.reflect.Method.invoke(Method.java:498)

            at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:857)

            at
    org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:268)

            at
    
org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:147)

            at
    
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)

            at
    
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)

            at
    
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)

            at
    
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:968)

            at
    
org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:870)

            at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:707)

            at
    
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:844)

            at
    javax.servlet.http.HttpServlet.service(HttpServlet.java:790)

            at
    org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)

            at
    
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:28)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:75)

            at
    org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:71)

            at
    
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:71)

            at
    
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:46)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:50)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)

            at
    
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)

            at
    
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)

            at
    
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

            at
    
org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:54)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)

            at
    
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158)

            at
    
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)

            at
    
org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:84)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:69)

            at
    
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)

            at
    
org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:53)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:73)

            at
    
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:92)

            at
    
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)

            at
    
org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)

            at
    
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)

            at
    
org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:152)

            at
    
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)

            at
    
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:87)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.geoserver.filters.XFrameOptionsFilter.doFilter(XFrameOptionsFilter.java:89)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:48)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    org.geoserver.filters.FlushSafeFilter.doFilter(FlushSafeFilter.java:44)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)

            at
    
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

            at
    
org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)

            at
    org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)

            at
    
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)

            at
    org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)

            at
    
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)

            at
    
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)

            at
    org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)

            at
    
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)

            at
    
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)

            at
    
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)

            at
    
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)

            at
    
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:110)

            at
    
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)

            at org.eclipse.jetty.server.Server.handle(Server.java:499)

            at
    org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)

            at
    org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)

            at org.eclipse.jetty.io
    
<http://org.eclipse.jetty.io>.AbstractConnection$2.run(AbstractConnection.java:540)

            at
    
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)

            at
    
org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)

            at java.lang.Thread.run(Thread.java:748)

    Caused by: java.io.IOException: Sorting on dc:title/dc:value is
    not supported.

            at
    
org.geoserver.csw.store.internal.InternalCatalogStore.getRecordsInternal(InternalCatalogStore.java:108)

            at
    
org.geoserver.csw.store.AbstractCatalogStore.getRecords(AbstractCatalogStore.java:129)

            at
    
org.geoserver.csw.store.AbstractCatalogStore.getRecordsCount(AbstractCatalogStore.java:145)

            at org.geoserver.csw.GetRecords.run(GetRecords.java:105)

            ... 101 more

    Any clue which sort properties are supported?

      * Jason

    *From:* [email protected] <mailto:[email protected]>
    [mailto:[email protected] <mailto:[email protected]>] *On
    Behalf Of *Andrea Aime
    *Sent:* Friday, June 30, 2017 1:26 AM
    *To:* Jason Smith <[email protected]
    <mailto:[email protected]>>
    *Cc:* [email protected]
    <mailto:[email protected]>
    *Subject:* Re: [Geoserver-users] CSW sortyBy

    Hi Jason,

    can you share the full stack trace, it should be available in the
    geoserver logs.

    The message seems to suggest that sorting is not supported on that
    particular property, as opposed to

    not supported in general, but I'm just guessing, seeing the full
    trace should help understanding the issue.

    Cheers

    Andrea

    On Thu, Jun 29, 2017 at 9:52 PM, Jason Smith
    <[email protected] <mailto:[email protected]>> wrote:

        Hello –

        I’m having trouble specifying a CSW GetRecords request with
        sorting using GeoServer 2.11.1.

        XML POST request:

        <csw:GetRecords
        xmlns:csw="http://www.opengis.net/cat/csw/2.0.2
        <http://www.opengis.net/cat/csw/2.0.2>"
        xmlns:ogc="http://www.opengis.net/ogc
        <http://www.opengis.net/ogc>" resultType="results"
        outputFormat="application/xml"
        outputSchema="http://www.opengis.net/cat/csw/2.0.2
        <http://www.opengis.net/cat/csw/2.0.2>" startPosition="1"
        maxRecords="250" service="CSW" version="2.0.2">

           <csw:Query typeNames="csw:Record">

        <csw:ElementSetName>full</csw:ElementSetName>

        <csw:Constraint version="1.1.0">

        <ogc:Filter>

        <ogc:PropertyIsLike wildCard="*" singleChar="#" escapeChar="!"
        matchCase="false">

        <ogc:PropertyName>AnyText</ogc:PropertyName>

        <ogc:Literal>*</ogc:Literal>

        </ogc:PropertyIsLike>

        </ogc:Filter>

        </csw:Constraint>

        <ogc:SortBy>

        <ogc:SortProperty>

        <ogc:PropertyName>title</ogc:PropertyName>

        <ogc:SortOrder>DESC</ogc:SortOrder>

        </ogc:SortProperty>

        </ogc:SortBy>

           </csw:Query>

        </csw:GetRecords>

        Response:

        <ows:ExceptionReport
        xmlns:xs="http://www.w3.org/2001/XMLSchema
        <http://www.w3.org/2001/XMLSchema>"
        xmlns:ows="http://www.opengis.net/ows
        <http://www.opengis.net/ows>"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
        <http://www.w3.org/2001/XMLSchema-instance>" version="1.0.0"
        xsi:schemaLocation="http://www.opengis.net/ows
        <http://www.opengis.net/ows>
        http://localhost:8080/geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd
        
<http://localhost:8080/geoserver/schemas/ows/1.0.0/owsExceptionReport.xsd>">

            <ows:Exception exceptionCode="NoApplicableCode">

        <ows:ExceptionText>Request failed due to: Sorting on
        dc:title/dc:value is not supported.

        Sorting on dc:title/dc:value is not supported.</ows:ExceptionText>

        </ows:Exception>

        </ows:ExceptionReport>

        I have seen similar results using KVP encoding.  I have also
        tried various other sort properties (identifier for example)
        but get the same results.  It appears that sorting is
        supported based on unit tests
<https://github.com/geoserver/geoserver/blob/master/src/extension/csw/core/src/test/java/org/geoserver/csw/GetRecordsTest.java#L407>. Any help would be appreciated.

          * Jason


        
------------------------------------------------------------------------------
        Check out the vibrant tech community on one of the world's most
        engaging tech sites, Slashdot.org! http://sdm.link/slashdot
        <http://sdm.link/slashdot>
        _______________________________________________
        Geoserver-users mailing list

        Please make sure you read the following two resources before
        posting to this list:
        - Earning your support instead of buying it, but Ian Turton:
        http://www.ianturton.com/talks/foss4g.html#/
        <http://www.ianturton.com/talks/foss4g.html#/>
        - The GeoServer user list posting guidelines:
        http://geoserver.org/comm/userlist-guidelines.html
        <http://geoserver.org/comm/userlist-guidelines.html>

        [email protected]
        <mailto:[email protected]>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users
        <https://lists.sourceforge.net/lists/listinfo/geoserver-users>



--
    Regards,

    Andrea Aime

    ==
    GeoServer Professional Services from the experts! Visit
    http://goo.gl/it488V <http://goo.gl/it488V> for more information.
    ==

    Ing. Andrea Aime
    @geowolf
    Technical Lead

    GeoSolutions S.A.S.
    Via di Montramito 3/A
    55054  Massarosa (LU)
    phone: +39 0584 962313 <tel:+39%200584%20962313>
    fax: +39 0584 1660272 <tel:+39%200584%20166%200272>
    mob: +39  339 8844549 <tel:+39%20339%20884%204549>

    http://www.geo-solutions.it
    http://twitter.com/geosolutions_it
    <http://twitter.com/geosolutions_it>

    AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

    Le informazioni contenute in questo messaggio di posta elettronica
    e/o nel/i file/s allegato/i sono da considerarsi strettamente
    riservate. Il loro utilizzo è consentito esclusivamente al
    destinatario del messaggio, per le finalità indicate nel messaggio
    stesso. Qualora riceviate questo messaggio senza esserne il
    destinatario, Vi preghiamo cortesemente di darcene notizia via
    e-mail e di procedere alla distruzione del messaggio stesso,
    cancellandolo dal Vostro sistema. Conservare il messaggio stesso,
    divulgarlo anche in parte, distribuirlo ad altri soggetti,
    copiarlo, od utilizzarlo per finalità diverse, costituisce
    comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

    The information in this message and/or attachments, is intended
    solely for the attention and use of the named addressee(s) and may
    be confidential or proprietary in nature or covered by the
    provisions of privacy act (Legislative Decree June, 30 2003,
    no.196 - Italy's New Data Protection Code).Any use not in accord
    with its purpose, any disclosure, reproduction, copying,
    distribution, or either dissemination, either whole or partial, is
    strictly forbidden except previous formal approval of the named
    addressee(s). If you are not the intended recipient, please
    contact immediately the sender by telephone, fax or e-mail and
    delete the information in this message that has been received in
    error. The sender does not give any warranty or accept liability
    as the content, accuracy or completeness of sent messages and
    accepts no responsibility  for changes made after they were sent
    or for other risks which arise as a result of e-mail transmission,
    viruses, etc.




--

Regards,

Andrea Aime

==GeoServer Professional Services from the experts! Visit http://goo.gl/it488V for more information.==Ing. Andrea Aime @geowolfTechnical LeadGeoSolutions S.A.S.Via di Montramito 3/A55054 Massarosa (LU)phone: +39 0584 962313fax: +39 0584 1660272mob: +39 339 8844549http://www.geo-solutions.ithttp://twitter.com/geosolutions_it

AVVERTENZE AI SENSI DEL D.Lgs. 196/2003

Le informazioni contenute in questo messaggio di posta elettronica e/o nel/i file/s allegato/i sono da considerarsi strettamente riservate. Il loro utilizzo è consentito esclusivamente al destinatario del messaggio, per le finalità indicate nel messaggio stesso. Qualora riceviate questo messaggio senza esserne il destinatario, Vi preghiamo cortesemente di darcene notizia via e-mail e di procedere alla distruzione del messaggio stesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso, divulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od utilizzarlo per finalità diverse, costituisce comportamento contrario ai principi dettati dal D.Lgs. 196/2003.

The information in this message and/or attachments, is intended solely for the attention and use of the named addressee(s) and may be confidential or proprietary in nature or covered by the provisions of privacy act (Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection Code).Any use not in accord with its purpose, any disclosure, reproduction, copying, distribution, or either dissemination, either whole or partial, is strictly forbidden except previous formal approval of the named addressee(s). If you are not the intended recipient, please contact immediately the sender by telephone, fax or e-mail and delete the information in this message that has been received in error. The sender does not give any warranty or accept liability as the content, accuracy or completeness of sent messages and accepts no responsibility for changes made after they were sent or for other risks which arise as a result of e-mail transmission, viruses, etc.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to