|
From: Gabriel R. <gr...@op...> - 2008-08-21 18:13:47
|
On Thursday 21 August 2008 02:30:22 pm Justin Deoliveira wrote:
> Confirmed.
>
> It appears that the recent code to remove the need for
> GetMapProducerFactory (GEOS-654) instances has introduced a problem. It
> is doing a strict match against the name of an output format. Where as
> the kml stuff requires a check like:
>
> (mapFormat.startsWith(PRODUCE_TYPE) // "KMZ"
> && mapFormat.startsWith("application/vnd.google-earth.kmz"));
>
> Due to the "+" in the output format name. This is a pretty serious
> regression, i am re-openning GEOS-654.
Agreed, we don't want regressions...
Yet, I wonder about one thing.
The old KMZMapProducerFactory stated the official mime type had no "+xml" at
the end:
/**
* Official KMZ mime type
*/
static final String MIME_TYPE = "application/vnd.google-earth.kmz";
And that's why I didn't include an alias for the map producer as did for other
formats like SVG, or "rss", "application/rss xml", application/rss+xml.
I can easily add an alias for "kml" or whatever, but do we actually want the
output formats in a request to be "whatever starts with..." It doesn't seem
quite right to me. I mean, the output formats are meant to be the ones stated
in the capabilities document, not whatever starts with a given string...
That's almost it, I didn't allowed that because that was not supposed to
happen in my understanding. Yet I see now there's actually a missing alias in
order to use just "kmz". Just that before kmz where not stated in the
capabilities neither...
I propose to use the aliases as stick to what we state we support in the
capabilities. Thoughts?
Cheers,
Gabriel
>
> Thanks for the catch Amr!
>
> -Justin
>
> Amr A. Alam wrote:
> > I'm trying to view some layer on Google Earth, and am getting this error
> > on Geoserver 1.7.0 running under tomcat...
> >
> > This is happening for one of the default layers:
> > http://localhost:8080/geoserver1.7.0/wms?service=WMS&request=GetMap&forma
> >t=application/vnd.google-earth.kmz+xml&width=1024&height=1024&srs=EPSG:432
> >6&layers=topp:states&styles=population&KMScore=50&KMAttr=true&legend=false
> >
> > Sending the same request to the 1.6.1 version works just fine:
> > http://localhost:8080/geoserver1.6.1/wms?service=WMS&request=GetMap&forma
> >t=application/vnd.google-earth.kmz+xml&width=1024&height=1024&srs=EPSG:432
> >6&layers=topp:states&styles=population&KMScore=50&KMAttr=true&legend=false
> >
> > Any ideas about what's going on? BTW, this is the case with any layer,
> > even when using the KML link from the map preview page.
> >
> > Here's the exception I'm getting in the logs for 1.7.0:
> >
> > 2008-08-21 09:48:49,332 ERROR [geoserver.ows] -
> > org.vfny.geoserver.wms.WmsException: There is no support for creating
> > maps in application/vnd.google-earth.kmz xml format
> > at
> > org.vfny.geoserver.wms.responses.GetMapResponse.getDelegate(GetMapRespons
> >e.java:612) at
> > org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.ja
> >va:134) at
> > org.geoserver.ows.adapters.ResponseAdapter.getMimeType(ResponseAdapter.ja
> >va:48) at org.geoserver.ows.Dispatcher.response(Dispatcher.java:635)
> > at
> > org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:198)
> > at
> > org.springframework.web.servlet.mvc.AbstractController.handleRequest(Abst
> >ractController.java:153) at
> > org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle
> >(SimpleControllerHandlerAdapter.java:48) at
> > org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherSe
> >rvlet.java:875) at
> > org.springframework.web.servlet.DispatcherServlet.doService(DispatcherSer
> >vlet.java:809) at
> > org.springframework.web.servlet.FrameworkServlet.processRequest(Framework
> >Servlet.java:571) at
> > org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.j
> >ava:501) at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
> > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:290) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharact
> >erEncodingFilter.java:108) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:235) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:264) at
> > org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSe
> >curityInterceptor.java:107) at
> > org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(Filter
> >SecurityInterceptor.java:72) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:274) at
> > org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTransla
> >tionFilter.java:110) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:274) at
> > org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(
> >AnonymousProcessingFilter.java:125) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:274) at
> > org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProces
> >singFilter.java:178) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:274) at
> > org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(Ht
> >tpSessionContextIntegrationFilter.java:229) at
> > org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(Filte
> >rChainProxy.java:274) at
> > org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:14
> >8) at
> > org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:
> >98) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:235) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:235) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java
> >:163) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:235) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:47) at
> > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applicat
> >ionFilterChain.java:235) at
> > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilte
> >rChain.java:206) at
> > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve
> >.java:233) at
> > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve
> >.java:191) 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.j
> >ava:109) at
> > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:28
> >6) at
> > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845
> >) at
> > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(H
> >ttp11Protocol.java:583) at
> > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> > at java.lang.Thread.run(Unknown Source)
> >
> >
> >
> >
> > Thanks,
> > Amr.
|