diff --git a/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java b/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java index 764f0a240bedcbc427765d77e3c1662962e0a9dd..ebdb76b3768d52af28b8f37c7b89aedadb9546f0 100644 --- a/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java +++ b/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java @@ -16,8 +16,11 @@ public class VIPSCoreApplication extends Application public Set<Class<?>> getClasses() { Set<Class<?>> resources = new java.util.HashSet<>(); addRestResourceClasses(resources); + addInterfaceImplRestResourceClasses(resources); return resources; } + + //resources.add(no.bioforsk.vips.core.service.ModelResourceImpl.class); /** * Do not modify addRestResourceClasses() method. @@ -26,8 +29,16 @@ public class VIPSCoreApplication extends Application */ private void addRestResourceClasses(Set<Class<?>> resources) { resources.add(no.bioforsk.vips.core.config.JacksonConfig.class); - resources.add(no.bioforsk.vips.core.service.ModelResource.class); + + } + /** + * Handmade because NetBeans doesn't discover the services that are implementations + * of service interfaces. + * @param resources + */ + private void addInterfaceImplRestResourceClasses(Set<Class<?>> resources) { + resources.add(no.bioforsk.vips.core.service.ModelResourceImpl.class); } } \ No newline at end of file diff --git a/src/main/java/no/bioforsk/vips/core/service/ModelResource.java b/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java similarity index 67% rename from src/main/java/no/bioforsk/vips/core/service/ModelResource.java rename to src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java index b966dfd2c8f39beac4bb6d0b29504b20cbee26bd..14de78ab8a47db11e6d2b02415ed883d7cf9e6d2 100644 --- a/src/main/java/no/bioforsk/vips/core/service/ModelResource.java +++ b/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java @@ -2,12 +2,7 @@ package no.bioforsk.vips.core.service; import java.util.logging.Level; import java.util.logging.Logger; -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; import javax.ws.rs.core.Response; import no.bioforsk.vips.entity.ModelConfiguration; import no.bioforsk.vips.model.Model; @@ -18,57 +13,30 @@ import no.bioforsk.vips.model.factory.ModelFactory; * @copyright 2013 {@link http://www.bioforsk.no Bioforsk} * @author Tor-Einar Skog <tor-einar.skog@bioforsk.no> */ -@Path("") -public class ModelResource { - +public class ModelResourceImpl implements ModelResource{ + /** * Lists all models available in this instance, using default language (English) * @return list of all models available */ - @GET - @Path("models") - @Produces("text/plain;charset=UTF-8") + @Override public Response printModelList() { return this.printModelList(null); - /* - StringBuilder retVal = new StringBuilder(); - ModelFactory mF = ModelFactory.getInstance(); - for(String key : mF.getModelList().keySet()) - { - try { - retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName()).append("\n"); - } catch (InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); - } - - } - return Response.ok().entity(retVal.toString()).build();*/ + } /** * Lists all models available in this instance, using default language (English) * @return list of all models available */ - @GET - @Path("models/json") - @Produces("application/json;charset=UTF-8") + //@GET + //@Path("models/json") + //@Produces("application/json;charset=UTF-8") + @Override public Response printModelListJSON() { - /* - StringBuilder retVal = new StringBuilder(); - ModelFactory mF = ModelFactory.getInstance(); - for(String key : mF.getModelList().keySet()) - { - try { - retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName()).append("\n"); - } catch (InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); - } - - } - return Response.ok().entity(retVal.toString()).build(); - * */ + return this.printModelListJSON(null); } @@ -76,9 +44,10 @@ public class ModelResource { * Lists all models available in this instance, using default language (English) * @return list of all models available */ - @GET - @Path("models/json/{language}") - @Produces("application/json;charset=UTF-8") + //@GET + //@Path("models/json/{language}") + //@Produces("application/json;charset=UTF-8") + @Override public Response printModelListJSON(@PathParam("language") String language) { StringBuilder retVal = new StringBuilder(); @@ -95,7 +64,7 @@ public class ModelResource { retVal.append("}"); } catch (InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex); } } @@ -107,9 +76,10 @@ public class ModelResource { * Lists all models available in this instance, using default language (English) * @return list of all models available */ - @GET - @Path("models/{language}") - @Produces("text/plain;charset=UTF-8") + //@GET + //@Path("models/{language}") + //@Produces("text/plain;charset=UTF-8") + @Override public Response printModelList(@PathParam("language") String language) { StringBuilder retVal = new StringBuilder(); @@ -119,7 +89,7 @@ public class ModelResource { try { retVal.append(key).append(" ").append(mF.getModelInstance(key).getModelName(language)).append("\n"); } catch (InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex); } } @@ -132,9 +102,10 @@ public class ModelResource { * @param language two-letter code (<a href="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO-639-2</a>) * @return */ - @GET - @Path("models/{modelId}/usage/{language}") - @Produces("text/plain;charset=UTF-8") + //@GET + //@Path("models/{modelId}/usage/{language}") + //@Produces("text/plain;charset=UTF-8") + @Override public Response printModelUsage(@PathParam("modelId") String modelId, @PathParam("language") String language) { String usage = ModelFactory.getInstance().getModelUsage(modelId, language); @@ -147,24 +118,31 @@ public class ModelResource { * @param language two-letter code (<a href="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO-639-2</a>) * @return */ - @GET - @Path("models/{modelId}/usage") - @Produces("text/plain;charset=UTF-8") + //@GET + //@Path("models/{modelId}/usage") + //@Produces("text/plain;charset=UTF-8") + @Override public Response printModelUsage(@PathParam("modelId") String modelId) { return this.printModelUsage(modelId, null); } - @GET - @Path("models/{modelId}/sampleconfig") - @Produces("text/plain;charset=UTF-8") + /** + * Outputs a sample configuration for the requested model + * @param modelId the requested model + * @return + */ + //@GET + //@Path("models/{modelId}/sampleconfig") + //@Produces("text/plain;charset=UTF-8") + @Override public Response printModelSampleConfig(@PathParam("modelId") String modelId) { try { String sampleConfig = ModelFactory.getInstance().getModelInstance(modelId).getSampleConfig(); return Response.ok().entity(sampleConfig).build(); } catch (InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex); return Response.serverError().build(); } } @@ -174,10 +152,11 @@ public class ModelResource { * @param config input data for the model * @return list of result objects */ - @POST - @Path("models/run") - @Consumes("application/json") - @Produces("application/json") + //@POST + //@Path("models/run") + //@Consumes("application/json") + //@Produces("application/json") + @Override public Response runModel(ModelConfiguration config) { try @@ -188,7 +167,7 @@ public class ModelResource { } catch(InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex); return Response.serverError().build(); } } @@ -199,10 +178,11 @@ public class ModelResource { * @param config input data for the model * @return list of result objects */ - @POST - @Path("models/{modelId}/run") - @Consumes("application/json") - @Produces("application/json") + //@POST + //@Path("models/{modelId}/run") + //@Consumes("application/json") + //@Produces("application/json") + @Override public Response runModel(@PathParam("modelId") String modelId, ModelConfiguration config) { try @@ -213,7 +193,7 @@ public class ModelResource { } catch(InstantiationException | IllegalAccessException ex) { - Logger.getLogger(ModelResource.class.getName()).log(Level.SEVERE, null, ex); + Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex); return Response.serverError().build(); } }