diff --git a/src/main/java/no/nibio/vips/coremanager/config/JacksonConfig.java b/src/main/java/no/nibio/vips/coremanager/config/JacksonConfig.java index b2e3f154325d864c93fc5bfe727af283600f7885..d551fe8842ad0b0b8a6a619ca414b15dbd94f373 100644 --- a/src/main/java/no/nibio/vips/coremanager/config/JacksonConfig.java +++ b/src/main/java/no/nibio/vips/coremanager/config/JacksonConfig.java @@ -20,13 +20,18 @@ package no.nibio.vips.coremanager.config; import com.bedatadriven.jackson.datatype.jts.JtsModule; +import com.fasterxml.jackson.databind.Module.SetupContext; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.ext.ContextResolver; import javax.ws.rs.ext.Provider; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import javax.ws.rs.Consumes; +import net.ipmdecisions.weather.entity.LocationWeatherData; +import no.nibio.vips.ipmdecisions.LocationWeatherDataDeserializer; /** * This config ensures that Jackson serializes dates as [ISO-8601 ]-compliant notation, @@ -45,6 +50,10 @@ public class JacksonConfig implements ContextResolver<ObjectMapper>{ objectMapper = new ObjectMapper(); objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); objectMapper.registerModule(new JtsModule()); + objectMapper.registerModule(new JavaTimeModule()); + SimpleModule module = new SimpleModule(); + module.addDeserializer(LocationWeatherData.class, new LocationWeatherDataDeserializer()); + objectMapper.registerModule(module); } @Override diff --git a/src/main/java/no/nibio/vips/coremanager/service/ManagerResourceImpl.java b/src/main/java/no/nibio/vips/coremanager/service/ManagerResourceImpl.java index a78929f433a4fc9c3dfc17747fab9f84ea40f55f..14d96bf2100556761bde86cc188f85664de15282 100755 --- a/src/main/java/no/nibio/vips/coremanager/service/ManagerResourceImpl.java +++ b/src/main/java/no/nibio/vips/coremanager/service/ManagerResourceImpl.java @@ -44,12 +44,14 @@ import javax.ws.rs.client.WebTarget; import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import no.nibio.vips.core.service.ModelResource; +import no.nibio.vips.coremanager.config.JacksonConfig; import no.nibio.vips.coremanager.session.ControllerGetter; import no.nibio.vips.coremanager.entity.ModelUsageLog; import no.nibio.vips.coremanager.entity.VIPSCoreCredentials; import no.nibio.vips.coremanager.entity.VipsCoreUser; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.ModelRunRequest; +import no.nibio.vips.ipmdecisions.IPMDecisionsModelConfiguration; import no.nibio.vips.model.Model; import no.nibio.vips.util.ServletUtil; import org.jboss.resteasy.annotations.GZIP; @@ -400,6 +402,18 @@ public class ManagerResourceImpl implements ManagerResource{ } + /** + * TODO Add some kind of authentication and logging for IPM Decisions + * @param modelId + * @param config + * @return + */ + @Override + public Response runModelForIPMDecisions(String modelId, IPMDecisionsModelConfiguration config) { + return this.getModelResource().runModelForIPMDecisions(modelId, config); + } + + /** * Instantiates and runs the requested model asynchronously (Implement if needed) * @param modelId @@ -418,7 +432,11 @@ public class ManagerResourceImpl implements ManagerResource{ private ModelResource getModelResource() { + Client client = ClientBuilder.newClient(); + // This ensures that the general ObjectMapper config is applied to the + // client. + client.register(JacksonConfig.class); WebTarget target = client.target(VIPSCORE_URL); ResteasyWebTarget rTarget = (ResteasyWebTarget) target; ModelResource resource = rTarget.proxy(ModelResource.class); @@ -488,5 +506,6 @@ public class ManagerResourceImpl implements ManagerResource{ return Response.ok(this.getStaticFileAsInputStream(servletContext, "staticcss/" + fileName)).build(); } + }