Handling backend exceptions for client side for the application addition and 
udpate


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/65599e5f
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/65599e5f
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/65599e5f

Branch: refs/heads/master
Commit: 65599e5fc6752367df85a8144b346c78b58e2c79
Parents: 764f7db
Author: reka <[email protected]>
Authored: Wed May 20 11:40:00 2015 +0530
Committer: reka <[email protected]>
Committed: Wed May 20 17:03:48 2015 +0530

----------------------------------------------------------------------
 .../applications/parser/ApplicationParser.java  |   4 +-
 .../parser/DefaultApplicationParser.java        |  33 +-
 .../CartridgeGroupNotFoundException.java        |  17 +-
 .../cartridge/CartridgeNotFoundException.java   |  37 ++
 .../autoscaler/services/AutoscalerService.java  |   5 +-
 .../services/impl/AutoscalerServiceImpl.java    |   7 +-
 .../common/client/AutoscalerServiceClient.java  |   8 +-
 .../rest/endpoint/api/StratosApiV41.java        |  39 +-
 .../rest/endpoint/api/StratosApiV41Utils.java   |   4 +-
 .../src/main/resources/AutoscalerService.wsdl   | 589 ++++++++++---------
 10 files changed, 446 insertions(+), 297 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ApplicationParser.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ApplicationParser.java
index 6119e0e..5ef391f 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ApplicationParser.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/ApplicationParser.java
@@ -22,7 +22,9 @@ package org.apache.stratos.autoscaler.applications.parser;
 
 import 
org.apache.stratos.autoscaler.applications.pojo.ApplicationClusterContext;
 import org.apache.stratos.autoscaler.applications.pojo.ApplicationContext;
+import org.apache.stratos.autoscaler.exception.CartridgeGroupNotFoundException;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
+import 
org.apache.stratos.autoscaler.exception.cartridge.CartridgeNotFoundException;
 import org.apache.stratos.common.Properties;
 import org.apache.stratos.messaging.domain.application.Application;
 
@@ -41,7 +43,7 @@ public interface ApplicationParser {
      * @return Application structure denoting the parsed Application
      * @throws ApplicationDefinitionException If the Application Definition is 
invalid
      */
-    public Application parse(ApplicationContext applicationContext) throws 
ApplicationDefinitionException;
+    public Application parse(ApplicationContext applicationContext) throws 
ApplicationDefinitionException, CartridgeGroupNotFoundException, 
CartridgeNotFoundException;
 
     /**
      * Returns a set of ApplicationClusterContext which will comprise of 
cluster related information

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
index fd88d06..87dc0fc 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/parser/DefaultApplicationParser.java
@@ -33,7 +33,9 @@ import org.apache.stratos.autoscaler.applications.pojo.*;
 import 
org.apache.stratos.autoscaler.client.IdentityApplicationManagementServiceClient;
 import org.apache.stratos.autoscaler.client.OAuthAdminServiceClient;
 import org.apache.stratos.autoscaler.exception.AutoScalerException;
+import org.apache.stratos.autoscaler.exception.CartridgeGroupNotFoundException;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
+import 
org.apache.stratos.autoscaler.exception.cartridge.CartridgeNotFoundException;
 import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
@@ -72,7 +74,9 @@ public class DefaultApplicationParser implements 
ApplicationParser {
     }
 
     @Override
-    public Application parse(ApplicationContext applicationContext) throws 
ApplicationDefinitionException {
+    public Application parse(ApplicationContext applicationContext)
+            throws ApplicationDefinitionException, 
CartridgeGroupNotFoundException,
+            CartridgeNotFoundException {
 
         if (applicationContext == null) {
             handleError("Invalid application definition, application context 
is null");
@@ -241,7 +245,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
      */
     private Application buildCompositeAppStructure(ApplicationContext 
applicationContext,
                                                    Map<String, 
SubscribableInfoContext> subscribableInfoCtxts)
-            throws ApplicationDefinitionException {
+            throws ApplicationDefinitionException, 
CartridgeGroupNotFoundException, CartridgeNotFoundException {
 
         Application application = new 
Application(applicationContext.getApplicationId());
 
@@ -343,7 +347,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
      */
     private Map<String, Map<String, ClusterDataHolder>> 
parseLeafLevelSubscriptions(
             String appId, int tenantId, String key, String groupName,
-            List<CartridgeContext> cartridgeContextList, Set<StartupOrder> 
dependencyOrder) throws ApplicationDefinitionException {
+            List<CartridgeContext> cartridgeContextList, Set<StartupOrder> 
dependencyOrder) throws ApplicationDefinitionException, 
CartridgeNotFoundException {
 
         Map<String, Map<String, ClusterDataHolder>> completeDataHolder = new 
HashMap<String, Map<String, ClusterDataHolder>>();
         Map<String, ClusterDataHolder> clusterDataMap = new HashMap<String, 
ClusterDataHolder>();
@@ -361,7 +365,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
 
             Cartridge cartridge = getCartridge(cartridgeType);
             if (cartridge == null) {
-                throw new RuntimeException("Cartridge not found: " + 
cartridgeType);
+                throw new CartridgeNotFoundException("Cartridge not found " + 
cartridgeType);
             }
 
             // Add metadata keys defined in cartridges as export metadata keys
@@ -398,10 +402,12 @@ public class DefaultApplicationParser implements 
ApplicationParser {
                         String[] arrStartUp = 
startupOrderComponent.split("\\.");
                         if (arrStartUp[0].equals("cartridge")) {
                             String cartridgeAlias = arrStartUp[1];
-                            String dependentCartridgeType = 
findCartridgeTypeFromAlias(cartridgeContextList, cartridgeAlias);
+                            String dependentCartridgeType =
+                                    
findCartridgeTypeFromAlias(cartridgeContextList, cartridgeAlias);
                             if (StringUtils.isBlank(dependentCartridgeType)) {
-                                throw new 
RuntimeException(String.format("Could not find dependent cartridge for " +
-                                        "cartridge alias: [application] %s 
[cartridge-alias] %s", appId, cartridgeAlias));
+                                throw new CartridgeNotFoundException(
+                                        String.format("Could not find 
dependent cartridge for " +
+                                        "application: %s cartridge-alias: %s", 
appId, cartridgeAlias));
                             }
                             Cartridge dependencyCartridge = 
getCartridge(dependentCartridgeType);
                             ClusterDataHolder dataHolder = 
clusterDataMapByType.get(dependentCartridgeType);
@@ -557,14 +563,15 @@ public class DefaultApplicationParser implements 
ApplicationParser {
      */
     private Map<String, Group> parseGroups(String appId, int tenantId, String 
key, List<GroupContext> groupCtxts,
                                            Map<String, 
SubscribableInfoContext> subscribableInformation)
-            throws ApplicationDefinitionException {
+            throws ApplicationDefinitionException, 
CartridgeGroupNotFoundException, CartridgeNotFoundException {
 
         Map<String, Group> groupAliasToGroup = new HashMap<String, Group>();
 
         for (GroupContext groupCtxt : groupCtxts) {
             ServiceGroup serviceGroup = getServiceGroup(groupCtxt.getName());
             if (serviceGroup == null) {
-                throw new RuntimeException("Cartridge group not found: 
[group-name] " + groupCtxt.getName());
+                throw new CartridgeGroupNotFoundException("Cartridge group not 
found group-name: "
+                        + groupCtxt.getName());
             }
             Group group = parseGroup(appId, tenantId, key, groupCtxt, 
subscribableInformation, serviceGroup);
             validateCartridgeGroupReference(appId, serviceGroup, group);
@@ -584,11 +591,13 @@ public class DefaultApplicationParser implements 
ApplicationParser {
      * @param serviceGroup
      * @param group
      */
-    private void validateCartridgeGroupReference(String applicationId, 
ServiceGroup serviceGroup, Group group) {
+    private void validateCartridgeGroupReference(String applicationId,
+                                                 ServiceGroup serviceGroup, 
Group group)
+            throws CartridgeNotFoundException {
         List<String> cartridgeTypes = 
findCartridgeTypesInServiceGroup(serviceGroup);
         for (String cartridgeType : cartridgeTypes) {
             if (findClusterDataInGroup(group, cartridgeType) == null) {
-                throw new RuntimeException(String.format("Cartridge %s not 
defined in cartridge group: " +
+                throw new CartridgeNotFoundException(String.format("Cartridge 
%s not defined in cartridge group: " +
                                 "[application] %s [cartridge-group-name] %s 
[cartridge-group-alias] %s",
                         cartridgeType, applicationId, group.getName(), 
group.getAlias()));
             }
@@ -704,7 +713,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
     private Group parseGroup(String appId, int tenantId, String key, 
GroupContext groupCtxt,
                              Map<String, SubscribableInfoContext> 
subscribableInfoCtxts,
                              ServiceGroup serviceGroup)
-            throws ApplicationDefinitionException {
+            throws ApplicationDefinitionException, CartridgeNotFoundException {
 
         Group group = new Group(appId, groupCtxt.getName(), 
groupCtxt.getAlias());
         group.setGroupScalingEnabled(groupCtxt.getGroupMaxInstances() > 1);

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/CartridgeGroupNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/CartridgeGroupNotFoundException.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/CartridgeGroupNotFoundException.java
index 8b1587e..ae80b4a 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/CartridgeGroupNotFoundException.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/CartridgeGroupNotFoundException.java
@@ -18,8 +18,21 @@
  */
 package org.apache.stratos.autoscaler.exception;
 
+/**
+ * This will get thrown when create/deploy the application, the relevant
+ * cartridge group is not found
+ */
 public class CartridgeGroupNotFoundException extends Exception {
-    public CartridgeGroupNotFoundException(String msg) {
-        super(msg);
+    private String message;
+
+    public CartridgeGroupNotFoundException(String message) {
+        super(message);
+        this.message = message;
+    }
+
+
+    @Override
+    public String getMessage() {
+        return message;
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/cartridge/CartridgeNotFoundException.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/cartridge/CartridgeNotFoundException.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/cartridge/CartridgeNotFoundException.java
new file mode 100644
index 0000000..6ff72ad
--- /dev/null
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/exception/cartridge/CartridgeNotFoundException.java
@@ -0,0 +1,37 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.stratos.autoscaler.exception.cartridge;
+
+/**
+ * When cartridge is not there, this particular exception needs to be thrown
+ */
+public class CartridgeNotFoundException extends Exception {
+    private String message;
+
+    public CartridgeNotFoundException(String message) {
+        super(message);
+        this.message = message;
+    }
+
+
+    @Override
+    public String getMessage() {
+        return message;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java
index cf53668..8af3b56 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/AutoscalerService.java
@@ -26,6 +26,7 @@ import org.apache.stratos.autoscaler.exception.*;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidServiceGroupException;
+import 
org.apache.stratos.autoscaler.exception.cartridge.CartridgeNotFoundException;
 import org.apache.stratos.autoscaler.exception.policy.*;
 import org.apache.stratos.autoscaler.pojo.ServiceGroup;
 import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
@@ -85,7 +86,7 @@ public interface AutoscalerService {
      * @param applicationContext {@link ApplicationContext}
      * @throws ApplicationDefinitionException if an error occurs
      */
-    public boolean addApplication(ApplicationContext applicationContext) 
throws ApplicationDefinitionException;
+    public boolean addApplication(ApplicationContext applicationContext) 
throws ApplicationDefinitionException, CartridgeGroupNotFoundException, 
CartridgeNotFoundException;
 
     /**
      * update an application
@@ -93,7 +94,7 @@ public interface AutoscalerService {
      * @param applicationContext {@link 
org.apache.stratos.autoscaler.applications.pojo.ApplicationContext}
      * @throws ApplicationDefinitionException if an error occurs
      */
-    public boolean updateApplication(ApplicationContext applicationContext) 
throws ApplicationDefinitionException;
+    public boolean updateApplication(ApplicationContext applicationContext) 
throws ApplicationDefinitionException, CartridgeGroupNotFoundException, 
CartridgeNotFoundException;
 
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index 6f5ff51..4a09de4 100644
--- 
a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ 
b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -36,6 +36,7 @@ import org.apache.stratos.autoscaler.exception.*;
 import 
org.apache.stratos.autoscaler.exception.application.ApplicationDefinitionException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidApplicationPolicyException;
 import 
org.apache.stratos.autoscaler.exception.application.InvalidServiceGroupException;
+import 
org.apache.stratos.autoscaler.exception.cartridge.CartridgeNotFoundException;
 import org.apache.stratos.autoscaler.exception.policy.*;
 import org.apache.stratos.autoscaler.monitor.cluster.ClusterMonitor;
 import org.apache.stratos.autoscaler.monitor.component.ApplicationMonitor;
@@ -153,7 +154,8 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
 
     @Override
     public boolean addApplication(ApplicationContext applicationContext)
-            throws ApplicationDefinitionException {
+            throws ApplicationDefinitionException, 
CartridgeGroupNotFoundException,
+            CartridgeNotFoundException {
 
         if (log.isInfoEnabled()) {
             log.info(String.format("Adding application: [application-id] %s",
@@ -181,7 +183,8 @@ public class AutoscalerServiceImpl implements 
AutoscalerService {
 
     @Override
     public boolean updateApplication(ApplicationContext applicationContext)
-            throws ApplicationDefinitionException {
+            throws ApplicationDefinitionException, 
CartridgeGroupNotFoundException,
+            CartridgeNotFoundException {
 
         String applicationId = applicationContext.getApplicationId();
         if (log.isInfoEnabled()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java
index 720d264..5d6bf16 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/client/AutoscalerServiceClient.java
@@ -91,12 +91,16 @@ public class AutoscalerServiceClient {
     }
 
     public void addApplication(ApplicationContext applicationContext)
-            throws AutoscalerServiceApplicationDefinitionExceptionException, 
RemoteException {
+            throws AutoscalerServiceApplicationDefinitionExceptionException,
+            RemoteException, 
AutoscalerServiceCartridgeNotFoundExceptionException,
+            AutoscalerServiceCartridgeGroupNotFoundExceptionException {
         stub.addApplication(applicationContext);
     }
 
     public void updateApplication(ApplicationContext applicationContext)
-            throws AutoscalerServiceApplicationDefinitionExceptionException, 
RemoteException {
+            throws AutoscalerServiceApplicationDefinitionExceptionException,
+            RemoteException, 
AutoscalerServiceCartridgeNotFoundExceptionException,
+            AutoscalerServiceCartridgeGroupNotFoundExceptionException {
         stub.updateApplication(applicationContext);
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
index 7e25e8e..7b50e40 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41.java
@@ -699,16 +699,27 @@ public class StratosApiV41 extends AbstractApi {
     @AuthorizationAction("/permission/protected/manage/addApplication")
     public Response addApplication(ApplicationBean applicationDefinition) 
throws RestAPIException {
         try {
-            StratosApiV41Utils.addApplication(applicationDefinition, 
getConfigContext(), getUsername(), getTenantDomain());
+            StratosApiV41Utils.addApplication(applicationDefinition, 
getConfigContext(),
+                        getUsername(), getTenantDomain());
+
 
             URI url = 
uriInfo.getAbsolutePathBuilder().path(applicationDefinition.getApplicationId()).build();
             return Response.created(url).entity(new 
ResponseMessageBean(ResponseMessageBean.SUCCESS,
                     String.format("Application added successfully: 
[application] %s",
                             
applicationDefinition.getApplicationId()))).build();
         } catch (ApplicationAlreadyExistException e) {
-
             return Response.status(Response.Status.CONFLICT).entity(new 
ResponseMessageBean(
                     ResponseMessageBean.ERROR, "Application already 
exists")).build();
+        }  catch (AutoscalerServiceCartridgeNotFoundExceptionException e) {
+            String backendErrorMessage = 
e.getFaultMessage().getCartridgeNotFoundException().
+                    getMessage();
+            return Response.status(Response.Status.BAD_REQUEST).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, backendErrorMessage)).build();
+        } catch (AutoscalerServiceCartridgeGroupNotFoundExceptionException e) {
+            String backendErrorMessage = 
e.getFaultMessage().getCartridgeGroupNotFoundException().
+                    getMessage();
+            return Response.status(Response.Status.BAD_REQUEST).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, backendErrorMessage)).build();
         } catch (RestAPIException e) {
             throw e;
         }
@@ -728,11 +739,25 @@ public class StratosApiV41 extends AbstractApi {
     @AuthorizationAction("/permission/protected/manage/addApplication")
     public Response updateApplication(ApplicationBean applicationDefinition) 
throws RestAPIException {
 
-        StratosApiV41Utils.updateApplication(applicationDefinition, 
getConfigContext(), getUsername(), getTenantDomain());
-        URI url = 
uriInfo.getAbsolutePathBuilder().path(applicationDefinition.getApplicationId()).build();
-        return Response.created(url).entity(new 
ResponseMessageBean(ResponseMessageBean.SUCCESS,
-                String.format("Application updated successfully: [application] 
%s",
-                        applicationDefinition.getApplicationId()))).build();
+        try {
+            StratosApiV41Utils.updateApplication(applicationDefinition, 
getConfigContext(),
+                    getUsername(), getTenantDomain());
+            URI url = 
uriInfo.getAbsolutePathBuilder().path(applicationDefinition.getApplicationId()).build();
+            return Response.created(url).entity(new 
ResponseMessageBean(ResponseMessageBean.SUCCESS,
+                    String.format("Application updated successfully: 
[application] %s",
+                            
applicationDefinition.getApplicationId()))).build();
+        }  catch (AutoscalerServiceCartridgeNotFoundExceptionException e) {
+            String backendErrorMessage = 
e.getFaultMessage().getCartridgeNotFoundException().
+                    getMessage();
+            return Response.status(Response.Status.BAD_REQUEST).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, backendErrorMessage)).build();
+        } catch (AutoscalerServiceCartridgeGroupNotFoundExceptionException e) {
+            String backendErrorMessage = 
e.getFaultMessage().getCartridgeGroupNotFoundException().
+                    getMessage();
+            return Response.status(Response.Status.BAD_REQUEST).entity(new 
ResponseMessageBean(
+                    ResponseMessageBean.ERROR, backendErrorMessage)).build();
+        }
+
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/stratos/blob/65599e5f/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
index 42612a7..9fd3413 100644
--- 
a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
+++ 
b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/api/StratosApiV41Utils.java
@@ -1335,7 +1335,7 @@ public class StratosApiV41Utils {
      */
     public static void addApplication(ApplicationBean appDefinition, 
ConfigurationContext ctxt,
                                       String userName, String tenantDomain)
-            throws RestAPIException {
+            throws RestAPIException, 
AutoscalerServiceCartridgeNotFoundExceptionException, 
AutoscalerServiceCartridgeGroupNotFoundExceptionException {
 
         if (StringUtils.isBlank(appDefinition.getApplicationId())) {
             String message = "Please specify the application name";
@@ -1408,7 +1408,7 @@ public class StratosApiV41Utils {
      */
     public static void updateApplication(ApplicationBean appDefinition, 
ConfigurationContext ctxt,
                                          String userName, String tenantDomain)
-            throws RestAPIException {
+            throws RestAPIException, 
AutoscalerServiceCartridgeNotFoundExceptionException, 
AutoscalerServiceCartridgeGroupNotFoundExceptionException {
 
         if (StringUtils.isBlank(appDefinition.getApplicationId())) {
             String message = "Please specify the application name";

Reply via email to