Skip to content

Saving geoinformation for a scientific object #25

@Dryocopus

Description

@Dryocopus

Not something I expect to need for the very short term, but just to let you know:

In the Swagger documentation for POST core/scientific_objects, there is an example with the following structure:

{
  "uri": "string",
  "rdf_type": "vocabulary:Plot",
  "name": "Plot 12",
  "experiment": "string",
  "relations": [
    {
      "property": "string",
      "value": "string"
    }
  ],
  "geometry": "{'type':'Polygon','coordinates':[[[3.97167246,43.61328981], [3.97171243,43.61332417],[3.9717427,43.61330558],[3.97170272,43.61327122], [3.97167246,43.61328981],[3.97167246,43.61328981]]]}"
}

If I try to post that as is, it gives an error message:

{
  "metadata": {
    "pagination": {
      "pageSize": 0,
      "currentPage": 0,
      "totalCount": 0,
      "totalPages": 0
    },
    "status": [],
    "datafiles": []
  },
  "result": {
    "title": "Unable to parse JSON input",
    "message": "Missing type id when trying to resolve subtype of [simple type, class org.geojson.GeoJsonObject]: missing type id property 'type' (for POJO property 'geometry')\n at [Source: (org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$UnCloseableInputStream); line: 12, column: 15] (through reference chain: org.opensilex.core.scientificObject.api.ScientificObjectCreationDTO[\"geometry\"])",
    "stack": [],
    "fullstack": [
      "com.fasterxml.jackson.databind.exc.InvalidTypeIdException.from(InvalidTypeIdException.java:43)",
      "com.fasterxml.jackson.databind.DeserializationContext.missingTypeIdException(DeserializationContext.java:1945)",
      "com.fasterxml.jackson.databind.DeserializationContext.handleMissingTypeId(DeserializationContext.java:1458)",
      "com.fasterxml.jackson.databind.jsontype.impl.TypeDeserializerBase._handleMissingTypeId(TypeDeserializerBase.java:307)",
      "com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedUsingDefaultImpl(AsPropertyTypeDeserializer.java:174)",
      "com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:94)",
      "com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:263)",
      "com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:138)",
      "com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:324)",
      "com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187)",
      "com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322)",
      "com.fasterxml.jackson.databind.ObjectReader._bind(ObjectReader.java:2007)",
      "com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1174)",
      "org.glassfish.jersey.jackson.internal.jackson.jaxrs.base.ProviderBase.readFrom(ProviderBase.java:837)",
      "org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.invokeReadFrom(ReaderInterceptorExecutor.java:233)",
      "org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:212)",
      "org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)",
      "org.glassfish.jersey.spi.ContentEncoder.aroundReadFrom(ContentEncoder.java:102)",
      "org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)",
      "org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundReadFrom(MappableExceptionWrapperInterceptor.java:49)",
      "org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:132)",
      "org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:1072)",
      "org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:885)",
      "org.glassfish.jersey.server.ContainerRequest.readEntity(ContainerRequest.java:274)",
      "org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:73)",
      "org.glassfish.jersey.server.internal.inject.EntityParamValueParamProvider$EntityValueSupplier.apply(EntityParamValueParamProvider.java:56)",
      "org.glassfish.jersey.server.spi.internal.ParamValueFactoryWithSource.apply(ParamValueFactoryWithSource.java:50)",
      "org.glassfish.jersey.server.spi.internal.ParameterValueHelper.getParameterValues(ParameterValueHelper.java:68)",
      "org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$AbstractMethodParamInvoker.getParamValues(JavaResourceMethodDispatcherProvider.java:109)",
      "org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)",
      "org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:79)",
      "org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:469)",
      "org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:391)",
      "org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:80)",
      "org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:255)",
      "org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)",
      "org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)",
      "org.glassfish.jersey.internal.Errors.process(Errors.java:292)",
      "org.glassfish.jersey.internal.Errors.process(Errors.java:274)",
      "org.glassfish.jersey.internal.Errors.process(Errors.java:244)",
      "org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)",
      "org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:234)",
      "org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:680)",
      "org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)",
      "org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)",
      "org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:366)",
      "org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:319)",
      "org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:205)",
      "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)",
      "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
      "org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)",
      "org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)",
      "org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)",
      "org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202)",
      "org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)",
      "org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)",
      "org.apache.catalina.valves.StuckThreadDetectionValve.invoke(StuckThreadDetectionValve.java:206)",
      "org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:295)",
      "org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)",
      "org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)",
      "org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)",
      "org.apache.catalina.valves.rewrite.RewriteValve.invoke(RewriteValve.java:552)",
      "org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143)",
      "org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)",
      "org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)",
      "org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)",
      "org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)",
      "org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)",
      "org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)",
      "org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)",
      "org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)",
      "java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)",
      "java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)",
      "org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)",
      "java.base/java.lang.Thread.run(Thread.java:829)"
    ]
  }
} 

Not sure how the nested quotes are handled exactly. Perhaps that goes wrong.

It might be related to this Error in the editor.swagger.io interface:
image

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions