You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by me...@apache.org on 2014/09/18 03:46:48 UTC

git commit: Create and Persist Composite Application Subscriptions in SM from the Topology after the ApplicationCreatedEvent

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 4b9832870 -> 04fa25e6e


Create and Persist Composite Application Subscriptions in SM from the Topology after the ApplicationCreatedEvent


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

Branch: refs/heads/4.0.0-grouping
Commit: 04fa25e6e8d12f8fd63fdd1c861311917c4aa584
Parents: 4b98328
Author: Martin Eppel <me...@cisco..com>
Authored: Wed Sep 17 18:45:23 2014 -0700
Committer: Martin Eppel <me...@cisco..com>
Committed: Wed Sep 17 18:45:23 2014 -0700

----------------------------------------------------------------------
 .../manager/CartridgeSubscriptionManager.java   | 22 ++++++++---
 .../StratosManagerTopologyEventReceiver.java    | 39 ++++++++++++++++++++
 2 files changed, 56 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/04fa25e6/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
index bdf5b37..11297d1 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@ -38,10 +38,6 @@ import org.apache.stratos.manager.repository.Repository;
 import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
 import org.apache.stratos.manager.subscriber.Subscriber;
 import org.apache.stratos.manager.subscription.*;
-import org.apache.stratos.manager.subscription.CartridgeSubscription;
-import org.apache.stratos.manager.subscription.PersistenceContext;
-import org.apache.stratos.manager.subscription.SubscriptionData;
-import org.apache.stratos.manager.subscription.SubscriptionDomain;
 import org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory;
 import org.apache.stratos.manager.subscription.tenancy.SubscriptionMultiTenantBehaviour;
 import org.apache.stratos.manager.subscription.tenancy.SubscriptionSingleTenantBehaviour;
@@ -95,6 +91,10 @@ public class CartridgeSubscriptionManager {
 
     public CompositeAppSubscription createCompositeAppSubscription (String appId, int tenantId)  throws CompositeAppSubscriptionException {
 
+    	if (log.isDebugEnabled()) {
+            log.debug("createCompositeAppSubscription for appId: " + appId + " and tenantId: " + tenantId);
+        }
+    	
         DataInsertionAndRetrievalManager dataInsertionAndRetrievalMgr = new DataInsertionAndRetrievalManager();
         CompositeAppSubscription compositeAppSubscription;
 
@@ -102,12 +102,24 @@ public class CartridgeSubscriptionManager {
             compositeAppSubscription = dataInsertionAndRetrievalMgr.getCompositeAppSubscription(tenantId, appId);
 
         } catch (PersistenceManagerException e) {
+            log.error("failed to createCompositeAppSubscription for appId: " + appId + " and tenantId: " + tenantId + " e:" + e);
             throw new CompositeAppSubscriptionException(e);
         }
 
         if (compositeAppSubscription != null) {
             // Composite App Subscription already exists with same app id
-            throw new CompositeAppSubscriptionException("Composite App Subscription already exists with Id [ " +  appId + " ]");
+           log.error("app Id already exists, failed to createCompositeAppSubscription for appId: " + appId + " and tenantId: " + tenantId);
+           throw new CompositeAppSubscriptionException("Composite App Subscription already exists with Id [ " +  appId + " ]");
+        } else {
+        	// persist 
+        	try {
+				persistCompositeAppSubscription(compositeAppSubscription);
+			} catch (ADCException e) {
+				// TODO Auto-generated catch block
+				log.error("app Id already exists, failed to createCompositeAppSubscription for appId: " + appId + 
+																			" and tenantId: " + tenantId + " e:" + e);
+				e.printStackTrace();
+			}
         }
 
         return new CompositeAppSubscription(appId);

http://git-wip-us.apache.org/repos/asf/stratos/blob/04fa25e6/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
index 94ba486..6d24765 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/topology/receiver/StratosManagerTopologyEventReceiver.java
@@ -21,7 +21,14 @@ package org.apache.stratos.manager.topology.receiver;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.exception.CompositeAppSubscriptionException;
+import org.apache.stratos.manager.exception.CompositeApplicationDefinitionException;
+import org.apache.stratos.manager.exception.CompositeApplicationException;
+import org.apache.stratos.manager.manager.CartridgeSubscriptionManager;
+import org.apache.stratos.manager.subscription.CompositeAppSubscription;
 import org.apache.stratos.manager.topology.model.TopologyClusterInformationModel;
+import org.apache.stratos.messaging.domain.topology.Application;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.messaging.domain.topology.Member;
 import org.apache.stratos.messaging.domain.topology.Service;
@@ -269,6 +276,38 @@ public class StratosManagerTopologyEventReceiver implements Runnable {
                 }
             }
         });
+        
+      //add listner to Complete Topology Event
+        topologyEventReceiver.addEventListener(new ApplicationCreatedEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+
+            	ApplicationCreatedEvent appCreateEvent = (ApplicationCreatedEvent) event;
+
+                log.info("[ApplicationCreatedEventListener] Received: " + event.getClass());
+
+                try {
+                    TopologyManager.acquireReadLock();
+                    
+                    // create and persist Application subscritpion
+                    CartridgeSubscriptionManager cartridgeSubscriptionManager = new CartridgeSubscriptionManager();
+                    CompositeAppSubscription compositeAppSubscription;
+                    Application app = appCreateEvent.getApplication();
+                    String appId = app.getId();
+                    int tenantId = app.getTenantId();
+                    try {
+                        compositeAppSubscription = cartridgeSubscriptionManager.createCompositeAppSubscription(appId, tenantId);
+                        cartridgeSubscriptionManager.persistCompositeAppSubscription(compositeAppSubscription);
+                    } catch (CompositeAppSubscriptionException e) {
+                        //throw new CompositeApplicationDefinitionException(e);
+                    } catch (ADCException e) {
+                        //throw new CompositeApplicationException(e);
+                    }
+                } finally {
+                    TopologyManager.releaseReadLock();
+                }
+            }
+        });
     }