From 3941332c72447b2a6d9dda79164c3ff4ff609590 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Mon, 19 Aug 2013 11:22:37 +0200
Subject: [PATCH] Added getModelDescription to Model interface. Fixed handling
 of NetBeans autounmagical service discovery and publication

---
 .../vips/core/VIPSCoreApplication.java        | 27 +++++++++----------
 .../vips/core/service/ModelResourceImpl.java  | 14 ++++++++++
 .../vips/model/factory/ModelFactory.java      | 12 +++++++++
 3 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java b/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java
index ebdb76b..d6b678b 100644
--- a/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java
+++ b/src/main/java/no/bioforsk/vips/core/VIPSCoreApplication.java
@@ -15,30 +15,27 @@ public class VIPSCoreApplication extends Application
     @Override
     public Set<Class<?>> getClasses() {
         Set<Class<?>> resources = new java.util.HashSet<>();
-        addRestResourceClasses(resources);
-        addInterfaceImplRestResourceClasses(resources);
+        //addRestResourceClasses(resources); //We don't use this!
+        addRestResourceClassesManually(resources);
         return resources;
     }
-    
-    //resources.add(no.bioforsk.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.
+     * Handmade because NetBeans doesn't discover the services that are implementations
+     * of service interfaces. And it adds the interfaces it finds, which do not work
+     * @param resources 
      */
-    private void addRestResourceClasses(Set<Class<?>> resources) {
+    private void addRestResourceClassesManually(Set<Class<?>> resources) {
         resources.add(no.bioforsk.vips.core.config.JacksonConfig.class);
-        
-
+        resources.add(no.bioforsk.vips.core.service.ModelResourceImpl.class);
     }
 
     /**
-     * Handmade because NetBeans doesn't discover the services that are implementations
-     * of service interfaces.
-     * @param resources 
+     * 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 addInterfaceImplRestResourceClasses(Set<Class<?>> resources) {
-        resources.add(no.bioforsk.vips.core.service.ModelResourceImpl.class);
+    private void addRestResourceClasses(Set<Class<?>> resources) {
+        resources.add(no.bioforsk.vips.core.config.JacksonConfig.class);
     }
 }
\ No newline at end of file
diff --git a/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java b/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java
index 14de78a..327767c 100644
--- a/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java
+++ b/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java
@@ -82,6 +82,7 @@ public class ModelResourceImpl implements ModelResource{
     @Override
     public Response printModelList(@PathParam("language") String language)
     {
+        // test comment
         StringBuilder retVal = new StringBuilder();
         ModelFactory mF = ModelFactory.getInstance();
         for(String key : mF.getModelList().keySet())
@@ -96,6 +97,17 @@ public class ModelResourceImpl implements ModelResource{
         return Response.ok().entity(retVal.toString()).build();
     }
     
+    @Override
+    public Response printModelDescription(String modelId) {
+        return this.printModelDescription(modelId, null);
+    }
+
+    @Override
+    public Response printModelDescription(String modelId, String language) {
+        String description = ModelFactory.getInstance().getModelDescription(modelId,language);
+        return Response.ok().entity(description).build();
+    }
+  
     /**
      * Prints the usage instructions from the requested model
      * @param modelId
@@ -197,4 +209,6 @@ public class ModelResourceImpl implements ModelResource{
             return Response.serverError().build();
         }
     }
+
+    
 }
diff --git a/src/main/java/no/bioforsk/vips/model/factory/ModelFactory.java b/src/main/java/no/bioforsk/vips/model/factory/ModelFactory.java
index 9ca5d7f..f069882 100644
--- a/src/main/java/no/bioforsk/vips/model/factory/ModelFactory.java
+++ b/src/main/java/no/bioforsk/vips/model/factory/ModelFactory.java
@@ -148,6 +148,16 @@ public class ModelFactory {
         return this.modelList;
     }
     
+    /**
+     * 
+     * @param modelId ID of the requested model
+     * @param language language two-letter code (<a href="http://www.loc.gov/standards/iso639-2/php/English_list.php">ISO-639-2</a>)
+     * @return Description of model in requested language (Default/fallback is English)
+     */
+    public String getModelDescription(String modelId, String language) {
+        return language != null ? this.models.get(modelId).getModelDescription(language) : this.models.get(modelId).getModelDescription();
+    }
+    
     /**
      * @param modelId the id of the Model
      * @return usage instructions for the requested Model
@@ -169,6 +179,8 @@ public class ModelFactory {
     {
             return this.models.get(modelId).getClass().newInstance();
     }
+
+    
     
     
 }
-- 
GitLab