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/09/16 08:01:19 UTC

git commit: adding validations

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 8526e913e -> e39473dd7


adding validations


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

Branch: refs/heads/4.0.0-grouping
Commit: e39473dd79f048e3f97d10b9295a41f09e5840de
Parents: 8526e91
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Sep 16 11:30:57 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Sep 16 11:30:57 2014 +0530

----------------------------------------------------------------------
 .../parser/DefaultApplicationParser.java        | 10 ++-
 .../impl/CloudControllerServiceImpl.java        |  2 +-
 .../cloud/controller/pojo/GroupDataHolder.java  | 67 --------------------
 .../controller/topology/TopologyBuilder.java    |  7 +-
 .../ApplicationCreatedMessageProcessor.java     |  2 +-
 5 files changed, 16 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/e39473dd/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
index 80cf4ae..8ea89be 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
@@ -226,7 +226,10 @@ public class DefaultApplicationParser implements ApplicationParser {
 
         for (GroupContext groupCtxt : groupCtxts) {
             Group group = getGroup(clusters, groupCtxt, subscribableInformation, definedGroupCtxts);
-            groupNameToGroup.put(group.getName(), group);
+            if(groupNameToGroup.put(group.getName(), group) != null) {
+                // Application Definition has same Group multiple times at the top-level
+                throw new ApplicationDefinitionException("Group [ " + group.getName() + " ] appears twice in the Application Definition's top level");
+            }
         }
 
         //Set<GroupContext> topLevelGroupContexts = getTopLevelGroupContexts(groupNameToGroup);
@@ -429,7 +432,10 @@ public class DefaultApplicationParser implements ApplicationParser {
 
             Cluster cluster = getCluster(subscribableCtxt, subscribableInfoCtxt, cartridge);
             clusters.add(cluster);
-            clusterIdMap.put(subscribableCtxt.getType(), cluster.getClusterId());
+            if (clusterIdMap.put(subscribableCtxt.getType(), cluster.getClusterId()) != null) {
+                // Application Definition has same cartridge multiple times at the top-level
+                throw new ApplicationDefinitionException("Cartridge [ " + subscribableCtxt.getType() + " ] appears twice in the Application Definition's top level");
+            }
         }
 
         return new ClusterDataHolder(clusterIdMap, clusters);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e39473dd/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
index 2a1c52c..34664b0 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/impl/CloudControllerServiceImpl.java
@@ -1403,7 +1403,7 @@ public class CloudControllerServiceImpl implements CloudControllerService {
         ApplicationParser applicationParser = new DefaultApplicationParser();
         ApplicationDataHolder applicationDataHolder = applicationParser.parse(applicationContext);
 
-        TopologyBuilder.handleApplicationDepolyed(applicationDataHolder);
+        TopologyBuilder.handleApplicationDeployed(applicationDataHolder);
     }
 
     private List<ConfigCompositeApplication> restoreConfigCompositeApplication () {

http://git-wip-us.apache.org/repos/asf/stratos/blob/e39473dd/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/GroupDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/GroupDataHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/GroupDataHolder.java
deleted file mode 100644
index 534814f..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/GroupDataHolder.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.cloud.controller.pojo;
-
-import org.apache.stratos.messaging.domain.topology.Group;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class GroupDataHolder {
-
-    // Sub Group Map, key = Group.name
-    private Map<String, Group> groupMap;
-    // Cluster Data Holder
-    private ClusterDataHolder clusterDataHolder;
-    // nested Group Data
-    private GroupDataHolder groupDataHolder;
-
-    public GroupDataHolder () {
-        this.groupMap = new HashMap<String, Group>();
-    }
-
-    public void addGroup (Group group) {
-        groupMap.put(group.getName(), group);
-    }
-
-    public void addGroups (Map<String, Group> groupNameToGroup) {
-        groupMap.putAll(groupNameToGroup);
-    }
-
-    public Map<String, Group> getGroupMap() {
-        return groupMap;
-    }
-
-    public ClusterDataHolder getClusterDataHolder() {
-        return clusterDataHolder;
-    }
-
-    public GroupDataHolder getGroupDataHolder() {
-        return groupDataHolder;
-    }
-
-    public void setGroupDataHolder(GroupDataHolder groupDataHolder) {
-        this.groupDataHolder = groupDataHolder;
-    }
-
-    public void setClusterDataHolder(ClusterDataHolder clusterDataHolder) {
-        this.clusterDataHolder = clusterDataHolder;
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/e39473dd/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
index 4420b0b..2b827be 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/topology/TopologyBuilder.java
@@ -613,12 +613,17 @@ public class TopologyBuilder {
         }
     }
 
-    public static void handleApplicationDepolyed (ApplicationDataHolder applicationDataHolder) {
+    public static void handleApplicationDeployed(ApplicationDataHolder applicationDataHolder) {
 
         Topology topology = TopologyManager.getTopology();
         try {
             TopologyManager.acquireWriteLock();
 
+            if (topology.applicationExists(applicationDataHolder.getApplication().getId())) {
+                log.warn("Application with id [ " + applicationDataHolder.getApplication().getId() + " ] already exists in Topology");
+                return;
+            }
+
             for (Cluster cluster : applicationDataHolder.getClusters()) {
                 String cartridgeType = cluster.getServiceName();
                 topology.getService(cartridgeType).addCluster(cluster);

http://git-wip-us.apache.org/repos/asf/stratos/blob/e39473dd/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java
index 7018077..6f86839 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/message/processor/topology/ApplicationCreatedMessageProcessor.java
@@ -67,7 +67,7 @@ public class ApplicationCreatedMessageProcessor extends MessageProcessor {
 
             // check if an Application with same name exists in topology
             if (topology.applicationExists(appCreatedEvent.getApplication().getId())) {
-                log.error("Application with id [ " + appCreatedEvent.getApplication().getId() + " ] already exists in Topology");
+                log.warn("Application with id [ " + appCreatedEvent.getApplication().getId() + " ] already exists in Topology");
                 return false;
             }