diff --git a/nb-configuration.xml b/nb-configuration.xml index e9e56b52729f6bef68a0435ec98b924804cf7522..00dea3e61d563b10c9cd00a3ba3dda34e9871fc4 100755 --- a/nb-configuration.xml +++ b/nb-configuration.xml @@ -18,5 +18,6 @@ Any value defined here will override the pom.xml file value but is only applicab <netbeans.hint.license>nibio_open_source_license.ftl</netbeans.hint.license> <org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>WildFly</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server> <org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion>1.7-web</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion> + <netbeans.hint.jdkPlatform>JDK_1.8_SUN</netbeans.hint.jdkPlatform> </properties> </project-shared-configuration> diff --git a/pom.xml b/pom.xml index 9d18112487f986bb4f1db4676de3010f8039ca7e..f9381552152b89657eed2f04c35e19cceecad9e2 100755 --- a/pom.xml +++ b/pom.xml @@ -37,12 +37,24 @@ <artifactId>graal-sdk</artifactId> <version>1.0.0-rc7</version> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.core</groupId> + <artifactId>jackson-annotations</artifactId> + <version>2.9.8</version> + <type>jar</type> + </dependency> <dependency> <groupId>com.bedatadriven</groupId> <artifactId>jackson-datatype-jts</artifactId> <version>2.4</version> <type>jar</type> </dependency> + <dependency> + <groupId>com.fasterxml.jackson.datatype</groupId> + <artifactId>jackson-datatype-jsr310</artifactId> + <version>2.9.8</version> + <type>jar</type> + </dependency> <dependency> <groupId>no.nibio.vips.common</groupId> <artifactId>VIPSCommon</artifactId> @@ -127,8 +139,8 @@ <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> - <source>10</source> - <target>10</target> + <source>1.8</source> + <target>1.8</target> </configuration> </plugin> <plugin> diff --git a/src/main/java/no/nibio/vips/core/VIPSCoreApplication.java b/src/main/java/no/nibio/vips/core/VIPSCoreApplication.java index 2b2a649c043fac0cb1ba564828480eed0c6fe938..1373801c4653c17a25fcf3764d99dec80c18eec4 100755 --- a/src/main/java/no/nibio/vips/core/VIPSCoreApplication.java +++ b/src/main/java/no/nibio/vips/core/VIPSCoreApplication.java @@ -19,10 +19,12 @@ package no.nibio.vips.core; +import java.util.HashSet; import java.util.Set; import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; + /** * Responsible for adding REST resources * @copyright 2013-2018 {@link http://www.nibio.no NIBIO} @@ -49,13 +51,7 @@ public class VIPSCoreApplication extends Application resources.add(no.nibio.vips.core.service.ModelResourceImpl.class); } - /** - * Do not modify addRestResourceClasses() method. - * It is automatically re-generated by NetBeans REST support to populate - * given list with all resources defined in the project. - */ private void addRestResourceClasses(Set<Class<?>> resources) { resources.add(no.nibio.vips.core.config.JacksonConfig.class); - resources.add(no.nibio.vips.core.service.ModelResourceImpl.class); } } \ No newline at end of file diff --git a/src/main/java/no/nibio/vips/core/config/JacksonConfig.java b/src/main/java/no/nibio/vips/core/config/JacksonConfig.java index be1aaabff5a451c8b5cf188aad3a5309bf75c777..db1aa091ab0a4d9b9be94d04d7a1ac20c6ccd285 100755 --- a/src/main/java/no/nibio/vips/core/config/JacksonConfig.java +++ b/src/main/java/no/nibio/vips/core/config/JacksonConfig.java @@ -21,12 +21,16 @@ package no.nibio.vips.core.config; import com.bedatadriven.jackson.datatype.jts.JtsModule; import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; 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 net.ipmdecisions.weather.entity.LocationWeatherData; +import no.nibio.vips.ipmdecisions.LocationWeatherDataDeserializer; /** * This config ensures that Jackson serializes dates as [ISO-8601 ]-compliant notation, @@ -46,6 +50,10 @@ public class JacksonConfig implements ContextResolver<ObjectMapper>{ objectMapper.registerModule(new JtsModule()); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, 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/core/service/ModelResourceImpl.java b/src/main/java/no/nibio/vips/core/service/ModelResourceImpl.java index cab6b58ab3a64e8c794859a7ac81f8ed31064887..8434ebd4a682ed864bcf70f074592aefe9660d87 100755 --- a/src/main/java/no/nibio/vips/core/service/ModelResourceImpl.java +++ b/src/main/java/no/nibio/vips/core/service/ModelResourceImpl.java @@ -19,16 +19,19 @@ package no.nibio.vips.core.service; -import java.net.URL; -import java.net.URLClassLoader; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.http.HttpServletRequest; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; @@ -37,6 +40,8 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.Response; import no.nibio.vips.entity.ModelConfiguration; import no.nibio.vips.entity.Result; +import no.nibio.vips.ipmdecisions.DataTransformer; +import no.nibio.vips.ipmdecisions.IPMDecisionsModelConfiguration; import no.nibio.vips.model.ConfigValidationException; import no.nibio.vips.model.Model; import no.nibio.vips.model.ModelExcecutionException; @@ -281,6 +286,9 @@ public class ModelResourceImpl implements ModelResource{ @Override public Response runModel(@PathParam("modelId") String modelId, ModelConfiguration config) { + System.out.println("Observations are of class " + + ((ArrayList)config.getConfigParameter("observations")).get(0).getClass().getName() + ); try { Model calledModel = ModelFactory.getInstance().getModelInstance(modelId); @@ -305,6 +313,20 @@ public class ModelResourceImpl implements ModelResource{ } } } + + /** + * For input data coming from the IPM Decisions platform + * @param modelId + * @param config + * @return + */ + @Override + public Response runModelForIPMDecisions(@PathParam("modelId") String modelId, IPMDecisionsModelConfiguration config) + { + DataTransformer dt = new DataTransformer(); + config.setConfigParameter("observations", dt.getVIPSWeatherData(config.getWeatherData())); + return this.runModel(modelId, config); + } @Override public Response printModelName(String modelId) { diff --git a/src/main/webapp/WEB-INF/jboss-deployment-structure.xml b/src/main/webapp/WEB-INF/jboss-deployment-structure.xml index 1a1e0575a8cfbab863c92cfcc4c4779f85a924e4..0afc3426ce1471cf541ae6ce865dc2b4c6711a36 100755 --- a/src/main/webapp/WEB-INF/jboss-deployment-structure.xml +++ b/src/main/webapp/WEB-INF/jboss-deployment-structure.xml @@ -25,6 +25,7 @@ along with VIPSCore. If not, see <http://www.nibio.no/licenses/>. <module name="no.nibio.vips.VIPSCommon" export="true"/> <module name="com.fasterxml.jackson.core.jackson-core" /> <module name="com.fasterxml.jackson.core.jackson-databind" /> + <module name="com.fasterxml.jackson.core.jackson-annotations" /> </dependencies> <exclusions> <module name="org.jboss.resteasy.resteasy-json-binding-provider"/>