You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/07/20 20:40:02 UTC

git commit: adding a validation in top level Subscribables

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping b097cbc48 -> f2e841002


adding a validation in top level Subscribables


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

Branch: refs/heads/4.0.0-grouping
Commit: f2e841002bee7ffafe0b1fcc51c9bbbd04a89c12
Parents: b097cbc
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Mon Jul 21 00:09:34 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Jul 21 00:09:34 2014 +0530

----------------------------------------------------------------------
 .../DefaultCompositeApplicationParser.java      | 49 ++++++++++++++++++--
 .../application/parser/ParserUtils.java         |  4 --
 2 files changed, 46 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f2e84100/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
index ef6814b..c8b6998 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
@@ -19,8 +19,11 @@
 
 package org.apache.stratos.manager.composite.application.parser;
 
+import org.apache.axis2.AxisFault;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.cloud.controller.stub.CloudControllerServiceUnregisteredCartridgeExceptionException;
+import org.apache.stratos.manager.client.CloudControllerServiceClient;
 import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
 import org.apache.stratos.manager.composite.application.beans.GroupDefinition;
 import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition;
@@ -36,6 +39,7 @@ import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
 import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition;
 import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
 
+import java.rmi.RemoteException;
 import java.util.*;
 
 public class DefaultCompositeApplicationParser implements CompositeApplicationParser {
@@ -58,7 +62,7 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
         }
 
         if (compositeAppDefinition == null) {
-            throw new CompositeApplicationDefinitionException("Invlaid Composite Application Defintion");
+            throw new CompositeApplicationDefinitionException("Invalid Composite Application Definition");
         }
 
         if (compositeAppDefinition.getAlias() == null || compositeAppDefinition.getAlias().isEmpty()) {
@@ -91,6 +95,10 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
             log.debug(" ]");
         }
 
+        if (subscribablesInfo == null) {
+            throw new CompositeApplicationDefinitionException("Invalid Composite Application Definition, no Subscribable Information specified");
+        }
+
         return buildCompositeAppStructure (compositeAppDefinition, definedGroups, subscribablesInfo);
     }
 
@@ -263,8 +271,9 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
             GroupContext parentGroupCtxt = parentIterator.next();
             while (nestedIterator.hasNext()) {
                 GroupContext nestedGroupCtxt = nestedIterator.next();
-                if (parentGroupCtxt.getName().equals(nestedGroupCtxt.getName()) &&
-                        parentGroupCtxt.getAlias().equals(nestedGroupCtxt.getAlias())) {
+                // if there is an exactly similar nested Group Context and a top level Group Context
+                // it implies that they are duplicates. Should be removed from top level.
+                if (parentGroupCtxt.equals(nestedGroupCtxt)) {
                     parentIterator.remove();
                 }
             }
@@ -387,10 +396,44 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
                         + subscribableDefinition.getAlias());
             }
 
+            // check if Cartridge Type is valid
+            if (subscribableDefinition.getType() == null || subscribableDefinition.getType().isEmpty()) {
+                throw new CompositeApplicationDefinitionException ("Invalid Cartridge Type specified : [ "
+                        + subscribableDefinition.getType() + " ]");
+            }
+
+            // check if a cartridge with relevant type is already deployed. else, can't continue
+            if (!isCartrigdeDeployed(subscribableDefinition.getType())) {
+                throw new CompositeApplicationDefinitionException("No deployed Cartridge found with type [ " + subscribableDefinition.getType() +
+                        " ] for Composite Application");
+            }
+
             subscribableContexts.add(ParserUtils.convert(subscribableDefinition, subscribableInfo));
         }
 
         return subscribableContexts;
     }
 
+    private boolean isCartrigdeDeployed (String cartridgeType) throws CompositeApplicationDefinitionException {
+
+        CloudControllerServiceClient ccServiceClient;
+
+        try {
+            ccServiceClient = CloudControllerServiceClient.getServiceClient();
+
+        } catch (AxisFault axisFault) {
+            throw new CompositeApplicationDefinitionException(axisFault);
+        }
+
+        try {
+            return ccServiceClient.getCartridgeInfo(cartridgeType) != null;
+
+        } catch (RemoteException e) {
+            throw new CompositeApplicationDefinitionException(e);
+
+        } catch (CloudControllerServiceUnregisteredCartridgeExceptionException e) {
+            throw new CompositeApplicationDefinitionException(e);
+        }
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/f2e84100/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
index be9e703..6b4b883 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/ParserUtils.java
@@ -19,16 +19,12 @@
 
 package org.apache.stratos.manager.composite.application.parser;
 
-import org.apache.stratos.manager.composite.application.beans.GroupDefinition;
 import org.apache.stratos.manager.composite.application.beans.SubscribableDefinition;
 import org.apache.stratos.manager.composite.application.beans.SubscribableInfo;
-import org.apache.stratos.manager.composite.application.structure.GroupContext;
 import org.apache.stratos.manager.composite.application.structure.StartupOrder;
 import org.apache.stratos.manager.composite.application.structure.SubscribableContext;
-import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
 import org.apache.stratos.manager.grouping.definitions.StartupOrderDefinition;
 
-import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;