Repository: stratos Updated Branches: refs/heads/4.0.0-grouping ae08052c9 -> 2ca08d461
adding a method to get Group by alias in an Application recursively Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2ca08d46 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2ca08d46 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2ca08d46 Branch: refs/heads/4.0.0-grouping Commit: 2ca08d46112bf311dfb6bb61b91dee72e530c44f Parents: ae08052 Author: Isuru Haththotuwa <[email protected]> Authored: Wed Sep 17 14:50:44 2014 +0530 Committer: Isuru Haththotuwa <[email protected]> Committed: Wed Sep 17 14:50:44 2014 +0530 ---------------------------------------------------------------------- .../messaging/domain/topology/Application.java | 23 ++++++++++++++++++++ .../messaging/domain/topology/Group.java | 23 ++++++++++++++++++++ .../domain/topology/ParentBehavior.java | 2 ++ 3 files changed, 48 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/2ca08d46/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 1af8e3e..035b52a 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 @@ -65,6 +65,29 @@ public class Application implements ParentBehavior { } @Override + public Group getGroupRecursively(String groupAlias) { + + return travereAndCheckRecursively(groupMap.values(), groupAlias); + } + + private Group travereAndCheckRecursively (Collection<Group> groups, String groupAlias) { + + for (Group group : groups) { + // check if alias is equal, if so, return + if (groupAlias.equals(group.getAlias())) { + return group; + } else { + // check if this Group has nested sub Groups. If so, traverse them as well + if (group.getGroups() != null) { + return travereAndCheckRecursively(group.getGroups(), groupAlias); + } + } + } + + return null; + } + + @Override public Collection<Group> getGroups() { return groupMap.values(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/2ca08d46/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java index 1d5244e..8640aca 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/Group.java @@ -67,6 +67,29 @@ public class Group implements ParentBehavior { } @Override + public Group getGroupRecursively(String groupAlias) { + + return travereAndCheckRecursively(groupMap.values(), groupAlias); + } + + private Group travereAndCheckRecursively (Collection<Group> groups, String groupAlias) { + + for (Group group : groups) { + // check if alias is equal, if so, return + if (groupAlias.equals(group.getAlias())) { + return group; + } else { + // check if this Group has nested sub Groups. If so, traverse them as well + if (group.getGroups() != null) { + return travereAndCheckRecursively(group.getGroups(), groupAlias); + } + } + } + + return null; + } + + @Override public Collection<Group> getGroups() { return groupMap.values(); } http://git-wip-us.apache.org/repos/asf/stratos/blob/2ca08d46/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java index 4daaa27..99a626b 100644 --- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java +++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/topology/ParentBehavior.java @@ -31,6 +31,8 @@ public interface ParentBehavior extends Serializable { public Group getGroup (String groupName); + public Group getGroupRecursively (String groupAlias); + public Collection<Group> getGroups (); public void setDependencyOrder (DependencyOrder dependencyOrder);
