[Geoserver-users] Shapefile Export Issues

Hi,

I recently upgraded to the most recent 1.3.3 version and am having a few
issues with Geoserver's handling of shapefiles, and was hoping somebody
might have some input:

1) When trying to export a shapefile containing type decimal, I get a
java.io.IOException: Unable to write : java.math.BigDecimal error. I
noticed on the udig's bugzilla a similar problem that may or may not
have been addressed by converting big decimals to doubles. The stack
trace for this is at the bottom....

2) Secondly, I'm wondering whether there's a (easy) way to alter the
name of exported shapefile, from just "wms" with zip header to something
like "layername.zip" with that same zip header of course. For end users,
I think this would be quite helpful.

Thanks in advance, GeoServer rocks!

-pete

--
Pete Giencke
Lead Systems Developer
Great Lakes Commission
2805 S. Industrial Hwy., Suite 100
Ann Arbor, MI 48104-6791

Specs:
FC5
Tomcat 5.5.15
java 1.5.0_07

Catalina.out:
Request: null
output format:shape-zip
max features:2147483647
version:1.0.0
queries:
  Query
   feature type: glin:ogc_lake_ontario_coastline
   [properties: ALL ]

30936392 [INFO] org.vfny.geoserver.servlets.PartialBufferStrategy -
OutputStream was successfully aborted.
30936392 [INFO] org.vfny.geoserver.servlets.AbstractService - Had an
undefined error: Unable to write : java.math.BigDecimal
30936393 [INFO] org.vfny.geoserver.servlets.AbstractService -
java.io.IOException: Unable to write : java.math.BigDecimal
        at
org.geotools.data.shapefile.ShapefileDataStore.createDbaseHeader(ShapefileDataStore.java:1046)
        at
org.geotools.data.shapefile.ShapefileDataStore.createSchema(ShapefileDataStore.java:769)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.writeOut(ShapeFeatureResponseDelegate.java:301)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.encode(ShapeFeatureResponseDelegate.java:214)
        at
org.vfny.geoserver.wfs.responses.FeatureResponse.writeTo(FeatureResponse.java:141)
        at
org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:527)
        at
org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:279)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doResponse(WfsDispatcher.java:284)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doGet(WfsDispatcher.java:213)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684)
        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

30936394 [WARNING] org.vfny.geoserver.ServiceException - encountered
error: java.io.IOException: Unable to write : java.math.BigDecimal
StackTrace: java.io.IOException: Unable to write : java.math.BigDecimal
        at
org.geotools.data.shapefile.ShapefileDataStore.createDbaseHeader(ShapefileDataStore.java:1046)
        at
org.geotools.data.shapefile.ShapefileDataStore.createSchema(ShapefileDataStore.java:769)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.writeOut(ShapeFeatureResponseDelegate.java:301)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.encode(ShapeFeatureResponseDelegate.java:214)
        at
org.vfny.geoserver.wfs.responses.FeatureResponse.writeTo(FeatureResponse.java:141)
        at
org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:527)
        at
org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:279)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doResponse(WfsDispatcher.java:284)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doGet(WfsDispatcher.java:213)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684)
        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)

org.vfny.geoserver.wfs.WfsException: java.io.IOException: Unable to
write : java.math.BigDecimal
        at
org.vfny.geoserver.wfs.WfsExceptionHandler.newServiceException(WfsExceptionHandler.java:65)
        at
org.vfny.geoserver.servlets.AbstractService.sendError(AbstractService.java:767)
        at
org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:538)
        at
org.vfny.geoserver.servlets.AbstractService.doGet(AbstractService.java:279)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doResponse(WfsDispatcher.java:284)
        at
org.vfny.geoserver.wfs.servlets.WfsDispatcher.doGet(WfsDispatcher.java:213)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:754)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:684)
        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:876)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.IOException: Unable to write : java.math.BigDecimal
        at
org.geotools.data.shapefile.ShapefileDataStore.createDbaseHeader(ShapefileDataStore.java:1046)
        at
org.geotools.data.shapefile.ShapefileDataStore.createSchema(ShapefileDataStore.java:769)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.writeOut(ShapeFeatureResponseDelegate.java:301)
        at
org.vfny.geoserver.wfs.responses.ShapeFeatureResponseDelegate.encode(ShapeFeatureResponseDelegate.java:214)
        at
org.vfny.geoserver.wfs.responses.FeatureResponse.writeTo(FeatureResponse.java:141)
        at
org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:527)
        ... 23 more