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 <[email protected]>
Authored: Wed Sep 17 18:45:23 2014 -0700
Committer: Martin Eppel <[email protected]>
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();
+                }
+            }
+        });
     }
 
 

Reply via email to