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;