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/20 18:48:11 UTC
[1/3] git commit: persisting Group Subscriptions and Composite App
Subscriptions
Repository: stratos
Updated Branches:
refs/heads/4.0.0-grouping 4b30f2385 -> b097cbc48
persisting Group Subscriptions and Composite App Subscriptions
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e997fc5d
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e997fc5d
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e997fc5d
Branch: refs/heads/4.0.0-grouping
Commit: e997fc5db71a25012496253254e70ea9e7e20a3b
Parents: 4b30f23
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Thu Jul 17 19:48:09 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Thu Jul 17 19:48:09 2014 +0530
----------------------------------------------------------------------
.../CompositeApplicationManager.java | 149 +++------
.../manager/CartridgeSubscriptionManager.java | 39 +++
.../RegistryBasedPersistenceManager.java | 334 ++++++++++++++++---
.../stratos/manager/utils/Serializer.java | 42 +--
4 files changed, 387 insertions(+), 177 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/e997fc5d/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 9448438..b4db5de 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
@@ -102,6 +102,12 @@ public class CompositeApplicationManager {
// set top level group aliases to Composite App Subscription
compositeAppSubscription.addGroupSubscriptionAliases(getGroupSubscriptionAliases(compositeAppContext.getGroupContexts()));
}
+
+ // TODO: send the Composite App structure to CC
+
+ persistCartridgeSubscriptions(aliasToCartridgeSubscription.values());
+ persistGroupSubscriptions(groupAliasToGroupSubscription.values());
+ persistCompositeAppSubscription(compositeAppSubscription);
}
private Set<String> getCartrigdeSubscriptionAliases (Set<SubscribableContext> subscribableContexts) throws CompositeApplicationException {
@@ -250,104 +256,49 @@ public class CompositeApplicationManager {
return groupAliasToGroupSubscription.get(newGroupSubscriptionAlias) != null;
}
-
-// public void unDeployCompositeApplication(String configApplicationAlias) throws ADCException {
-// if (log.isDebugEnabled()) {
-// log.debug("undeploying composite application " + configApplicationAlias);
-// }
-// // unregister application
-// unRegisterCompositeApplication(configApplicationAlias);
-// if (log.isDebugEnabled()) {
-// log.debug("publishing composite application removed event" + configApplicationAlias);
-// }
-// ApplicationUtils.publishApplicationUnDeployEvent(configApplicationAlias);
-// if (log.isDebugEnabled()) {
-// log.debug("composite application successfully removed " + configApplicationAlias);
-// }
-// }
-
-// private void registerCompositeApplication(ConfigCompositeApplication configCompositeApplication) throws ADCException {
-//
-// try {
-// if (log.isDebugEnabled()) {
-// log.debug("registering composite application " + configCompositeApplication.getAlias());
-// }
-// DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
-// mgr.persistCompositeApplication ( configCompositeApplication);
-//
-// if (log.isDebugEnabled()) {
-// log.debug("testing to retrieve persisted composite application ");
-// Collection<ConfigCompositeApplication> apps = mgr.getCompositeApplications();
-// log.debug("retrieved persisted composite application " + apps.size());
-// for (ConfigCompositeApplication app : apps) {
-// log.debug("retrieved persisted composite application " + app.getAlias());
-// }
-// }
-//
-// } catch (PersistenceManagerException e) {
-// String errorMsg = "Error saving composite application " + configCompositeApplication.getAlias();
-// log.error(errorMsg);
-// throw new ADCException(errorMsg, e);
-// }
-//
-// log.info("Successfully registered composite application " + configCompositeApplication.getAlias());
-//
-// }
-
-// private void unRegisterCompositeApplication(String configApplicationAlias) throws ADCException {
-//
-// try {
-// if (log.isDebugEnabled()) {
-// log.debug("unregistering composite application " + configApplicationAlias);
-// }
-// DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
-// mgr.removeCompositeApplication(configApplicationAlias);
-//
-// if (log.isDebugEnabled()) {
-// log.debug("removed persisted composite application successfully");
-// }
-//
-// } catch (PersistenceManagerException e) {
-// String errorMsg = "Error undeploying composite application " + configApplicationAlias;
-// log.error(errorMsg);
-// throw new ADCException(errorMsg, e);
-// }
-//
-// log.info("Successfully undeployed composite application " + configApplicationAlias);
-//
-// }
-
-// public void restoreCompositeApplications () throws ADCException {
-// try {
-// if (log.isDebugEnabled()) {
-// log.debug("restoring composite applications " );
-// }
-// DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
-// Collection<ConfigCompositeApplication> apps = mgr.getCompositeApplications();
-//
-// if (apps == null) {
-// if (log.isDebugEnabled()) {
-// log.debug("no composite application configured");
-// }
-// return;
-// }
-// if (log.isDebugEnabled()) {
-// log.debug("retrieved persisted composite application " + apps.size());
-// for (ConfigCompositeApplication app : apps) {
-// log.debug("retrieved persisted composite application " + app.getAlias());
-// }
-// }
-// // sending application created event to restore in Toplogy
-// for (ConfigCompositeApplication app : apps) {
-// log.debug("restoring composite application " + app.getAlias());
-// ApplicationUtils.publishApplicationCreatedEvent(app);
-// }
-//
-// } catch (PersistenceManagerException e) {
-// String errorMsg = "Error restoring composite application ";
-// log.error(errorMsg);
-// throw new ADCException(errorMsg, e);
-// }
-// }
+
+ private void persistCartridgeSubscriptions (Collection<CartridgeSubscription> cartridgeSubscriptions) throws CompositeApplicationException {
+
+ if (cartridgeSubscriptions == null) {
+ return;
+ }
+
+ for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
+ try {
+ cartridgeSubscriptionManager.persistCartridgeSubscription(cartridgeSubscription);
+
+ } catch (ADCException e) {
+ throw new CompositeApplicationException(e);
+ }
+ }
+ }
+
+ private void persistGroupSubscriptions (Collection<GroupSubscription> groupSubscriptions) throws CompositeApplicationException {
+
+ if (groupSubscriptions == null) {
+ return;
+ }
+
+ for (GroupSubscription groupSubscription : groupSubscriptions) {
+ try {
+ cartridgeSubscriptionManager.persistGroupSubscription(groupSubscription);
+
+ } catch (ADCException e) {
+ throw new CompositeApplicationException(e);
+ }
+ }
+ }
+
+ private void persistCompositeAppSubscription (CompositeAppSubscription compositeAppSubscription) throws CompositeApplicationException {
+
+ if (compositeAppSubscription != null) {
+ try {
+ cartridgeSubscriptionManager.persistCompositeAppSubscription(compositeAppSubscription);
+
+ } catch (ADCException e) {
+ throw new CompositeApplicationException(e);
+ }
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e997fc5d/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 cbf0b01..7d6be7c 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
@@ -127,6 +127,45 @@ public class CartridgeSubscriptionManager {
return serviceCartridgeSubscription;
}
+
+ public void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().cacheAndPersistSubcription(cartridgeSubscription);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error saving subscription for tenant " +
+ cartridgeSubscription.getSubscriber().getTenantDomain() + ", alias " + cartridgeSubscription.getType();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }
+
+ log.info("Successful Subscription: " + cartridgeSubscription.toString());
+
+ // Publish tenant subscribed event to message broker
+ CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getCartridgeInfo().getType());
+ }
+
+ public void persistGroupSubscription (GroupSubscription groupSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().persistGroupSubscription(groupSubscription);
+
+ } catch (PersistenceManagerException e) {
+ throw new ADCException(e);
+ }
+ }
+
+ public void persistCompositeAppSubscription (CompositeAppSubscription compositeAppSubscription) throws ADCException {
+
+ try {
+ new DataInsertionAndRetrievalManager().persistCompositeAppSubscription(compositeAppSubscription);
+
+ } catch (PersistenceManagerException e) {
+ throw new ADCException(e);
+ }
+ }
public SubscriptionInfo subscribeToCartridgeWithProperties(SubscriptionData subscriptionData) throws ADCException,
InvalidCartridgeAliasException,
http://git-wip-us.apache.org/repos/asf/stratos/blob/e997fc5d/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
index 390c7c6..6a829bb 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
@@ -21,7 +21,6 @@ package org.apache.stratos.manager.persistence;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.exception.PersistenceManagerException;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -31,7 +30,6 @@ import org.apache.stratos.manager.subscription.CompositeAppSubscription;
import org.apache.stratos.manager.subscription.GroupSubscription;
import org.apache.stratos.manager.utils.Deserializer;
import org.apache.stratos.manager.utils.Serializer;
-import org.apache.stratos.messaging.domain.topology.ConfigCompositeApplication;
import org.wso2.carbon.context.CarbonContext;
import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
@@ -50,7 +48,9 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
private static final String ACTIVE_SUBSCRIPTIONS = "/subscriptions/active";
private static final String INACTIVE_SUBSCRIPTIONS = "/subscriptions/inactive";
private static final String SERVICES = "/services";
- private static final String COMPOSITE_APPLICATION = "/composite_applications";
+ private static final String CARTRIDGES = "/cartridges";
+ private static final String GROUPS = "/groups";
+ private static final String COMPOSITE_APPLICATIONS = "/composite_applications";
private static final String SERVICE_GROUPING = "/service.grouping";
private static final String SERVICE_GROUPING_DEFINITIONS = SERVICE_GROUPING + "/definitions";
@@ -81,7 +81,7 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
// persist
try {
- RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + "/" +
+ RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + CARTRIDGES + ACTIVE_SUBSCRIPTIONS + "/" +
Integer.toString(cartridgeSubscription.getSubscriber().getTenantId()) + "/" +
cartridgeSubscription.getType() + "/" +
cartridgeSubscription.getAlias(), Serializer.serializeSubscriptionSontextToByteArray(cartridgeSubscription), cartridgeSubscription.getClusterDomain());
@@ -124,8 +124,8 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
private void removeSubscription (int tenantId, String type, String alias) throws PersistenceManagerException {
// move the subscription from active set to inactive set
- String sourcePath = STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + "/" + Integer.toString(tenantId) + "/" + type + "/" + alias;
- String targetPath = STRATOS_MANAGER_REOSURCE + INACTIVE_SUBSCRIPTIONS + "/" + Integer.toString(tenantId) + "/" + type + "/" + alias;
+ String sourcePath = STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + CARTRIDGES + "/" + Integer.toString(tenantId) + "/" + type + "/" + alias;
+ String targetPath = STRATOS_MANAGER_REOSURCE + INACTIVE_SUBSCRIPTIONS + CARTRIDGES + "/" + Integer.toString(tenantId) + "/" + type + "/" + alias;
try {
RegistryManager.getInstance().move(sourcePath, targetPath);
@@ -138,26 +138,149 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
}
}
-
@Override
public void persistGroupSubscription(GroupSubscription groupSubscription) throws PersistenceManagerException {
- //TODO
+
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ persistSubscription(tenantId, groupSubscription);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ persistSubscription(tenantId, groupSubscription);
+ }
+ }
+
+ private void persistSubscription (int tenantId, GroupSubscription groupSubscription) throws PersistenceManagerException {
+
+ // persist
+ try {
+ RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + GROUPS + "/" +
+ Integer.toString(tenantId) + "/" + groupSubscription.getName() + "/" +
+ groupSubscription.getGroupAlias(),
+ Serializer.serializeGroupSubscriptionToByteArray(groupSubscription), null);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Persisted Group Subscription successfully: [ " + groupSubscription.getName() + ", " + groupSubscription.getGroupAlias() + " ] ");
+ }
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+
+ } catch (IOException e) {
+ throw new PersistenceManagerException(e);
+ }
}
public GroupSubscription getGroupSubscription (int tenantId, String groupName, String groupAlias) throws PersistenceManagerException {
- //TODO
+
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ return getSubscription(tenantId, groupName, groupAlias);
+
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ return getSubscription(tenantId, groupName, groupAlias);
+ }
+ }
+
+ public GroupSubscription getSubscription (int tenantId, String groupName, String groupAlias) throws PersistenceManagerException {
+
+ Object byteObj;
+
+ try {
+ byteObj = RegistryManager.getInstance().retrieve(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + GROUPS + "/" +
+ Integer.toString(tenantId) + "/" + groupName + "/" + groupAlias);
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (byteObj == null) {
+ return null;
+ }
+
+ Object groupSubscriptionObj;
+
+ try {
+ groupSubscriptionObj = Deserializer.deserializeFromByteArray((byte[]) byteObj);
+
+ } catch (Exception e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (groupSubscriptionObj instanceof GroupSubscription) {
+ return (GroupSubscription) groupSubscriptionObj;
+ }
+
return null;
}
@Override
public void removeGroupSubscription(int tenantId, String groupName, String groupAlias) throws PersistenceManagerException {
- //TODO
+
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ remove(tenantId, groupName, groupAlias);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ remove(tenantId, groupName, groupAlias);
+ }
+ }
+
+ private void remove (int tenantId, String groupName, String groupAlias) throws PersistenceManagerException {
+
+ // move the subscription from active set to inactive set
+ String sourcePath = STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + GROUPS + "/" + Integer.toString(tenantId) +
+ "/" + groupName + "/" + groupAlias;
+ String targetPath = STRATOS_MANAGER_REOSURCE + INACTIVE_SUBSCRIPTIONS + GROUPS + "/" + Integer.toString(tenantId) +
+ "/" + groupName + "/" + groupAlias;
+
+ try {
+ RegistryManager.getInstance().move(sourcePath, targetPath);
+ if (log.isDebugEnabled()) {
+ log.debug("Moved Group Subscription on " + sourcePath + " to " + targetPath + " successfully");
+ }
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+ }
}
@Override
public Collection<CartridgeSubscription> getCartridgeSubscriptions () throws PersistenceManagerException {
- return traverseAndGetCartridgeSubscriptions(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS);
+ return traverseAndGetCartridgeSubscriptions(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + CARTRIDGES);
}
private Collection<CartridgeSubscription> traverseAndGetCartridgeSubscriptions (String resourcePath) throws PersistenceManagerException {
@@ -238,23 +361,146 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
@Override
public Collection<CartridgeSubscription> getCartridgeSubscriptions (int tenantId) throws PersistenceManagerException {
- return traverseAndGetCartridgeSubscriptions(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + "/" + Integer.toString(tenantId));
+ return traverseAndGetCartridgeSubscriptions(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + CARTRIDGES + "/" + Integer.toString(tenantId));
}
@Override
public void persistCompositeAppSubscription(CompositeAppSubscription compositeAppSubscription) throws PersistenceManagerException {
- //TODO
+
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ persistSubscription(tenantId, compositeAppSubscription);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ persistSubscription(tenantId, compositeAppSubscription);
+ }
+ }
+
+ private void persistSubscription (int tenantId, CompositeAppSubscription compositeAppSubscription) throws PersistenceManagerException {
+
+ // persist
+ try {
+ RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + COMPOSITE_APPLICATIONS + "/" +
+ Integer.toString(tenantId) + "/" + compositeAppSubscription.getAppId(),
+ Serializer.serializeCompositeAppSubscriptionToByteArray(compositeAppSubscription), null);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Persisted Group Subscription successfully: [ " + compositeAppSubscription.getAppId() + " ] ");
+ }
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+
+ } catch (IOException e) {
+ throw new PersistenceManagerException(e);
+ }
}
@Override
public CompositeAppSubscription getCompositeAppSubscription(int tenantId, String compositeAppId) throws PersistenceManagerException {
- //TODO
+
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ return getSubscription(tenantId, compositeAppId);
+
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ return getSubscription(tenantId, compositeAppId);
+ }
+ }
+
+ public CompositeAppSubscription getSubscription (int tenantId, String appId) throws PersistenceManagerException {
+
+ Object byteObj;
+
+ try {
+ byteObj = RegistryManager.getInstance().retrieve(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + COMPOSITE_APPLICATIONS + "/" +
+ Integer.toString(tenantId) + "/" + appId);
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (byteObj == null) {
+ return null;
+ }
+
+ Object compositeAppSubscriptionObj;
+
+ try {
+ compositeAppSubscriptionObj = Deserializer.deserializeFromByteArray((byte[]) byteObj);
+
+ } catch (Exception e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (compositeAppSubscriptionObj instanceof CompositeAppSubscription) {
+ return (CompositeAppSubscription) compositeAppSubscriptionObj;
+ }
+
return null;
}
@Override
public void removeCompositeAppSubscription(int tenantId, String compositeAppId) throws PersistenceManagerException {
- //TODO
+
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ remove(tenantId, compositeAppId);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ remove(tenantId, compositeAppId);
+ }
+ }
+
+ private void remove (int tenantId, String compositeAppId) throws PersistenceManagerException {
+
+ // move the subscription from active set to inactive set
+ String sourcePath = STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + COMPOSITE_APPLICATIONS + "/" + Integer.toString(tenantId) +
+ "/" + compositeAppId;
+ String targetPath = STRATOS_MANAGER_REOSURCE + INACTIVE_SUBSCRIPTIONS + COMPOSITE_APPLICATIONS + "/" + Integer.toString(tenantId) +
+ "/" + compositeAppId;
+
+ try {
+ RegistryManager.getInstance().move(sourcePath, targetPath);
+ if (log.isDebugEnabled()) {
+ log.debug("Moved Composite App Subscription on " + sourcePath + " to " + targetPath + " successfully");
+ }
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+ }
}
@Override
@@ -485,36 +731,36 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
throw new PersistenceManagerException(e);
}
}
-
- private void removeCompApplication(String alias) throws PersistenceManagerException {
- String resourcePath = STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + alias;
-
- try {
- Object obj = RegistryManager.getInstance().retrieve(resourcePath);
- if (obj != null) {
- if (log.isDebugEnabled()) {
- log.debug(" found composite application to remve " + obj + " at resource path " + resourcePath);
- }
- }
- RegistryManager.getInstance().delete(resourcePath);
- if (log.isDebugEnabled()) {
- log.debug("Deleted composite application on path " + resourcePath + " successfully");
- }
-
- if (log.isDebugEnabled()) {
- obj = RegistryManager.getInstance().retrieve(resourcePath);
- if (obj == null) {
- log.debug(" veriying that composite application is remvoved, obj is null " + resourcePath);
- } else {
- log.debug(" unsuccessful removing composite application " + obj + " at resource path " + resourcePath);
- }
- }
-
- } catch (RegistryException e) {
- throw new PersistenceManagerException(e);
- }
- }
+// private void removeCompApplication(String alias) throws PersistenceManagerException {
+//
+// String resourcePath = STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + alias;
+//
+// try {
+// Object obj = RegistryManager.getInstance().retrieve(resourcePath);
+// if (obj != null) {
+// if (log.isDebugEnabled()) {
+// log.debug(" found composite application to remve " + obj + " at resource path " + resourcePath);
+// }
+// }
+// RegistryManager.getInstance().delete(resourcePath);
+// if (log.isDebugEnabled()) {
+// log.debug("Deleted composite application on path " + resourcePath + " successfully");
+// }
+//
+// if (log.isDebugEnabled()) {
+// obj = RegistryManager.getInstance().retrieve(resourcePath);
+// if (obj == null) {
+// log.debug(" veriying that composite application is remvoved, obj is null " + resourcePath);
+// } else {
+// log.debug(" unsuccessful removing composite application " + obj + " at resource path " + resourcePath);
+// }
+// }
+//
+// } catch (RegistryException e) {
+// throw new PersistenceManagerException(e);
+// }
+// }
@Override
public void persistServiceGroupDefinition(ServiceGroupDefinition serviceGroupDefinition) throws PersistenceManagerException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/e997fc5d/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
index 6597499..743be48 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
@@ -24,6 +24,8 @@ import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
import org.apache.stratos.manager.lookup.ClusterIdToSubscription;
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.messaging.domain.topology.ConfigCompositeApplication;
import java.io.ByteArrayOutputStream;
@@ -59,20 +61,14 @@ public class Serializer {
}
- /**
- * Serialize a ClusterIdToSubscription instance to a byte array.
- * @param clusterIdToSubscription
- * @return byte[]
- * @throws java.io.IOException
- */
- public static byte[] serializeClusterIdToSubscriptionToByteArray(ClusterIdToSubscription clusterIdToSubscription)
+ public static byte[] serializeGroupSubscriptionToByteArray (GroupSubscription groupSubscription)
throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
- out.writeObject(clusterIdToSubscription);
+ out.writeObject(groupSubscription);
return bos.toByteArray();
@@ -85,14 +81,14 @@ public class Serializer {
}
- public static byte[] serializeServiceToByteArray(Service service)
+ public static byte[] serializeCompositeAppSubscriptionToByteArray (CompositeAppSubscription compositeAppSubscription)
throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
- out.writeObject(service);
+ out.writeObject(compositeAppSubscription);
return bos.toByteArray();
@@ -104,37 +100,15 @@ public class Serializer {
}
}
-
- // Grouping
- public static byte[] serializeServiceToByteArray(ConfigCompositeApplication configCompositeApplication)
- throws IOException {
- ByteArrayOutputStream bos = new ByteArrayOutputStream();
- ObjectOutput out = null;
- try {
- out = new ObjectOutputStream(bos);
- out.writeObject(configCompositeApplication);
-
- return bos.toByteArray();
-
- } finally {
- if (out != null) {
- out.close();
- }
- bos.close();
- }
-
- }
-
- // Grouping
- public static byte[] serializeServiceToByteArray(CompositeAppDefinition configCompositeApplication)
+ public static byte[] serializeServiceToByteArray(Service service)
throws IOException {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
- out.writeObject(configCompositeApplication);
+ out.writeObject(service);
return bos.toByteArray();
[2/3] git commit: filterng out duplicated top level Groups from
ApplicationContext
Posted by is...@apache.org.
filterng out duplicated top level Groups from ApplicationContext
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/74438683
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/74438683
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/74438683
Branch: refs/heads/4.0.0-grouping
Commit: 744386833c3f30899975ab8d077099a39861e73a
Parents: e997fc5
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Fri Jul 18 19:02:10 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Fri Jul 18 19:02:10 2014 +0530
----------------------------------------------------------------------
.../CompositeApplicationManager.java | 2 +
.../DefaultCompositeApplicationParser.java | 60 ++++++++++++++++++--
2 files changed, 56 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/74438683/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 b4db5de..75434d0 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
@@ -35,6 +35,8 @@ public class CompositeApplicationManager {
CompositeApplicationParser compositeAppParser = new DefaultCompositeApplicationParser();
CompositeAppContext compositeAppContext = compositeAppParser.parse(compositeAppDefinition);
+ Set<GroupContext> topLevelGroupsContexts = compositeAppContext.getGroupContexts();
+
log.info("Composite Application [ Id: " + compositeAppDefinition.getApplicationId() + " , alias: "
+ compositeAppDefinition.getAlias() + " ] deployed successfully");
http://git-wip-us.apache.org/repos/asf/stratos/blob/74438683/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
index a2b36bd..436e647 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
@@ -224,9 +224,53 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
groupContexts.add(getGroupContext(group, subscribableInformation, definedGroups));
}
+ //Set<GroupContext> topLevelGroupContexts = getTopLevelGroupContexts(groupContexts);
+ Set<GroupContext> nestedGroupContexts = new HashSet<GroupContext>();
+ getNestedGroupContexts(nestedGroupContexts, groupContexts);
+ filterDuplicatedGroupContexts(groupContexts, nestedGroupContexts);
+
return groupContexts;
}
+// private Set<GroupContext> getTopLevelGroupContexts (Set<GroupContext> groupContexts) {
+//
+// Set<GroupContext> topLevelGroupContexts = new HashSet<GroupContext>();
+// for (GroupContext groupContext : groupContexts) {
+// topLevelGroupContexts.add(groupContext);
+// }
+//
+// return topLevelGroupContexts;
+// }
+
+ private void getNestedGroupContexts (Set<GroupContext> nestedGroupContexts, Set<GroupContext> groupContexts) {
+
+ if (groupContexts != null) {
+ for (GroupContext groupContext : groupContexts) {
+ if (groupContext.getGroupContexts() != null) {
+ nestedGroupContexts.addAll(groupContext.getGroupContexts());
+ getNestedGroupContexts(nestedGroupContexts, groupContext.getGroupContexts());
+ }
+ }
+ }
+ }
+
+ private void filterDuplicatedGroupContexts (Set<GroupContext> topLevelGroupContexts, Set<GroupContext> nestedGroupContexts) {
+
+ Iterator<GroupContext> parentIterator = topLevelGroupContexts.iterator();
+ Iterator<GroupContext> nestedIterator = nestedGroupContexts.iterator();
+
+ while (parentIterator.hasNext()) {
+ GroupContext parentGroupCtxt = parentIterator.next();
+ while (nestedIterator.hasNext()) {
+ GroupContext nestedGroupCtxt = nestedIterator.next();
+ if (parentGroupCtxt.getName().equals(nestedGroupCtxt.getName()) &&
+ parentGroupCtxt.getAlias().equals(nestedGroupCtxt.getAlias())) {
+ parentIterator.remove();
+ }
+ }
+ }
+ }
+
private GroupContext getGroupContext (GroupDefinition group, Map<String, SubscribableInfo> subscribableInformation,
Map<String, GroupDefinition> definedGroups) throws CompositeApplicationDefinitionException {
@@ -238,21 +282,25 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
}
GroupContext groupContext = new GroupContext();
+
+ groupContext.setName(group.getName());
+ groupContext.setAlias(group.getAlias());
+ groupContext.setAutoscalingPolicy(group.getAutoscalingPolicy());
+ groupContext.setDeploymentPolicy(group.getDeploymentPolicy());
+ groupContext.setStartupOrder(getStartupOrderForGroup(group.getName()));
+ groupContext.setKillBehaviour(getKillbehaviour(group.getName()));
+
// get group level Subscribables
if (group.getSubscribables() != null) {
- groupContext.setName(group.getName());
- groupContext.setAlias(group.getAlias());
- groupContext.setAutoscalingPolicy(group.getAutoscalingPolicy());
- groupContext.setDeploymentPolicy(group.getDeploymentPolicy());
groupContext.setSubscribableContexts(getSubsribableContexts(group.getSubscribables(), subscribableInformation));
- groupContext.setStartupOrder(getStartupOrderForGroup(group.getName()));
- groupContext.setKillBehaviour(getKillbehaviour(group.getName()));
}
// get nested groups
if (group.getSubGroups() != null) {
Set<GroupContext> nestedGroupContexts = new HashSet<GroupContext>();
// check sub groups
for (GroupDefinition subGroup : group.getSubGroups()) {
+ // get the complete Group Definition
+ subGroup = definedGroups.get(subGroup.getAlias());
nestedGroupContexts.add(getGroupContext(subGroup, subscribableInformation, definedGroups));
}
[3/3] git commit: removing duplicated groups from top level
Posted by is...@apache.org.
removing duplicated groups from top level
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/b097cbc4
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/b097cbc4
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/b097cbc4
Branch: refs/heads/4.0.0-grouping
Commit: b097cbc48fae7e56d0b2d22d9b0d6c4c69d2699f
Parents: 7443868
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Sun Jul 20 22:17:33 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Sun Jul 20 22:17:33 2014 +0530
----------------------------------------------------------------------
.../CompositeApplicationManager.java | 2 --
.../DefaultCompositeApplicationParser.java | 4 ++--
.../structure/CompositeAppContext.java | 22 ++++++++++++++++++++
.../application/structure/GroupContext.java | 19 ++++++++++++++++-
.../application/structure/StartupOrder.java | 18 ++++++++++++++++
.../structure/SubscribableContext.java | 18 ++++++++++++++++
.../deployer/DefaultServiceGroupDeployer.java | 2 +-
.../RegistryBasedPersistenceManager.java | 2 +-
8 files changed, 80 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/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 75434d0..b4db5de 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
@@ -35,8 +35,6 @@ public class CompositeApplicationManager {
CompositeApplicationParser compositeAppParser = new DefaultCompositeApplicationParser();
CompositeAppContext compositeAppContext = compositeAppParser.parse(compositeAppDefinition);
- Set<GroupContext> topLevelGroupsContexts = compositeAppContext.getGroupContexts();
-
log.info("Composite Application [ Id: " + compositeAppDefinition.getApplicationId() + " , alias: "
+ compositeAppDefinition.getAlias() + " ] deployed successfully");
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
index 436e647..ef6814b 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/parser/DefaultCompositeApplicationParser.java
@@ -186,10 +186,10 @@ public class DefaultCompositeApplicationParser implements CompositeApplicationPa
Map<String, SubscribableInfo> subscribableInformation)
throws CompositeApplicationDefinitionException {
- CompositeAppContext compositeAppContext = new CompositeAppContext();
+ CompositeAppContext compositeAppContext = new CompositeAppContext(compositeAppDefinition.getApplicationId());
- // get top level Subscribables
if (compositeAppDefinition.getComponents() != null) {
+ // get top level Subscribables
if (compositeAppDefinition.getComponents().getSubscribables() != null) {
compositeAppContext.setSubscribableContexts(getSubsribableContexts(compositeAppDefinition.getComponents().getSubscribables(),
subscribableInformation));
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
index 6a589e7..4cb7073 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/CompositeAppContext.java
@@ -33,6 +33,10 @@ public class CompositeAppContext {
private String killBehaviour;
+ public CompositeAppContext (String appId) {
+ this.appId = appId;
+ }
+
public String getAppId() {
return appId;
}
@@ -72,4 +76,22 @@ public class CompositeAppContext {
public void setKillBehaviour(String killBehaviour) {
this.killBehaviour = killBehaviour;
}
+
+ public boolean equals(Object other) {
+
+ if(this == other) {
+ return true;
+ }
+ if(!(other instanceof CompositeAppContext)) {
+ return false;
+ }
+
+ CompositeAppContext that = (CompositeAppContext)other;
+ return this.appId.equals(that.appId);
+ }
+
+ public int hashCode () {
+
+ return appId.hashCode();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
index e7736ea..b235c1b 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/GroupContext.java
@@ -19,7 +19,6 @@
package org.apache.stratos.manager.composite.application.structure;
-import java.util.List;
import java.util.Set;
public class GroupContext {
@@ -104,4 +103,22 @@ public class GroupContext {
public void setSubscribableContexts(Set<SubscribableContext> subscribableContexts) {
this.subscribableContexts = subscribableContexts;
}
+
+ public boolean equals(Object other) {
+
+ if(this == other) {
+ return true;
+ }
+ if(!(other instanceof GroupContext)) {
+ return false;
+ }
+
+ GroupContext that = (GroupContext)other;
+ return this.name.equals(that.name) && this.alias.equals(that.alias);
+ }
+
+ public int hashCode () {
+
+ return name.hashCode() + alias.hashCode();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
index 4553a9f..4617090 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/StartupOrder.java
@@ -45,4 +45,22 @@ public class StartupOrder {
public void setAfter(String after) {
this.after = after;
}
+
+ public boolean equals(Object other) {
+
+ if(this == other) {
+ return true;
+ }
+ if(!(other instanceof StartupOrder)) {
+ return false;
+ }
+
+ StartupOrder that = (StartupOrder)other;
+ return this.start.equals(that.start) && this.after.equals(that.after);
+ }
+
+ public int hashCode () {
+
+ return start.hashCode() + after.hashCode();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
index 2e30c1b..a336a62 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/structure/SubscribableContext.java
@@ -105,4 +105,22 @@ public class SubscribableContext {
public void setPassword(String password) {
this.password = password;
}
+
+ public boolean equals(Object other) {
+
+ if(this == other) {
+ return true;
+ }
+ if(!(other instanceof SubscribableContext)) {
+ return false;
+ }
+
+ SubscribableContext that = (SubscribableContext)other;
+ return this.cartridgeType.equals(that.cartridgeType) && this.alias.equals(that.alias);
+ }
+
+ public int hashCode () {
+
+ return cartridgeType.hashCode() + alias.hashCode();
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/deployer/DefaultServiceGroupDeployer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/deployer/DefaultServiceGroupDeployer.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/deployer/DefaultServiceGroupDeployer.java
index 4744f9f..2fd3eee 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/deployer/DefaultServiceGroupDeployer.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/grouping/deployer/DefaultServiceGroupDeployer.java
@@ -59,7 +59,7 @@ public class DefaultServiceGroupDeployer implements ServiceGroupDeployer {
throw new InvalidServiceGroupException("Service Group definition not found");
}
- // if any cartridges are specified in the group, they should be already deployed
+// if any cartridges are specified in the group, they should be already deployed
if (serviceGroupDefinition.getCartridges() != null) {
List<String> cartridgeTypes = serviceGroupDefinition.getCartridges();
http://git-wip-us.apache.org/repos/asf/stratos/blob/b097cbc4/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
index 6a829bb..9bab469 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
@@ -81,7 +81,7 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
// persist
try {
- RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + CARTRIDGES + ACTIVE_SUBSCRIPTIONS + "/" +
+ RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + ACTIVE_SUBSCRIPTIONS + CARTRIDGES + "/" +
Integer.toString(cartridgeSubscription.getSubscriber().getTenantId()) + "/" +
cartridgeSubscription.getType() + "/" +
cartridgeSubscription.getAlias(), Serializer.serializeSubscriptionSontextToByteArray(cartridgeSubscription), cartridgeSubscription.getClusterDomain());