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/10/09 11:46:33 UTC

git commit: bringing back alias based Startup Order conversion

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping a13091a6c -> f11401a34


bringing back alias based Startup Order conversion


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

Branch: refs/heads/4.0.0-grouping
Commit: f11401a342ec74e17fd6dc8dcf3c4d6477e221bf
Parents: a13091a
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Thu Oct 9 15:12:54 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Thu Oct 9 15:16:20 2014 +0530

----------------------------------------------------------------------
 .../grouping/dependency/DependencyBuilder.java  | 73 ++++++++---------
 .../parser/DefaultApplicationParser.java        |  5 +-
 .../application/parser/ParserUtils.java         | 83 ++++++++++----------
 .../cloud/controller/pojo/StartupOrder.java     | 50 ------------
 .../pojo/application/StartupOrderContext.java   | 47 -----------
 .../domain/topology/DependencyOrder.java        | 22 ++----
 .../messaging/domain/topology/StartupOrder.java | 20 +----
 7 files changed, 88 insertions(+), 212 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
index 5a1e4fd..30709e7 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/grouping/dependency/DependencyBuilder.java
@@ -82,8 +82,8 @@ public class DependencyBuilder {
             }
 
             //Parsing the start up order
-            String [] startupOrders = dependencyOrder.getStartupOrders();
-            ApplicationContext foundContext = null; 
+            Set<StartupOrder> startupOrders = dependencyOrder.getStartupOrders();
+            ApplicationContext foundContext;
             if (startupOrders == null) {
             	if (log.isDebugEnabled()) {
                     log.debug("startupOrders is null, returning default dependency tree (empty)");
@@ -91,46 +91,49 @@ public class DependencyBuilder {
             	
             	return dependencyTree;
             }
-            for (String startupOrder : startupOrders) {
-            	String start = dependencyOrder.getStartStartupOrder(startupOrder);
+            for (StartupOrder startupOrder : startupOrders) {
+
                 foundContext = null;
-                
-                if (start != null) {
-                    ApplicationContext applicationContext = ApplicationContextFactory.
-                                    getApplicationContext(start, component,
-                                                            dependencyTree.isKillDependent());
-                    String id = applicationContext.getId();
-
-                    ApplicationContext existingApplicationContext =
-                            dependencyTree.findApplicationContextWithId(id);
-                    if (existingApplicationContext == null) {
-                        if (foundContext != null) {
-                            //appending the start up order to existing group/cluster
-                            foundContext.addApplicationContext(applicationContext);
-                            if (log.isDebugEnabled()) {
-                                log.debug("Found an existing [dependency] " + foundContext.getId() +
-                                        " and adding the [dependency] " + id + " as the child");
+
+                for (String start : startupOrder.getStartList())  {
+
+                    if (start != null) {
+                        ApplicationContext applicationContext = ApplicationContextFactory.
+                                getApplicationContext(start, component, dependencyTree.isKillDependent());
+                        String id = applicationContext.getId(); //TODO change the id
+
+                        ApplicationContext existingApplicationContext =
+                                dependencyTree.findApplicationContextWithId(id);
+                        if (existingApplicationContext == null) {
+                            if (foundContext != null) {
+                                //appending the start up order to existing group/cluster
+                                foundContext.addApplicationContext(applicationContext);
+                                if (log.isDebugEnabled()) {
+                                    log.debug("Found an existing [dependency] " + foundContext.getId() +
+                                            " and adding the [dependency] " + id + " as the child");
+                                }
+                            } else {
+                                //adding list of startup order to the dependency tree
+                                dependencyTree.addApplicationContext(applicationContext);
                             }
                         } else {
-                            //adding list of startup order to the dependency tree
-                            dependencyTree.addApplicationContext(applicationContext);
-                        }
-                    } else {
-                        if (foundContext == null) {
-                            //assigning the found context to the later use.
-                            foundContext = existingApplicationContext;
-                            if (log.isDebugEnabled()) {
-                                log.debug("Found an existing [dependency] " + id + " and setting it " +
-                                        "for the next dependency to follow");
+                            if (foundContext == null) {
+                                //assigning the found context to the later use.
+                                foundContext = existingApplicationContext;
+                                if (log.isDebugEnabled()) {
+                                    log.debug("Found an existing [dependency] " + id + " and setting it " +
+                                            "for the next dependency to follow");
+                                }
+                            } else {
+                                String msg = "Startup order is not consistent. It contains the group/cluster " +
+                                        "which has been used more than one in another startup order";
+                                throw new DependencyBuilderException(msg);
                             }
-                        } else {
-                            String msg = "Startup order is not consistent. It contains the group/cluster " +
-                                    "which has been used more than one in another startup order";
-                            throw new DependencyBuilderException(msg);
-                        }
 
+                        }
                     }
                 }
+
             }
             //TODO need to parser the scalable dependencies
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/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 efeccd7..9d909ca 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
@@ -34,7 +34,6 @@ import org.apache.stratos.cloud.controller.pojo.application.*;
 import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
 import org.apache.stratos.cloud.controller.runtime.FasterLookUpDataHolder;
 import org.apache.stratos.messaging.domain.topology.*;
-import org.apache.stratos.messaging.domain.topology.StartupOrder;
 
 import java.util.*;
 
@@ -274,7 +273,7 @@ public class DefaultApplicationParser implements ApplicationParser {
                     	log.debug("parsing application ... buildCompositeAppStructure: startupOrders != null for app alias: " + 
                     				appCtxt.getAlias() + " #: " + startupOrders.length);
                     }
-                    appDependencyOrder.setStartupOrders(startupOrders);
+                    appDependencyOrder.setStartupOrders(ParserUtils.convert(startupOrders));
                 } else {
                 	if (log.isDebugEnabled()) {
                     	log.debug("parsing application ... buildCompositeAppStructure: startupOrders == null for app alias: " + appCtxt.getAlias());
@@ -401,7 +400,7 @@ public class DefaultApplicationParser implements ApplicationParser {
         // create the Dependency Ordering
         String []  startupOrders = getStartupOrderForGroup(groupCtxt);
         if (startupOrders != null) {
-            dependencyOrder.setStartupOrders(startupOrders);
+            dependencyOrder.setStartupOrders(ParserUtils.convert(startupOrders, groupCtxt));
         }
         dependencyOrder.setKillbehavior(getKillbehaviour(groupCtxt.getName()));
         group.setDependencyOrder(dependencyOrder);

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/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 707fd0a..62a98ab 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
@@ -23,13 +23,11 @@ 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;
-import java.util.Set;
+import java.util.*;
 
 public class ParserUtils {
 
-	/*
-    public static Set<StartupOrder> convert (org.apache.stratos.cloud.controller.pojo.StartupOrder [] startupOrderArr, GroupContext groupContext) {
+    public static Set<StartupOrder> convert (String [] startupOrderArr) {
 
         Set<StartupOrder> startupOrders = new HashSet<StartupOrder>();
 
@@ -37,65 +35,66 @@ public class ParserUtils {
             return startupOrders;
         }
 
+        for (String commaSeparatedStartupOrder : startupOrderArr) {
+            startupOrders.add(new StartupOrder(Arrays.asList(commaSeparatedStartupOrder.split(","))));
+        }
+
+        return startupOrders;
+    }
+
+    public static Set<StartupOrder> convert (String [] startupOrderArr, GroupContext groupContext) {
+
+        Set<StartupOrder> startupOrders = new HashSet<StartupOrder>();
 
-        for (int i = 0; i < startupOrderArr.length ; i++) {
+        if (startupOrderArr == null) {
+            return startupOrders;
+        }
+
+
+        for (String commaSeparatedStartupOrder : startupOrderArr) {
             // 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);
-                }
+            List<String> components = Arrays.asList(commaSeparatedStartupOrder.split(","));
+            startupOrders.add(getStartupOrder(components, groupContext));
+        }
 
-                startAlias = "cartridge.".concat(startAlias);
+        return startupOrders;
+    }
 
-            } 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);
-                }
+    private static StartupOrder getStartupOrder (List<String> components, GroupContext groupContext) {
 
-                startAlias = "group.".concat(startAlias);
+        List<String> aliasBasedComponents = new ArrayList<String>();
 
-            } else {
-                throw new RuntimeException("Incorrect Startup Order specified");
-            }
+        for (String component : components) {
+            component = component.trim();
 
-            // after
-            String afterAlias;
-            if (startupOrderArr[i].getAfter().startsWith("cartridge.")) {
-                String cartridgeType = startupOrderArr[i].getAfter().substring(10);
-                afterAlias = getAliasForServiceType(cartridgeType, groupContext);
-                if (afterAlias == null) {
+            String aliasBasedComponent;
+            if (component.startsWith("cartridge.")) {
+                String cartridgeType = component.substring(10);
+                aliasBasedComponent = getAliasForServiceType(cartridgeType, groupContext);
+                if (aliasBasedComponent == null) {
                     throw new RuntimeException("Unable convert Startup Order to alias-based; " +
                             "cannot find the matching alias for Service type " + cartridgeType);
                 }
 
-                afterAlias = "cartridge.".concat(afterAlias);
+                aliasBasedComponent = "cartridge.".concat(aliasBasedComponent);
 
-            } else if (startupOrderArr[i].getAfter().startsWith("group."))  {
-                String groupName = startupOrderArr[i].getAfter().substring(6);
-                afterAlias = getAliasForGroupName(groupName, groupContext);
-                if (afterAlias == null) {
+            } else if (component.startsWith("group.")) {
+                String groupName = component.substring(6);
+                aliasBasedComponent = getAliasForGroupName(groupName, groupContext);
+                if (aliasBasedComponent == null) {
                     throw new RuntimeException("Unable convert Startup Order to alias-based; " +
                             "cannot find the matching alias for Group name " + groupName);
                 }
 
-                afterAlias = "group.".concat(afterAlias);
+                aliasBasedComponent = "group.".concat(aliasBasedComponent);
 
             } else {
                 throw new RuntimeException("Incorrect Startup Order specified");
             }
-
-            startupOrders.add(new StartupOrder(startAlias, afterAlias));
+            aliasBasedComponents.add(aliasBasedComponent);
         }
 
-        return startupOrders;
+        return new StartupOrder(aliasBasedComponents);
     }
 
     private static String getAliasForGroupName (String groupName, GroupContext groupContext) {
@@ -109,7 +108,7 @@ public class ParserUtils {
         return null;
     }
 
-*/
+
     private static String getAliasForServiceType (String serviceType, GroupContext groupContext) {
 
         for (SubscribableContext subCtxt : groupContext.getSubscribableContexts()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/StartupOrder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/StartupOrder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/StartupOrder.java
deleted file mode 100644
index ed9626b..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/StartupOrder.java
+++ /dev/null
@@ -1,50 +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 java.io.Serializable;
-
-public class StartupOrder implements Serializable {
-
-	private static final long serialVersionUID = 280860334002791396L;
-	
-	/*
-
-	private String start;
-
-    private String after;
-
-    public String getStart() {
-        return start;
-    }
-
-    public void setStart(String start) {
-        this.start = start;
-    }
-
-    public String getAfter() {
-        return after;
-    }
-
-    public void setAfter(String after) {
-        this.after = after;
-    }
-    */
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/application/StartupOrderContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/application/StartupOrderContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/application/StartupOrderContext.java
deleted file mode 100644
index 3c2a2da..0000000
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/pojo/application/StartupOrderContext.java
+++ /dev/null
@@ -1,47 +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.application;
-
-public class StartupOrderContext {
-
-    private String start;
-
-    private String after;
-
-    public StartupOrderContext () {
-
-    }
-
-    public String getStart() {
-        return start;
-    }
-
-    public void setStart(String start) {
-        this.start = start;
-    }
-
-    public String getAfter() {
-        return after;
-    }
-
-    public void setAfter(String after) {
-        this.after = after;
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
index ff08a4c..1d8699f 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/DependencyOrder.java
@@ -21,21 +21,19 @@ package org.apache.stratos.messaging.domain.topology;
 
 import java.io.Serializable;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 public class DependencyOrder implements Serializable {
 
-    /**
-	 * 
-	 */
 	private static final long serialVersionUID = -599600831844477527L;
 
-	private String [] startupOrders;
+	private Set<StartupOrder> startupOrders;
 
     private String killbehavior;
 
     public DependencyOrder () {
-        this.setStartupOrders(null);
+
     }
 
     public String getKillbehavior() {
@@ -46,21 +44,11 @@ public class DependencyOrder implements Serializable {
         this.killbehavior = killbehavior;
     }
 
-	public String [] getStartupOrders() {
+	public Set<StartupOrder> getStartupOrders() {
 		return startupOrders;
 	}
 
-	public void setStartupOrders(String [] startupOrders) {
+	public void setStartupOrders(Set<StartupOrder> startupOrders) {
 		this.startupOrders = startupOrders;
 	}
-	
-	public String getStartStartupOrder(String startupOrder) {
-		String [] splitStartupOrder = startupOrder.split(",");
-		return splitStartupOrder[0];
-	}
-	
-	public String getAfterStartupOrder(String startupOrder) {
-		String [] splitStartupOrder = startupOrder.split(",");
-		return splitStartupOrder[1];
-	}
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/f11401a3/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java
index 6263070..4f55b6c 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/StartupOrder.java
@@ -23,26 +23,11 @@ import java.io.Serializable;
 import java.util.List;
 
 public class StartupOrder implements Serializable {
-	
-	/*
-
-    private String start;
-
-    private String after;
 
     private List<String> startList;
 
-    public StartupOrder (String start, String after) {
-        this.start = start;
-        this.after = after;
-    }
-
-    public String getStart() {
-        return start;
-    }
-
-    public String getAfter() {
-        return after;
+    public StartupOrder (List<String> startList) {
+        this.startList = startList;
     }
 
     public List<String> getStartList() {
@@ -52,5 +37,4 @@ public class StartupOrder implements Serializable {
     public void setStartList(List<String> startList) {
         this.startList = startList;
     }
-    */
 }