Fix handling of several error cases in the application REST API

Change-Id: I5a18374834b01e7b79b8f874356bf5f76168b66e
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
index 24ad50a..c73c612 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/ApplicationsWebResource.java
@@ -17,6 +17,7 @@
 
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import org.onosproject.app.ApplicationAdminService;
+import org.onosproject.app.ApplicationException;
 import org.onosproject.core.Application;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
@@ -131,11 +132,15 @@
                                @DefaultValue("false") boolean activate,
                                InputStream stream) {
         ApplicationAdminService service = get(ApplicationAdminService.class);
-        Application app = service.install(stream);
-        if (activate) {
-            service.activate(app.id());
+        try {
+            Application app = service.install(stream);
+            if (activate) {
+                service.activate(app.id());
+            }
+            return ok(codec(Application.class).encode(app, this)).build();
+        } catch (ApplicationException appEx) {
+            throw new IllegalArgumentException(appEx);
         }
-        return ok(codec(Application.class).encode(app, this)).build();
     }
 
     /**