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/01/04 09:27:35 UTC
[09/12] git commit: initial complete implementation for storing
subscriptions in registry
initial complete implementation for storing subscriptions in registry
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8f562d20
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8f562d20
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8f562d20
Branch: refs/heads/master
Commit: 8f562d201b778f34e28a65c2eb5293529c1b204d
Parents: 66291df
Author: Isuru <is...@wso2.com>
Authored: Fri Jan 3 20:05:44 2014 +0530
Committer: Isuru <is...@wso2.com>
Committed: Fri Jan 3 20:05:44 2014 +0530
----------------------------------------------------------------------
.../adc/mgt/lookup/SubscriptionContext.java | 2 +-
.../RegistryBasedPersistenceManager.java | 61 ++++++++++++++------
.../DataInsertionAndRetrievalManager.java | 4 ++
3 files changed, 49 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8f562d20/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionContext.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionContext.java
index 4badf26..8338558 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionContext.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionContext.java
@@ -57,7 +57,7 @@ public class SubscriptionContext implements Serializable {
// add or update
existingSubscriptions.add(cartridgeSubscription);
if(log.isDebugEnabled()) {
- log.debug("Overwrote the existing Cartridge Subscription for type " + cartridgeType + ", alias " + cartridgeSubscription.getAlias() +
+ log.debug("Added Cartridge Subscription for type " + cartridgeType + ", alias " + cartridgeSubscription.getAlias() +
" in [Cartridge Type -> Set<CartridgeSubscription>] map");
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8f562d20/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
index aed2655..af47e79 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
@@ -26,7 +26,10 @@ import org.apache.stratos.adc.mgt.registry.RegistryManager;
import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
import org.apache.stratos.adc.mgt.utils.Deserializer;
import org.apache.stratos.adc.mgt.utils.Serializer;
+import org.wso2.carbon.context.CarbonContext;
+import org.wso2.carbon.context.PrivilegedCarbonContext;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.utils.multitenancy.MultitenantConstants;
import java.io.IOException;
import java.util.ArrayList;
@@ -38,20 +41,35 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
private static final Log log = LogFactory.getLog(RegistryBasedPersistenceManager.class);
// Registry paths
private static final String STRATOS_MANAGER_REOSURCE = "/stratos_manager";
- //private static final String CLUSTER_ID_TO_SUBSCRIPTION = "/clusterIdToSubscription";
- //private static final String SUBSCRIPTION_CONTEXT = "/subscription_context";
private static final String SUBSCRIPTIONS = "/subscriptions";
@Override
public void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription) throws PersistenceManagerException {
- //SubscriptionContext subscriptionContext = new SubscriptionContext();
- //subscriptionContext.addSubscription(cartridgeSubscription);
+ 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(cartridgeSubscription);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ persistSubscription(cartridgeSubscription);
+ }
+ }
+
+ private void persistSubscription (CartridgeSubscription cartridgeSubscription) throws PersistenceManagerException {
// persist in the path SUBSCRIPTION_CONTEXT
try {
- //RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + SUBSCRIPTION_CONTEXT + "/" +
- // Integer.toString(cartridgeSubscription.getSubscriber().getTenantId()), Serializer.serializeSubscriptionSontextToByteArray(subscriptionContext));
RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + SUBSCRIPTIONS + "/" +
Integer.toString(cartridgeSubscription.getSubscriber().getTenantId()) + "/" +
cartridgeSubscription.getType() + "/" +
@@ -68,22 +86,31 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
} catch (IOException e) {
throw new PersistenceManagerException(e);
}
+ }
+
+ @Override
+ public void removeCartridgeSubscription (int tenantId, String type, String alias) throws PersistenceManagerException {
- // persist in the path CLUSTER_ID_TO_SUBSCRIPTION
- /*try {
- RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + CLUSTER_ID_TO_SUBSCRIPTION + "/" +
- cartridgeSubscription.getClusterDomain(), Serializer.serializeSubscriptionSontextToByteArray(subscriptionContext));
+ 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);
- } catch (RegistryException e) {
- throw new PersistenceManagerException(e);
+ removeSubscription(tenantId, type, alias);
- } catch (IOException e) {
- throw new PersistenceManagerException(e);
- }*/
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ removeSubscription(tenantId, type, alias);
+ }
}
- @Override
- public void removeCartridgeSubscription (int tenantId, String type, String alias) throws PersistenceManagerException {
+ private void removeSubscription (int tenantId, String type, String alias) throws PersistenceManagerException {
String resourcePath = STRATOS_MANAGER_REOSURCE + SUBSCRIPTIONS + "/" + Integer.toString(tenantId) + "/" + type + "/" + alias;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8f562d20/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataInsertionAndRetrievalManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataInsertionAndRetrievalManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataInsertionAndRetrievalManager.java
index 916835a..f18311c 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataInsertionAndRetrievalManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataInsertionAndRetrievalManager.java
@@ -52,6 +52,10 @@ public class DataInsertionAndRetrievalManager {
} catch (PersistenceManagerException e) {
String errorMsg = "Error in persisting CartridgeSubscription in Persistence Manager";
log.error(errorMsg, e);
+ // remove from the in memory model since persisting failed
+ LookupDataHolder.getInstance().removeSubscription(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getType(),
+ cartridgeSubscription.getAlias(), cartridgeSubscription.getClusterDomain());
+
throw e;
}