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(); + } + } + }); }
