Added more fixes for missing exceptions in JsonUtils.

Change-Id: I7c4bd43aa23b6041dbc837c9d025a3cf13b9de25
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
index 53f0acf..c12f5cf 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AdminController.java
@@ -85,9 +85,15 @@
         catch (NumberFormatException | NullPointerException e) {
             throw kustvaktResponseHandler.throwit(StatusCodes.ILLEGAL_ARGUMENT);
         }
-        String result = JsonUtils.toJSON(auditingController.retrieveRecords(
-                AuditRecord.CATEGORY.valueOf(type.toUpperCase()), from_date,
-                until_date, dayOnly, integer_limit));
+        String result="";
+        try {
+            result = JsonUtils.toJSON(auditingController.retrieveRecords(
+                    AuditRecord.CATEGORY.valueOf(type.toUpperCase()), from_date,
+                    until_date, dayOnly, integer_limit));
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
         // limit number of records to return
         return Response.ok(result).build();
     }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java
index ac4f69f..dbeb447 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AnnotationController.java
@@ -57,8 +57,12 @@
     @GET
     @Path("layers")
     public Response getLayers () {
-        String result = JsonUtils.toJSON(annotationService.getLayerDtos());
-        return Response.ok(result).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(annotationService.getLayerDtos())).build();
+        }
+        catch (KustvaktException e) {
+            throw responseHandler.throwit(e);
+        }
     }
 
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
index f772224..75a772e 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/AuthenticationController.java
@@ -88,7 +88,12 @@
                 .getQueryLanguages());
         m.put("SortTypes", null); // types of sorting that are supported!
         m.put("version", ServiceInfo.getInfo().getVersion());
-        return Response.ok(JsonUtils.toJSON(m)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(m)).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
@@ -102,7 +107,12 @@
             @HeaderParam(ContainerRequest.HOST) String host,
             @Context Locale locale) {
         TokenContext ctx = (TokenContext) context.getUserPrincipal();
-        return Response.ok(ctx.toJson()).build();
+        try {
+            return Response.ok(ctx.toJson()).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
@@ -200,7 +210,12 @@
             throw kustvaktResponseHandler.throwit(e);
         }
 
-        return Response.ok(context.toJson()).build();
+        try {
+            return Response.ok(context.toJson()).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
@@ -299,7 +314,12 @@
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
         }
-        return Response.ok().entity(context.toJson()).build();
+        try {
+            return Response.ok().entity(context.toJson()).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/KustvaktController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/KustvaktController.java
index f581f37..cf3cfaa 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/KustvaktController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/KustvaktController.java
@@ -1,11 +1,14 @@
 package de.ids_mannheim.korap.web.controller;
 
+import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.server.KustvaktServer;
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.utils.ServiceInfo;
+import de.ids_mannheim.korap.web.utils.KustvaktResponseHandler;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
@@ -22,6 +25,8 @@
 public class KustvaktController {
 
     private static Logger jlog = LoggerFactory.getLogger(UserController.class);
+    @Autowired
+    private KustvaktResponseHandler kustvaktResponseHandler;
 
 
     @Path("info")
@@ -30,7 +35,12 @@
         m.put("version", ServiceInfo.getInfo().getVersion());
         m.put("recent_api_version", KustvaktServer.API_VERSION);
         m.put("service_name", ServiceInfo.getInfo().getName());
-        return Response.ok(JsonUtils.toJSON(m)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(m)).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthController.java
index c21c406..2bc03d7 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/OAuthController.java
@@ -110,14 +110,16 @@
                     "Missing parameter!", "redirect_url");
         info.setRedirect_uri(rurl);
         TokenContext ctx = (TokenContext) context.getUserPrincipal();
+        String json = "";
         try {
             User user = this.controller.getUser(ctx.getUsername());
             this.handler.getPersistenceHandler().registerClient(info, user);
+            json = info.toJSON();
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
         }
-        return Response.ok(info.toJSON()).build();
+        return Response.ok(json).build();
     }
 
 
@@ -128,20 +130,21 @@
             @QueryParam("scope") String scopes) {
         TokenContext ctx = (TokenContext) context.getUserPrincipal();
         Userdata data;
+        String json= "";
         try {
             User user = this.controller.getUser(ctx.getUsername());
             data = this.controller.getUserData(user, UserDetails.class);
             Set<String> base_scope = StringUtils.toSet(scopes, " ");
             base_scope.retainAll(StringUtils.toSet(scopes));
             scopes = StringUtils.toString(base_scope);
+            json = JsonUtils.toJSON(Scopes.mapScopes(scopes, data));
         }
         catch (KustvaktException e) {
             throw kustvaktResponseHandler.throwit(e);
         }
         // json format with scope callback parameter
         // todo: add other scopes as well!
-        return Response.ok(JsonUtils.toJSON(Scopes.mapScopes(scopes, data)))
-                .build();
+        return Response.ok(json).build();
     }
 
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
index 103072e..d64e5bd 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/ResourceController.java
@@ -11,6 +11,7 @@
 
 import com.sun.jersey.spi.container.ResourceFilters;
 
+import de.ids_mannheim.korap.exceptions.KustvaktException;
 import de.ids_mannheim.korap.service.ResourceService;
 import de.ids_mannheim.korap.utils.JsonUtils;
 import de.ids_mannheim.korap.web.filter.PiwikFilter;
@@ -40,7 +41,14 @@
     @GET
     @Path("info")
     public Response getAllResourceInfo () {
-        String result = JsonUtils.toJSON(resourceService.getResourceDtos());
+        String result = "";
+        try {
+            result = JsonUtils.toJSON(resourceService.getResourceDtos());
+        }
+        catch (KustvaktException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
         return Response.ok(result).build();
     }
 }
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
index 5e37692..3c4f33d 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/SearchController.java
@@ -336,19 +336,20 @@
         // EM: is this necessary at all?
         KustvaktResource resource = isCollectionIdValid(ctx.getName(), id);
         if (resource != null) {
-            if (resource instanceof VirtualCollection) {
-                JsonNode node = cquery.and().mergeWith(resource.getData());
-                query = JsonUtils.toJSON(node);
-            }
-            else if (resource instanceof Corpus) {
-                cquery.and().with(Attributes.CORPUS_SIGLE, "=",
-                        resource.getPersistentID());
-                try {
+            try {
+                if (resource instanceof VirtualCollection) {
+                    JsonNode node = cquery.and().mergeWith(resource.getData());
+                    query = JsonUtils.toJSON(node);
+                }
+                else if (resource instanceof Corpus) {
+                    cquery.and().with(Attributes.CORPUS_SIGLE, "=",
+                            resource.getPersistentID());
+
                     query = cquery.toJSON();
                 }
-                catch (KustvaktException e) {
-                   throw responseHandler.throwit(e);
-                }
+            }
+            catch (KustvaktException e) {
+                throw responseHandler.throwit(e);
             }
         }
 
@@ -555,26 +556,28 @@
             jlog.error("Failed retrieving resource: {}", e.string());
             throw responseHandler.throwit(e);
         }
+        try {
+            if (resource instanceof VirtualCollection) {
+                // test this
+                //builder.setBaseQuery(resource.getData());
+                return JsonUtils
+                        .toJSON(builder.and().mergeWith(resource.getData()));
+            }
+            else if (resource instanceof Corpus) {
+                builder.and().with(Attributes.CORPUS_SIGLE, "=",
+                        resource.getPersistentID());
 
-        if (resource instanceof VirtualCollection) {
-            // test this
-            //builder.setBaseQuery(resource.getData());
-            return JsonUtils
-                    .toJSON(builder.and().mergeWith(resource.getData()));
-        }
-        else if (resource instanceof Corpus) {
-            builder.and().with(Attributes.CORPUS_SIGLE, "=",
-                    resource.getPersistentID());
-            try {
                 return builder.toJSON();
             }
-            catch (KustvaktException e) {
-                throw responseHandler.throwit(e);
+
+
+            else {
+                throw responseHandler.throwit(StatusCodes.ILLEGAL_ARGUMENT,
+                        "Type parameter not supported", type);
             }
         }
-        else {
-            throw responseHandler.throwit(StatusCodes.ILLEGAL_ARGUMENT,
-                    "Type parameter not supported", type);
+        catch (KustvaktException e) {
+            throw responseHandler.throwit(e);
         }
     }
 
@@ -620,7 +623,12 @@
         Map vals = new HashMap();
         vals.put("id", cache.getId());
         vals.put("statistics", cache.getStats());
-        return Response.ok(JsonUtils.toJSON(vals)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(vals)).build();
+        }
+        catch (KustvaktException e) {
+            throw responseHandler.throwit(e);
+        }
     }
 
 
@@ -736,7 +744,7 @@
                     base = JsonUtils.readTree(query);
                 }
                 catch (KustvaktException e) {
-                  responseHandler.throwit(e);
+                    responseHandler.throwit(e);
                 }
             else
                 // todo: throw exception response for no resource to save!
@@ -775,7 +783,12 @@
                 throw responseHandler.throwit(e);
             }
         }
-        return Response.ok(JsonUtils.toJSON(vals)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(vals)).build();
+        }
+        catch (KustvaktException e) {
+            throw responseHandler.throwit(e);
+        }
     }
 
 
diff --git a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
index ff8ccf9..b181178 100644
--- a/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
+++ b/full/src/main/java/de/ids_mannheim/korap/web/controller/UserController.java
@@ -116,7 +116,12 @@
             object.put("confirm_uri", uriBuilder.build());
             object.put("uri_expiration",
                     TimeUtils.format(uri.getUriExpiration()));
-            return Response.ok(JsonUtils.toJSON(object)).build();
+            try {
+                return Response.ok(JsonUtils.toJSON(object)).build();
+            }
+            catch (KustvaktException e) {
+                throw kustvaktResponseHandler.throwit(e);
+            }
         }
         else {
             jlog.error("Failed creating confirmation and expiry tokens.");
@@ -224,7 +229,12 @@
         ObjectNode obj = JsonUtils.createObjectNode();
         obj.put(Attributes.URI, builder.toString());
         obj.put(Attributes.URI_EXPIRATION, objects[1].toString());
-        return Response.ok(JsonUtils.toJSON(obj)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(obj)).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
@@ -271,7 +281,12 @@
             throw kustvaktResponseHandler
                     .throwAuthenticationException(ctx.getUsername());
         }
-        return Response.ok(m.toEntity()).build();
+        try {
+            return Response.ok(m.toEntity()).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }
 
 
@@ -444,7 +459,12 @@
             jlog.error("Exception encountered!", e);
             throw kustvaktResponseHandler.throwit(e);
         }
-        return Response.ok(JsonUtils.toJSON(add)).build();
+        try {
+            return Response.ok(JsonUtils.toJSON(add)).build();
+        }
+        catch (KustvaktException e) {
+            throw kustvaktResponseHandler.throwit(e);
+        }
     }