diff --git a/.gitignore b/.gitignore index 23176e3effbf3094ff070c26224e3b2d14427283..4bc1e934d1a2494c4b7a08a7b94ce0c6f5834c65 100755 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ target/ classes/ +*~ diff --git a/pom.xml b/pom.xml index c9eebd2d5d77f0e3435b14c2e84577c6914393f8..266b6e2a41da7b4a744530aaa1de2fa55adb7df6 100755 --- a/pom.xml +++ b/pom.xml @@ -27,15 +27,21 @@ <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> - <version>2.9.8</version> + <version>2.11.3</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> - <version>2.9.8</version> + <version>2.11.3</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + <version>2.11.3</version> + <type>jar</type> + </dependency> <dependency> <groupId>no.nibio.vips.common</groupId> <artifactId>VIPSCommon</artifactId> 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(); } + }