You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2015/06/22 08:06:53 UTC

[2/2] stratos git commit: Adding changes for group validation

Adding changes for group validation


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

Branch: refs/heads/master
Commit: 656c9825f1d31296e36babbb1511693edd5a90c6
Parents: 1c21daa
Author: Pubudu Gunatilaka <pu...@gmail.com>
Authored: Sun Jun 21 15:53:03 2015 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Mon Jun 22 11:36:45 2015 +0530

----------------------------------------------------------------------
 .../rest/endpoint/api/StratosApiV41Utils.java   | 39 ++++++++++++--------
 1 file changed, 23 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/656c9825/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 05e824a..f644a26 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
@@ -1325,9 +1325,10 @@ public class StratosApiV41Utils {
      * @param tenantDomain  Tenant Domain
      * @throws RestAPIException
      */
-    public static void addApplication(ApplicationBean appDefinition, ConfigurationContext ctxt,
-                                      String userName, String tenantDomain)
-            throws RestAPIException, AutoscalerServiceCartridgeNotFoundExceptionException, AutoscalerServiceCartridgeGroupNotFoundExceptionException {
+    public static void addApplication(ApplicationBean appDefinition, ConfigurationContext ctxt, String userName,
+                                      String tenantDomain) throws RestAPIException,
+            AutoscalerServiceCartridgeNotFoundExceptionException,
+            AutoscalerServiceCartridgeGroupNotFoundExceptionException {
 
         if (StringUtils.isBlank(appDefinition.getApplicationId())) {
             String message = "Please specify the application name";
@@ -1347,7 +1348,7 @@ public class StratosApiV41Utils {
         validateApplication(appDefinition);
 
         // To validate groups have unique alias in the application definition
-        validateGroupAliasesInApplicationDefinition(appDefinition);
+        validateGroupsInApplicationDefinition(appDefinition);
 
 
         ApplicationContext applicationContext = ObjectConverter.convertApplicationDefinitionToStubApplicationContext(
@@ -1532,10 +1533,10 @@ public class StratosApiV41Utils {
      * @param applicationDefinition - the application definition
      * @throws RestAPIException
      */
-    private static void validateGroupAliasesInApplicationDefinition(ApplicationBean applicationDefinition) throws RestAPIException {
+    private static void validateGroupsInApplicationDefinition(ApplicationBean applicationDefinition) throws RestAPIException {
 
         ConcurrentHashMap<String, CartridgeGroupReferenceBean> groupsInApplicationDefinition = new ConcurrentHashMap<String, CartridgeGroupReferenceBean>();
-        boolean groupParentHasDP = false;
+        boolean groupParentHasDeploymentPolicy = false;
 
         if ((applicationDefinition.getComponents().getGroups() != null) &&
                 (!applicationDefinition.getComponents().getGroups().isEmpty())) {
@@ -1551,16 +1552,18 @@ public class StratosApiV41Utils {
                 // Validate top level group deployment policy with cartridges
                 if (group.getCartridges() != null) {
                     if (group.getDeploymentPolicy() != null) {
-                        groupParentHasDP = true;
+                        groupParentHasDeploymentPolicy = true;
+                    } else {
+                        groupParentHasDeploymentPolicy = false;
                     }
-                    validateCartridgesForDeploymentPolicy(group.getCartridges(), groupParentHasDP);
+                    validateCartridgesForDeploymentPolicy(group.getCartridges(), groupParentHasDeploymentPolicy);
                 }
 
                 groupsInApplicationDefinition.put(group.getAlias(), group);
 
                 if (group.getGroups() != null) {
                     //This is to validate the groups aliases recursively
-                    validateGroupsRecursively(groupsInApplicationDefinition, group.getGroups(), groupParentHasDP);
+                    validateGroupsRecursively(groupsInApplicationDefinition, group.getGroups(), groupParentHasDeploymentPolicy);
                 }
             }
         }
@@ -1581,9 +1584,9 @@ public class StratosApiV41Utils {
      * @throws RestAPIException
      */
     private static void validateCartridgesForDeploymentPolicy(List<CartridgeReferenceBean> cartridgeReferenceBeans,
-                                                              boolean hasDP) throws RestAPIException {
+                                                              boolean hasDeploymentPolicy) throws RestAPIException {
 
-        if (hasDP) {
+        if (hasDeploymentPolicy) {
             for (CartridgeReferenceBean cartridge : cartridgeReferenceBeans) {
                 if (cartridge.getSubscribableInfo().getDeploymentPolicy() != null) {
                     String message = "Group deployment policy already exists. Remove deployment policy from " +
@@ -1615,9 +1618,11 @@ public class StratosApiV41Utils {
      */
 
     private static void validateGroupsRecursively(ConcurrentHashMap<String, CartridgeGroupReferenceBean> groupsSet,
-                                                  Collection<CartridgeGroupReferenceBean> groups, boolean hasDP)
+                                                  Collection<CartridgeGroupReferenceBean> groups, boolean hasDeploymentPolicy)
             throws RestAPIException {
 
+        boolean groupHasDeploymentPolicy = false;
+
         for (CartridgeGroupReferenceBean group : groups) {
             if (groupsSet.get(group.getAlias()) != null) {
                 String message = "Cartridge group alias exists more than once: [group-alias] " +
@@ -1626,23 +1631,25 @@ public class StratosApiV41Utils {
             }
 
             if (group.getDeploymentPolicy() != null) {
-                if (hasDP) {
+                if (hasDeploymentPolicy) {
                     String message = "Parent Group has a deployment policy. Remove deployment policy from the" +
                             " group: [group-alias] " + group.getAlias();
                     throw new RestAPIException(message);
                 } else {
-                    hasDP = true;
+                    groupHasDeploymentPolicy = true;
                 }
+            } else {
+                groupHasDeploymentPolicy = hasDeploymentPolicy;
             }
 
             if (group.getCartridges() != null) {
-                validateCartridgesForDeploymentPolicy(group.getCartridges(), hasDP);
+                validateCartridgesForDeploymentPolicy(group.getCartridges(), groupHasDeploymentPolicy);
             }
 
             groupsSet.put(group.getAlias(), group);
 
             if (group.getGroups() != null) {
-                validateGroupsRecursively(groupsSet, group.getGroups(), hasDP);
+                validateGroupsRecursively(groupsSet, group.getGroups(), groupHasDeploymentPolicy);
             }
         }
     }