Legend production fails if there is a raster symbolizer in the mix
------------------------------------------------------------------
Key: GEOS-1585
URL: http://jira.codehaus.org/browse/GEOS-1585
Project: GeoServer
Issue Type: Bug
Affects Versions: 1.6.0-RC1
Reporter: Andrea Aime
Assignee: Andrea Aime
Fix For: 1.6.0-RC2
The stack trace is:
{code}
org.vfny.geoserver.wms.WmsException: Can't get input stream from URL!
at org.vfny.geoserver.wms.responses.DefaultRasterLegendProducer.produceLegendGraphic(DefaultRasterLegendProducer.java:232)
at org.vfny.geoserver.wms.responses.GetLegendGraphicResponse.execute(GetLegendGraphicResponse.java:80)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:516)
at org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:315)
at org.geoserver.request.Dispatcher.dispatch(Dispatcher.java:192)
at org.geoserver.request.Dispatcher.handleRequestInternal(Dispatcher.java:52)
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:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:445)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1050)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:103)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1041)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:354)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:226)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:627)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:123)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:141)
at org.mortbay.jetty.Server.handle(Server.java:269)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:430)
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:687)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:492)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:199)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:339)
at org.mortbay.jetty.nio.HttpChannelEndPoint.run(HttpChannelEndPoint.java:270)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
Caused by: javax.imageio.IIOException: Can't get input stream from URL!
at javax.imageio.ImageIO.read(ImageIO.java:1369)
at org.vfny.geoserver.wms.responses.DefaultRasterLegendProducer.produceLegendGraphic(DefaultRasterLegendProducer.java:224)
... 31 more
Caused by: java.io.FileNotFoundException: http://192.168.0.10:1977/geoserver/wms/../data/images/rasterLegend.png
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1239)
at java.net.URL.openStream(URL.java:1009)
at javax.imageio.ImageIO.read(ImageIO.java:1367)
... 32 more
{code}
and the actual code reads like:
{code}
if (symbolizer instanceof RasterSymbolizer) {
BufferedImage imgShape;
try {
imgShape = ImageIO.read(new URL(request.getHttpServletRequest()
.getRequestURL()
+ "/../data/images/rasterLegend.png"));
} catch (MalformedURLException e) {
LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new WmsException(e);
} catch (IOException e) {
LOGGER.log(Level.SEVERE, e.getLocalizedMessage(), e);
throw new WmsException(e);
}
graphics.drawImage(imgShape, 0, 0, w, h, null);
}
{code}
Hum, I took the time machine and went back some releases trying to hunt down for that {{/../data/images/rasterLegend.png}} and found
it only in the oldest cite testing data directories.... Hmmm... ok, we're going to put it back, but not in the data dir
(the only folders being web served out of the data dir are styles and www, but we should not rely on somethign that can manipulated
by the user to lookup). Better include this as a classpath resource.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira