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/17 11:49:27 UTC

[3/6] git commit: Subscription structure initial impl.

Subscription structure initial impl.


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

Branch: refs/heads/4.0.0-grouping
Commit: a8182aca92707eab3e185ba05e8b861869640233
Parents: cf72ef4
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Tue Jul 15 13:06:22 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Tue Jul 15 13:06:22 2014 +0530

----------------------------------------------------------------------
 .../CompositeApplicationManager.java            | 83 +++++++++++++++++---
 .../subscription/CompositeAppSubscription.java  | 39 ++++++---
 .../manager/subscription/GroupSubscription.java | 64 +++++++++++++++
 3 files changed, 168 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/a8182aca/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
index 02893e8..0ca6ebc 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
@@ -1,8 +1,6 @@
 package org.apache.stratos.manager.composite.application;
 
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.*;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -17,6 +15,8 @@ import org.apache.stratos.manager.exception.*;
 import org.apache.stratos.manager.manager.CartridgeSubscriptionManager;
 import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
 import org.apache.stratos.manager.subscription.CartridgeSubscription;
+import org.apache.stratos.manager.subscription.CompositeAppSubscription;
+import org.apache.stratos.manager.subscription.GroupSubscription;
 import org.apache.stratos.manager.subscription.SubscriptionData;
 import org.apache.stratos.messaging.domain.topology.ConfigCompositeApplication;
 
@@ -37,22 +37,87 @@ public class CompositeApplicationManager {
         
         //DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
         //mgr.persistCompositeApplication(compositeAppDefinition);
-        Set<CartridgeSubscription> cartridgeSubscriptions = new HashSet<CartridgeSubscription>();
+
+        // create the CompositeAppSubscription
+        CompositeAppSubscription compositeAppSubscription = new CompositeAppSubscription(compositeAppContext.getAppId());
+
+        // keep track of all CartridgeSubscriptions, against the alias
+        Map<String, CartridgeSubscription> aliasToCartridgeSubscription = new HashMap<String, CartridgeSubscription>();
+
+        // Keep track of all Group Subscriptions
+        Set<GroupSubscription> groupSubscriptions = new HashSet<GroupSubscription>();
 
         // traverse through the Composite App Structure and create Cartridge Subscriptions
         if(compositeAppContext.getSubscribableContexts() != null) {
-            // Subscription relevant to top level Subscribables
-            cartridgeSubscriptions.addAll(getCartridgeSybscriptionsForSubscribables(compositeAppContext.getSubscribableContexts(),
-                    tenantId, tenantDomain, tenantAdminUsername));
+            // Subscriptions relevant to top level Subscribables
+
+            for (CartridgeSubscription cartridgeSubscription : getCartridgeSybscriptionsForSubscribables(compositeAppContext.getSubscribableContexts(),
+                    tenantId, tenantDomain, tenantAdminUsername)) {
+                aliasToCartridgeSubscription.put(cartridgeSubscription.getAlias(), cartridgeSubscription);
+            }
+            // get top level cartridge aliases to add to Composite App Subscription
+            compositeAppSubscription.addCartridgeSubscriptionAliases(getCartrigdeSubscriptionAliases(compositeAppContext.getSubscribableContexts()));
         }
 
         if (compositeAppContext.getGroupContexts() != null) {
             // Subscriptions relevant to Groups
-            cartridgeSubscriptions.addAll(getCartridgeSubscriptionForGroups(compositeAppContext.getGroupContexts(), tenantId,
-                    tenantDomain, tenantAdminUsername));
+
+            for (CartridgeSubscription cartridgeSubscription : getCartridgeSubscriptionForGroups(compositeAppContext.getGroupContexts(), tenantId,
+                    tenantDomain, tenantAdminUsername)) {
+                aliasToCartridgeSubscription.put(cartridgeSubscription.getAlias(), cartridgeSubscription);
+            }
+
+            // set top level group aliases to Composite App Subscription
+            compositeAppSubscription.addGroupSubscriptionAliases(getGroupSubscriptionAliases(compositeAppContext.getGroupContexts()));
+
+            groupSubscriptions.addAll(getGroupSubscriptions(compositeAppContext.getGroupContexts()));
         }
 	}
 
+    private Set<String> getCartrigdeSubscriptionAliases (Set<SubscribableContext> subscribableContexts) throws CompositeApplicationException {
+
+        Set<String> cartridgeSubscriptionAliases = new HashSet<String>();
+        for (SubscribableContext subscribableContext : subscribableContexts) {
+            cartridgeSubscriptionAliases.add(subscribableContext.getAlias());
+        }
+
+        return cartridgeSubscriptionAliases;
+    }
+
+    private Set<GroupSubscription> getGroupSubscriptions (Set<GroupContext> groupContexts) throws CompositeApplicationException {
+
+        Set<GroupSubscription> groupSubscriptions = new HashSet<GroupSubscription>();
+        for (GroupContext groupContext : groupContexts) {
+            // create Group Subscriptions for this Group
+            GroupSubscription groupSubscription = new GroupSubscription(groupContext.getAlias());
+            if (groupContext.getSubscribableContexts() != null) {
+                groupSubscription.addCartridgeSubscriptionAliases(getCartrigdeSubscriptionAliases(groupContext.getSubscribableContexts()));
+            }
+
+            // nested Group
+            if (groupContext.getGroupContexts() != null) {
+                groupSubscription.addGroupSubscriptionAliases(getGroupSubscriptionAliases(groupContext.getGroupContexts()));
+                // need to recurse to get other nested groups, if any
+                getGroupSubscriptions(groupContext.getGroupContexts());
+            }
+
+            groupSubscriptions.add(groupSubscription);
+        }
+
+        return groupSubscriptions;
+    }
+
+    private Set<String> getGroupSubscriptionAliases (Set<GroupContext> groupContexts) throws CompositeApplicationException {
+
+        Set<String> topLevelGroupAliases = new HashSet<String>();
+
+        for (GroupContext topLevelGroupCtxt : groupContexts) {
+            topLevelGroupAliases.add(topLevelGroupCtxt.getAlias());
+        }
+
+        return topLevelGroupAliases;
+    }
+
     private Set<CartridgeSubscription> getCartridgeSubscriptionForGroups (Set<GroupContext> groupContexts,
                                                                           int tenantId, String tenantDomain,
                                                                           String tenantAdminUsername)

http://git-wip-us.apache.org/repos/asf/stratos/blob/a8182aca/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
index d60e939..86fb0cd 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/CompositeAppSubscription.java
@@ -21,27 +21,48 @@ package org.apache.stratos.manager.subscription;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.jboss.util.propertyeditor.StringArrayEditor;
 
 import java.io.Serializable;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 public class CompositeAppSubscription implements Serializable {
 
     private static Log log = LogFactory.getLog(CompositeAppSubscription.class);
 
-    private Map<String, String> compositeAppToCartridgeSubcription;
+    private String appId;
 
-    public CompositeAppSubscription () {
-        compositeAppToCartridgeSubcription = new HashMap<String, String>();
+    private Set<String> cartridgeSubscriptionAliases;
+
+    private Set<String> groupSubscriptionAliases;
+
+    public CompositeAppSubscription (String appId) {
+
+        this.appId = appId;
+        cartridgeSubscriptionAliases = new HashSet<String>();
+        groupSubscriptionAliases = new HashSet<String>();
+    }
+
+    public Set<String> getGroupSubscriptionAliases() {
+        return groupSubscriptionAliases;
     }
 
-    public void addCartridgeSubscription (String compositeAppAlias, String cartridgeSubscriptionAlias) {
+    public void addCartridgeSubscriptionAlias (String cartridgeSubscriptionAlias) {
+        cartridgeSubscriptionAliases.add(cartridgeSubscriptionAlias);
+    }
+
+    public void addCartridgeSubscriptionAliases (Set<String> cartridgeSubscriptionAliases) {
+        cartridgeSubscriptionAliases.addAll(cartridgeSubscriptionAliases);
+    }
+
+    public void addGroupSubscriptionAlias (String groupSubscriptionAlias) {
+        groupSubscriptionAliases.add(groupSubscriptionAlias);
+    }
 
-        compositeAppToCartridgeSubcription.put(compositeAppAlias, cartridgeSubscriptionAlias);
-        if (log.isDebugEnabled()) {
-            log.debug("Cartridge Subscription alias [ "+ cartridgeSubscriptionAlias +" ] stored against Composite Application alias [ "
-                    + compositeAppAlias + " ]");
-        }
+    public void addGroupSubscriptionAliases (Set<String> groupSubscriptionAliases) {
+        cartridgeSubscriptionAliases.addAll(groupSubscriptionAliases);
     }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/a8182aca/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/GroupSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/GroupSubscription.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/GroupSubscription.java
new file mode 100644
index 0000000..31fcb73
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/GroupSubscription.java
@@ -0,0 +1,64 @@
+/*
+ * 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.manager.subscription;
+
+import java.io.Serializable;
+import java.util.HashSet;
+import java.util.Set;
+
+public class GroupSubscription implements Serializable {
+
+    private String groupAlias;
+
+    private Set<String> cartridgeSubscriptionAliases;
+
+    private Set<String> groupSubscriptionAliases;
+
+    public GroupSubscription (String groupAlias) {
+
+        this.groupAlias = groupAlias;
+        cartridgeSubscriptionAliases = new HashSet<String>();
+        groupSubscriptionAliases = new HashSet<String>();
+    }
+
+    public Set<String> getGroupSubscriptionAliases() {
+        return groupSubscriptionAliases;
+    }
+
+    public void addCartridgeSubscriptionAlias (String cartridgeSubscriptionAlias) {
+        cartridgeSubscriptionAliases.add(cartridgeSubscriptionAlias);
+    }
+
+    public void addGroupSubscriptionAlias (String groupSubscriptionAlias) {
+        groupSubscriptionAliases.add(groupSubscriptionAlias);
+    }
+
+    public void addCartridgeSubscriptionAliases (Set<String> cartridgeSubscriptionAliases) {
+        cartridgeSubscriptionAliases.addAll(cartridgeSubscriptionAliases);
+    }
+
+    public void addGroupSubscriptionAliases (Set<String> groupSubscriptionAliases) {
+        groupSubscriptionAliases.addAll(groupSubscriptionAliases);
+    }
+
+    public String getGroupAlias() {
+        return groupAlias;
+    }
+}