[Geoserver-users] Error inserting Multipolygon over WFS-T

Hi list,

I'm getting "error performing insert" while trying to save some data modified in an OpenLayers web app. In this app the user splits geometries into two and then saves them using wfs-t. The thing is that everytime I try to save the data it gives me the same error. If the user only removes a part of the geometry not splitting it, it works fine.

An example geometry that would fail is

MULTIPOLYGON (((541123.32203693 4743960.86161864, 541158.394104 4743951.43048096, 541181.27270508 4743945.88848877, 541187.13769531 4743963.93530273, 541203.50390625 4743993.2243042, 541210.5927124 4744005.89807129, 541182.576594051 4744043.11629994, 541123.32203693 4743960.86161864)), ((541033.43551635 4744030.0848649, 541013.68412171 4744018.83754294, 541037.89709473 4743985.59790039, 541041.30932617 4743983.45288086, 541057.79412842 4743978.83728027, 541077.770047187 4743973.18031081, 541158.59744443 4744074.97158632, 541142.93048096 4744095.78448486, 541140.82067871 4744096.94470215, 541139.42907715 4744097.16912842, 541137.33288574 4744097.19390869, 541125.46087647 4744096.40612793, 541122.63647461 4744095.64447022, 541100.93127441 4744089.82751465, 541086.11706488 4744092.25040211, 541056.93252349 4744097.02358012, 541056.32369995 4744078.1500504, 541046.02401733 4744049.5398209, 541033.43551635 4744030.0848649)))

It seems that the problem is the type of Geometry "MULTIPOLYGON". Is there any related problem of geoserver with MULTIPOLYGON??

The error that GeoServer shows is this:

2012-12-21 13:02:20,464 ERROR [org.geoserver.wfs] - Transaction failed
org.geoserver.wfs.WFSTransactionException: Error performing insert
at org.geoserver.wfs.InsertElementHandler.execute(InsertElementHandler.java:204)
at org.geoserver.wfs.Transaction.execute(Transaction.java:334)
at org.geoserver.wfs.Transaction.transaction(Transaction.java:109)
at org.geoserver.wfs.DefaultWebFeatureService.transaction(DefaultWebFeatureService.java:163)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
at org.geoserver.ows.util.EMFLogger.invoke(EMFLogger.java:51)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at $Proxy17.transaction(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:599)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:230)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
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:275)
at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:183)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:47)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.UnsupportedOperationException: Cannot encode MultiPolygon (yet)
at org.geotools.data.oracle.sdo.SDOSqlDumper.toSDOGeom(SDOSqlDumper.java:101)
at org.geotools.data.oracle.sdo.SDOSqlDumper.toSDOGeom(SDOSqlDumper.java:71)
at org.geotools.data.oracle.OracleDialect.setGeometryValue(OracleDialect.java:440)
at org.geotools.jdbc.JDBCDataStore.insertSQLPS(JDBCDataStore.java:3393)
at org.geotools.jdbc.JDBCDataStore.insert(JDBCDataStore.java:1240)
at org.geotools.jdbc.JDBCDataStore.insert(JDBCDataStore.java:1207)
at org.geotools.jdbc.JDBCInsertFeatureWriter.write(JDBCInsertFeatureWriter.java:73)
at org.geotools.data.InProcessLockingManager$1.write(InProcessLockingManager.java:335)
at org.geotools.data.store.ContentFeatureStore.addFeatures(ContentFeatureStore.java:255)
at org.geoserver.feature.retype.RetypingFeatureStore.addFeatures(RetypingFeatureStore.java:87)
at org.vfny.geoserver.global.GeoServerFeatureStore.addFeatures(GeoServerFeatureStore.java:81)
at org.geoserver.wfs.InsertElementHandler.execute(InsertElementHandler.java:173)
... 70 more

I'm working with GeoServer 2.0.2 over Oracle Spatial.

Any ideas??

David Alda Fernández de Lezea

KONTSULTORIA UNITATEA / UNIDAD DE CONSULTORÍA

Granja Modelo s/n

01192 Arkaute Araba
T 945 003 295 F 945 003 290

dalda@anonymised.com <blocked::mailto:correo_electronico@anonymised.com> | www.hazi.es <blocked::http://www.hazi.es/&gt;

<blocked::http://www.hazi.es/&gt;

********************* LEGE OHARRA ******************* AVISO LEGAL ******************* DISCLAIMER ******************

Mezu hau pertsonala eta isilpekoa da eta baimenik gabeko erabilera debekatua dago legalki. Jasotzailea ez bazara ezabatu mezua, bidali eta kontserbatu gabe.

Este mensaje es personal y confidencial y su uso no autorizado está prohibido legalmente. Si usted no es el destinatario, proceda a borrarlo, sin reenviarlo ni conservarlo.

This message is personal and confidential, unauthorised use is legally prohibited. If you are not the intended recipient, delete it without resending or backing it.