GeoServer

WFS GetFeature NPE's instead of reporting the wrong layer name was chosen

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.6.3
  • Fix Version/s: 1.6.4
  • Component/s: None
  • Labels:
    None
  • Number of attachments :
    0

Description

I got this in email from a co-worker .. it is caused by a GetMap URL request that used "topp:roads" rather than "topp:Roads". If we can arrange an exception that says "topp:roads" cannot be found rather than a NPE it would be great.

Bad request:

http://localhost/geoserver/wfs/?SERVICE=WFS&request=GetFeature&TYPENAME=topp:roads&BBOX=-80.4864795578115,25.6176257083275,-80.3401307394915,25.7002737069969&OUTPUTFORMAT=GML2-GZIP

Good Request:

http://localhost/geoserver/wfs/?SERVICE=WFS&request=GetFeature&TYPENAME=topp:Roads&BBOX=-80.4864795578115,25.6176257083275,-80.3401307394915,25.7002737069969&OUTPUTFORMAT=GML2-GZIP

Here is the stack trace from the logs; ie what was reported as a NPE:

java.lang.NullPointerException
        at org.geoserver.wfs.kvp.GetFeatureKvpRequestReader.bboxFilter(GetFeatureKvpRequestReader.java:212)
        at org.geoserver.wfs.kvp.GetFeatureKvpRequestReader.read(GetFeatureKvpRequestReader.java:158)
        at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1016)
        at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:385)
        at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:185)
        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:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:69)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        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:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619) 

Activity

Hide
Andrea Aime added a comment -

Very much agreed... can I see the request too?

Show
Andrea Aime added a comment - Very much agreed... can I see the request too?
Hide
Chris Hodgson added a comment -

If the BBOX is not included in the request, it gives the correct error about "no such layer" or whatever. Perhaps the parsing for the layer is somehow eating part of the bbox string which is cause the bbox parsing to throw the exception? Just a shot in the dark from someone unfamiliar with the code.

Show
Chris Hodgson added a comment - If the BBOX is not included in the request, it gives the correct error about "no such layer" or whatever. Perhaps the parsing for the layer is somehow eating part of the bbox string which is cause the bbox parsing to throw the exception? Just a shot in the dark from someone unfamiliar with the code.
Hide
Andrea Aime added a comment -

Fixed on 1.6.x and trunk

Show
Andrea Aime added a comment - Fixed on 1.6.x and trunk

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: