GeoTools

TransactionInsert not working through Geoserver

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 2.4.1, 2.5-M0
  • Fix Version/s: 2.6-M2
  • Component/s: arcsde plugin
  • Labels:
    None
  • Environment:
    NA

Description

I have a SDE layer which I am trying to insert a record to through a Transaction post in geoserver. It seems that when adding the data, the api creates an empty default feature and then tries to validate the attributes for not-null condition. I have added some more log traces to produce the following stack.

Regards,
Cougar

[ArcSDEFeatureWriter:next:SSA]expected com.vividsolutions.jts.geom.Point , but got null
org.geotools.feature.IllegalAttributeException: expected com.vividsolutions.jts.geom.Point , but got
null
at org.geotools.feature.DefaultFeature.setAttribute(DefaultFeature.java:203)
at org.geotools.feature.DefaultFeature.setAttributes(DefaultFeature.java:232)
at org.geotools.feature.DefaultFeature.<init>(DefaultFeature.java:82)
at org.geotools.feature.DefaultFeatureType.create(DefaultFeatureType.java:140)
at org.geotools.feature.DefaultFeatureType.create(DefaultFeatureType.java:123)
at org.geotools.data.arcsde.ArcSDEFeatureWriter.next(ArcSDEFeatureWriter.java:170)
at org.geotools.data.AbstractFeatureStore.addFeatures(AbstractFeatureStore.java:212)
at org.vfny.geoserver.global.GeoServerFeatureStore.addFeatures(GeoServerFeatureStore.java:74
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:418
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:104
)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:362)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:300)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:252)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:197)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:276)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)
Caused by: java.lang.IllegalArgumentException: LOCATION is not nillable
at org.geotools.feature.DefaultAttributeType.validate(DefaultAttributeType.java:338)
at org.geotools.feature.DefaultFeature.setAttribute(DefaultFeature.java:200)
... 27 more
[ArcSDEFeatureWriter:next:SSA]Underlying exception java.lang.IllegalArgumentException: LOCATION is n
ot nillable
java.lang.IllegalArgumentException: LOCATION is not nillable
at org.geotools.feature.DefaultAttributeType.validate(DefaultAttributeType.java:338)
at org.geotools.feature.DefaultFeature.setAttribute(DefaultFeature.java:200)
at org.geotools.feature.DefaultFeature.setAttributes(DefaultFeature.java:232)
at org.geotools.feature.DefaultFeature.<init>(DefaultFeature.java:82)
at org.geotools.feature.DefaultFeatureType.create(DefaultFeatureType.java:140)
at org.geotools.feature.DefaultFeatureType.create(DefaultFeatureType.java:123)
at org.geotools.data.arcsde.ArcSDEFeatureWriter.next(ArcSDEFeatureWriter.java:170)
at org.geotools.data.AbstractFeatureStore.addFeatures(AbstractFeatureStore.java:212)
at org.vfny.geoserver.global.GeoServerFeatureStore.addFeatures(GeoServerFeatureStore.java:74
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:418
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:104
)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:362)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:300)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:252)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:197)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:276)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)
java.io.IOException: expected com.vividsolutions.jts.geom.Point , but got null
at org.geotools.data.arcsde.ArcSDEFeatureWriter.next(ArcSDEFeatureWriter.java:182)
at org.geotools.data.AbstractFeatureStore.addFeatures(AbstractFeatureStore.java:212)
at org.vfny.geoserver.global.GeoServerFeatureStore.addFeatures(GeoServerFeatureStore.java:74
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:418
)
at org.vfny.geoserver.responses.wfs.TransactionResponse.execute(TransactionResponse.java:104
)
at org.vfny.geoserver.servlets.AbstractService.doService(AbstractService.java:362)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:300)
at org.vfny.geoserver.servlets.AbstractService.doPost(AbstractService.java:252)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:358)
at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:294)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:567)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1807)
at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:525)
at org.mortbay.http.HttpContext.handle(HttpContext.java:1757)
at org.mortbay.http.HttpServer.service(HttpServer.java:879)
at org.mortbay.http.HttpConnection.service(HttpConnection.java:790)
at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:961)
at org.mortbay.http.HttpConnection.handle(HttpConnection.java:807)
at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:197)
at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:276)
at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:511)

Activity

Hide
Chris Holmes added a comment -
Do you have the logs from geoserver? It should have quite a few logging statements for inserts. I redid how it handles inserts recently, adding the validation stuff (it was a lot looser before, but lead to a number of problems, the validation helps the parsing a lot), and put a lot of log statements in to help figure out what was going on. And also a sample of the wfs insert statements, so I can try to replicate it on my computer.
Show
Chris Holmes added a comment - Do you have the logs from geoserver? It should have quite a few logging statements for inserts. I redid how it handles inserts recently, adding the validation stuff (it was a lot looser before, but lead to a number of problems, the validation helps the parsing a lot), and put a lot of log statements in to help figure out what was going on. And also a sample of the wfs insert statements, so I can try to replicate it on my computer.
Hide
Anonymous added a comment -
Hi, I had the same error message.

The problem occures, if the ArcSDE datastore does not allow nillable entries.


In the class TransactionResponse.execute(TransactionRequest) line 418, the command
  Set fids = store.addFeatures(reader);
leads to
  DefaultFeature.setAttribute(int position, Object val)

Here the error is thrown in line 200:
  type.validate(parsed);
when "int position" in setAttribute(...) is the columnumber of the geometry

Greetings, Holger
Show
Anonymous added a comment - Hi, I had the same error message. The problem occures, if the ArcSDE datastore does not allow nillable entries. In the class TransactionResponse.execute(TransactionRequest) line 418, the command   Set fids = store.addFeatures(reader); leads to   DefaultFeature.setAttribute(int position, Object val) Here the error is thrown in line 200:   type.validate(parsed); when "int position" in setAttribute(...) is the columnumber of the geometry Greetings, Holger
Hide
Jody Garnett added a comment -
gabriel here is an old arcsde bug for you, seems that you may have fixed this already. Can you mark this down for a retest (when you get to testing arcsde) and close it if you cannot reproduce it.
Show
Jody Garnett added a comment - gabriel here is an old arcsde bug for you, seems that you may have fixed this already. Can you mark this down for a retest (when you get to testing arcsde) and close it if you cannot reproduce it.
Hide
Gabriel Roldán added a comment -
updating affects/fix version as this seems like certainly could happen when the geometry attribute is not nillable (which is the only one I know how to obtain a nillability mask ( {{sdeLayer.getShapeTypes() & SeLayer.SE_NIL_TYPE_MASK) == SeLayer.SE_NIL_TYPE_MASK}} )
Show
Gabriel Roldán added a comment - updating affects/fix version as this seems like certainly could happen when the geometry attribute is not nillable (which is the only one I know how to obtain a nillability mask ( {{sdeLayer.getShapeTypes() & SeLayer.SE_NIL_TYPE_MASK) == SeLayer.SE_NIL_TYPE_MASK}} )
Hide
Gabriel Roldán added a comment -
fixed at r33646 now that since the ESRI ArcSDE JAVA API v9.2 the attribute nillability is exposed and we can build a matching FeatureType
Show
Gabriel Roldán added a comment - fixed at r33646 now that since the ESRI ArcSDE JAVA API v9.2 the attribute nillability is exposed and we can build a matching FeatureType

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: