Updated Branches: refs/heads/master 7c68d2211 -> 8a7f78122
fixing STRATOS-424, making the alias globally unique (across all tenants) Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/0f9a07eb Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/0f9a07eb Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/0f9a07eb Branch: refs/heads/master Commit: 0f9a07ebe24c5a25cb449b294bece80c7756eae3 Parents: 3ff07ad Author: Isuru <[email protected]> Authored: Tue Feb 11 12:47:42 2014 +0530 Committer: Isuru <[email protected]> Committed: Tue Feb 11 12:47:42 2014 +0530 ---------------------------------------------------------------------- .../manager/lookup/LookupDataHolder.java | 21 ++++++++++++++++++++ .../manager/lookup/SubscriptionContext.java | 2 ++ .../DataInsertionAndRetrievalManager.java | 15 ++++++++++++++ .../utils/CartridgeSubscriptionUtils.java | 4 +++- 4 files changed, 41 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0f9a07eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/LookupDataHolder.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/LookupDataHolder.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/LookupDataHolder.java index 260feb2..e62c134 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/LookupDataHolder.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/LookupDataHolder.java @@ -124,6 +124,27 @@ public class LookupDataHolder implements Serializable { } + public CartridgeSubscription getSubscriptionForAlias (String subscriptionAlias) { + + Collection<SubscriptionContext> subscriptionContexts = tenantIdToSubscriptionContext.getSubscriptionContexts(); + if (subscriptionContexts == null) { + // no subscriptions + return null; + } + + CartridgeSubscription cartridgeSubscription; + + for (SubscriptionContext subscriptionContext : subscriptionContexts) { + cartridgeSubscription = subscriptionContext.getSubscriptionForAlias(subscriptionAlias); + // check if the retrieved subscription is not null and return + if (cartridgeSubscription != null) { + return cartridgeSubscription; + } + } + + return null; + } + public Collection<CartridgeSubscription> getSubscriptionForType (int tenantId, String cartridgeType) { SubscriptionContext subscriptionContext = tenantIdToSubscriptionContext.getSubscriptionContext(tenantId); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0f9a07eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/SubscriptionContext.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/SubscriptionContext.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/SubscriptionContext.java index 502bbba..61e6ed6 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/SubscriptionContext.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/lookup/SubscriptionContext.java @@ -87,6 +87,8 @@ public class SubscriptionContext implements Serializable { return cartridgeTypeToSubscriptions.get(cartridgeType); } + + public CartridgeSubscription getSubscriptionForAlias (String subscriptionAlias) { return aliasToSubscription.get(subscriptionAlias); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0f9a07eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java index ab656aa..ff6c669 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java @@ -297,4 +297,19 @@ public class DataInsertionAndRetrievalManager { LookupDataHolder.getInstance().releaseReadLock(); } } + + //Don't use this method unless absolutely necessary, use getCartridgeSubscription (int tenantId, String subscriptionAlias) + public CartridgeSubscription getCartridgeSubscriptionForAlias (String subscriptionAlias) { + + // acquire read lock + LookupDataHolder.getInstance().acquireReadLock(); + + try { + return LookupDataHolder.getInstance().getSubscriptionForAlias(subscriptionAlias); + + } finally { + // release read lock + LookupDataHolder.getInstance().releaseReadLock(); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/0f9a07eb/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java index 70ecf1c..a736dc7 100644 --- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java +++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/subscription/utils/CartridgeSubscriptionUtils.java @@ -167,6 +167,8 @@ public class CartridgeSubscriptionUtils { public static boolean isAliasTaken (int tenantId, String alias) { DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager(); - return (dataInsertionAndRetrievalManager.getCartridgeSubscription(tenantId, alias) == null) ? false : true; + // return (dataInsertionAndRetrievalManager.getCartridgeSubscription(tenantId, alias) == null) ? false : true; + // fixing STRATOS-427, making the alias globally unique + return (dataInsertionAndRetrievalManager.getCartridgeSubscriptionForAlias(alias) == null) ? false : true; } }
