Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 07eeac30a -> 0626aefea


changing the Startup Order to be based on aliases in Groups


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

Branch: refs/heads/4.0.0-grouping
Commit: b3ac27364fdb8e31baa00e5c32830dda17afaf04
Parents: 5aac10e
Author: Isuru Haththotuwa <[email protected]>
Authored: Thu Oct 2 17:46:01 2014 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Thu Oct 2 17:46:01 2014 +0530

----------------------------------------------------------------------
 .../parser/DefaultApplicationParser.java        | 31 ++------
 .../application/parser/ParserUtils.java         | 82 +++++++++++++++++++-
 .../messaging/domain/topology/Application.java  |  4 +-
 3 files changed, 89 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/b3ac2736/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 16c66a5..27c4126 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
@@ -250,17 +250,6 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         log.info("Application with id " + appCtxt.getApplicationId() + " 
parsed successfully");
 
         return application;
-
-        //ApplicationDataHolder applicationDataHolder = new 
ApplicationDataHolder();
-        //assert clusterDataHolder != null;
-        
//applicationDataHolder.setClusters(clusterDataHolder.getApplicationClusterContexts());
-        
//applicationDataHolder.setPayloadDataHolders(clusterDataHolder.getPayloadDataHolders());
-        //applicationDataHolder.setApplication(application);
-
-        // persist the information in FasterLookUpDataHolder
-        //persist(dataHolder);
-
-        //return applicationDataHolder;
     }
 
     private Map<String, Group> parseGroups (String appId, int tenantId, String 
key, List<GroupContext> groupCtxts,
@@ -333,7 +322,7 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         group.setDeploymentPolicy(groupCtxt.getDeploymentPolicy());
         DependencyOrder dependencyOrder = new DependencyOrder();
         // create the Dependency Ordering
-        Set<StartupOrder>  startupOrders = 
getStartupOrderForGroup(groupCtxt.getName());
+        Set<StartupOrder>  startupOrders = getStartupOrderForGroup(groupCtxt);
         if (startupOrders != null) {
             dependencyOrder.setStartupOrders(startupOrders);
         }
@@ -347,14 +336,6 @@ public class DefaultApplicationParser implements 
ApplicationParser {
             clusterDataMap = parseLeafLevelSubscriptions(appId, tenantId, key, 
groupCtxt.getName(),
                     Arrays.asList(groupCtxt.getSubscribableContexts()), 
subscribableInfoCtxts);
             group.setClusterData(clusterDataMap);
-            
//clusters.addAll(clusterDataHolderOfGroup.getApplicationClusterContexts());
-//            if (clusterDataHolder == null) {
-//                clusterDataHolder = clusterDataHolderOfGroup;
-//            } else {
-//                
clusterDataHolder.getApplicationClusterContexts().addAll(clusterDataHolderOfGroup.getApplicationClusterContexts());
-//                
clusterDataHolder.getClusterIdMap().putAll(clusterDataHolderOfGroup.getClusterIdMap());
-//                
//clusterDataHolder.getPayloadDataHolders().addAll(clusterDataHolderOfGroup.getPayloadDataHolders());
-//            }
         }
 
         // get nested groups
@@ -376,18 +357,20 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         return group;
     }
 
-    private Set<StartupOrder> getStartupOrderForGroup(String serviceGroupName) 
throws ApplicationDefinitionException {
+    private Set<StartupOrder> getStartupOrderForGroup(GroupContext 
groupContext) throws ApplicationDefinitionException {
 
-        ServiceGroup serviceGroup = 
FasterLookUpDataHolder.getInstance().getServiceGroup(serviceGroupName);
+        ServiceGroup serviceGroup = 
FasterLookUpDataHolder.getInstance().getServiceGroup(groupContext.getName());
 
         if (serviceGroup == null) {
-            handleError("Service Group Definition not found for name " + 
serviceGroupName);
+            handleError("Service Group Definition not found for name " + 
groupContext.getName());
         }
 
         assert serviceGroup != null;
         if (serviceGroup.getDependencies() != null) {
             if (serviceGroup.getDependencies().getStartupOrder() != null) {
-                return 
ParserUtils.convert(serviceGroup.getDependencies().getStartupOrder());
+
+                // convert to Startup Order with aliases
+                return 
ParserUtils.convert(serviceGroup.getDependencies().getStartupOrder(), 
groupContext);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/b3ac2736/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
index 7ae9010..f47970c 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
@@ -19,6 +19,8 @@
 
 package org.apache.stratos.cloud.controller.application.parser;
 
+import org.apache.stratos.cloud.controller.pojo.application.GroupContext;
+import 
org.apache.stratos.cloud.controller.pojo.application.SubscribableContext;
 import org.apache.stratos.messaging.domain.topology.StartupOrder;
 
 import java.util.HashSet;
@@ -26,7 +28,7 @@ import java.util.Set;
 
 public class ParserUtils {
 
-    public static Set<StartupOrder> convert 
(org.apache.stratos.cloud.controller.pojo.StartupOrder [] startupOrderArr) {
+    public static Set<StartupOrder> convert 
(org.apache.stratos.cloud.controller.pojo.StartupOrder [] startupOrderArr, 
GroupContext groupContext) {
 
         Set<StartupOrder> startupOrders = new HashSet<StartupOrder>();
 
@@ -34,10 +36,86 @@ public class ParserUtils {
             return startupOrders;
         }
 
+
         for (int i = 0; i < startupOrderArr.length ; i++) {
-            startupOrders.add(new StartupOrder(startupOrderArr[i].getStart(), 
startupOrderArr[i].getAfter()));
+            // convert all Startup Orders to aliases-based
+            // start
+            String startAlias;
+            if (startupOrderArr[i].getStart().startsWith("cartridge.")) {
+                String cartridgeType = 
startupOrderArr[i].getStart().substring(10);
+                startAlias = getAliasForServiceType(cartridgeType, 
groupContext);
+                if (startAlias == null) {
+                    throw new RuntimeException("Unable convert Startup Order 
to alias-based; " +
+                            "cannot find the matching alias for Service type " 
+ cartridgeType);
+                }
+
+                startAlias = "cartridge.".concat(startAlias);
+
+            } else if (startupOrderArr[i].getStart().startsWith("group."))  {
+                String groupName = startupOrderArr[i].getStart().substring(6);
+                startAlias = getAliasForGroupName(groupName, groupContext);
+                if (startAlias == null) {
+                    throw new RuntimeException("Unable convert Startup Order 
to alias-based; " +
+                            "cannot find the matching alias for Group name " + 
groupName);
+                }
+
+                startAlias = "group.".concat(startAlias);
+
+            } else {
+                throw new RuntimeException("Incorrect Startup Order 
specified");
+            }
+
+            // after
+            String afterAlias;
+            if (startupOrderArr[i].getAfter().startsWith("cartridge.")) {
+                String cartridgeType = 
startupOrderArr[i].getAfter().substring(10);
+                afterAlias = getAliasForServiceType(cartridgeType, 
groupContext);
+                if (afterAlias == null) {
+                    throw new RuntimeException("Unable convert Startup Order 
to alias-based; " +
+                            "cannot find the matching alias for Service type " 
+ cartridgeType);
+                }
+
+                afterAlias = "cartridge.".concat(afterAlias);
+
+            } else if (startupOrderArr[i].getAfter().startsWith("group."))  {
+                String groupName = startupOrderArr[i].getAfter().substring(6);
+                afterAlias = getAliasForGroupName(groupName, groupContext);
+                if (afterAlias == null) {
+                    throw new RuntimeException("Unable convert Startup Order 
to alias-based; " +
+                            "cannot find the matching alias for Group name " + 
groupName);
+                }
+
+                afterAlias = "group.".concat(afterAlias);
+
+            } else {
+                throw new RuntimeException("Incorrect Startup Order 
specified");
+            }
+
+            startupOrders.add(new StartupOrder(startAlias, afterAlias));
         }
 
         return startupOrders;
     }
+
+    private static String getAliasForGroupName (String groupName, GroupContext 
groupContext) {
+
+        for (GroupContext groupCtxt : groupContext.getGroupContexts()) {
+            if (groupName.equals(groupCtxt.getName())) {
+                return groupCtxt.getAlias();
+            }
+        }
+
+        return null;
+    }
+
+    private static String getAliasForServiceType (String serviceType, 
GroupContext groupContext) {
+
+        for (SubscribableContext subCtxt : 
groupContext.getSubscribableContexts()) {
+            if (serviceType.equals(subCtxt.getType())) {
+                return subCtxt.getAlias();
+            }
+        }
+
+        return null;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/b3ac2736/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
index ec9c1fd..a2e5732 100644
--- 
a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
+++ 
b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Application.java
@@ -59,8 +59,8 @@ public class Application implements ParentBehavior {
     }
 
     @Override
-    public void setGroups(Map<String, Group> groupNameToGroup) {
-        aliasToGroupMap.putAll(groupNameToGroup);
+    public void setGroups(Map<String, Group> aliasToGroup) {
+        aliasToGroupMap.putAll(aliasToGroup);
     }
 
     @Override

Reply via email to