From c29d8e07d495f4f56b3b3da52868cd30cc9d0382 Mon Sep 17 00:00:00 2001
From: Tor-Einar Skog <tor-einar.skog@bioforsk.no>
Date: Mon, 19 Aug 2013 15:07:21 +0200
Subject: [PATCH] Added exception handling

---
 .../vips/core/service/ModelResourceImpl.java   | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

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 327767c..c05613b 100644
--- a/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java
+++ b/src/main/java/no/bioforsk/vips/core/service/ModelResourceImpl.java
@@ -3,9 +3,12 @@ package no.bioforsk.vips.core.service;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 import javax.ws.rs.PathParam;
+import javax.ws.rs.WebApplicationException;
 import javax.ws.rs.core.Response;
 import no.bioforsk.vips.entity.ModelConfiguration;
+import no.bioforsk.vips.model.ConfigValidationException;
 import no.bioforsk.vips.model.Model;
+import no.bioforsk.vips.model.ModelExcecutionException;
 import no.bioforsk.vips.model.factory.ModelFactory;
 
 /**
@@ -177,10 +180,10 @@ public class ModelResourceImpl implements ModelResource{
             calledModel.setConfiguration(config);
             return Response.ok().entity(calledModel.getResult()).build();
         }
-        catch(InstantiationException | IllegalAccessException ex)
+        catch(InstantiationException | IllegalAccessException | ConfigValidationException | ModelExcecutionException ex)
         {
             Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex);
-            return Response.serverError().build();
+            return Response.serverError().entity(ex.getMessage()).build();
         }
     }
     
@@ -203,10 +206,17 @@ public class ModelResourceImpl implements ModelResource{
             calledModel.setConfiguration(config);
             return Response.ok().entity(calledModel.getResult()).build();
         }
-        catch(InstantiationException | IllegalAccessException ex)
+        catch(InstantiationException | IllegalAccessException | ConfigValidationException | ModelExcecutionException ex)
         {
             Logger.getLogger(ModelResourceImpl.class.getName()).log(Level.SEVERE, null, ex);
-            return Response.serverError().build();
+            if(ex instanceof ConfigValidationException){
+            
+                throw new WebApplicationException(Response.status(Response.Status.BAD_REQUEST).entity(ex).build());
+            }
+            else
+            {
+                throw new WebApplicationException(Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(ex).build());
+            }
         }
     }
 
-- 
GitLab