Repository: incubator-stratos Updated Branches: refs/heads/master 4a1812990 -> 8e4ad61a5
Removed http request body from subscription domain remove api method and added domain validation method Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/8e4ad61a Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/8e4ad61a Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/8e4ad61a Branch: refs/heads/master Commit: 8e4ad61a56c3aa1f3fe357a70a06be22141f41c1 Parents: 4a18129 Author: Imesh Gunaratne <[email protected]> Authored: Sun May 4 22:33:47 2014 +0530 Committer: Imesh Gunaratne <[email protected]> Committed: Sun May 4 22:33:47 2014 +0530 ---------------------------------------------------------------------- .../manager/CartridgeSubscriptionManager.java | 59 +++++++++++++++++--- .../rest/endpoint/services/ServiceUtils.java | 15 ++++- .../rest/endpoint/services/StratosAdmin.java | 15 ++++- 3 files changed, 76 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e4ad61a/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 053f234..1c0b2e7 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 @@ -30,6 +30,7 @@ import org.apache.stratos.manager.client.CloudControllerServiceClient; import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo; import org.apache.stratos.manager.dto.SubscriptionInfo; import org.apache.stratos.manager.exception.*; +import org.apache.stratos.manager.internal.DataHolder; import org.apache.stratos.manager.lb.category.*; import org.apache.stratos.manager.repository.Repository; import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager; @@ -394,6 +395,11 @@ public class CartridgeSubscriptionManager { if(cartridgeSubscription == null) { throw new ADCException("Cartridge subscription not found"); } + for(String domain : domains) { + if(!isSubscriptionDomainValid(domain)) { + throw new ADCException(String.format("Domain %s already exists", domain)); + } + } cartridgeSubscription.addDomains(new HashSet<String>(domains)); new DataInsertionAndRetrievalManager().cacheAndUpdateSubscription(cartridgeSubscription); } catch (PersistenceManagerException e) { @@ -413,7 +419,7 @@ public class CartridgeSubscriptionManager { eventPublisher.publish(event); } - public void removeSubscriptionDomains(int tenantId, String subscriptionAlias, List<String> domains) + public void removeSubscriptionDomain(int tenantId, String subscriptionAlias, String domain) throws ADCException { CartridgeSubscription cartridgeSubscription; @@ -422,22 +428,24 @@ public class CartridgeSubscriptionManager { if(cartridgeSubscription == null) { throw new ADCException("Cartridge subscription not found"); } - cartridgeSubscription.removeDomains(new HashSet<String>(domains)); + cartridgeSubscription.removeDomain(domain); new DataInsertionAndRetrievalManager().cacheAndUpdateSubscription(cartridgeSubscription); } catch (PersistenceManagerException e) { - String errorMsg = "Could not remove domains from cartridge subscription: [tenant-id] " + tenantId + " [subscription-alias] " + subscriptionAlias + - " [domains] " + domains; + String errorMsg = "Could not remove domain from cartridge subscription: [tenant-id] " + tenantId + " [subscription-alias] " + subscriptionAlias + + " [domain] " + domain; log.error(errorMsg); throw new ADCException(errorMsg, e); } - log.info("Successfully removed domains from cartridge subscription: [tenant-id] " + tenantId + " [subscription-alias] " + subscriptionAlias + - " [domains] " + domains); + log.info("Successfully removed domain from cartridge subscription: [tenant-id] " + tenantId + " [subscription-alias] " + subscriptionAlias + + " [domain] " + domain); + Set<String> domains = new HashSet<String>(); + domains.add(domain); EventPublisher eventPublisher = EventPublisherPool.getPublisher(Constants.TENANT_TOPIC); SubscriptionDomainsRemovedEvent event = new SubscriptionDomainsRemovedEvent(tenantId, cartridgeSubscription.getType(), new HashSet<String>(cartridgeSubscription.getCluster().getId()), - new HashSet<String>(domains)); + domains); eventPublisher.publish(event); } @@ -458,6 +466,43 @@ public class CartridgeSubscriptionManager { } } + public boolean isSubscriptionDomainValid(String domain) throws ADCException { + try { + if(log.isDebugEnabled()) { + log.debug(String.format("Validating domain: %s", domain)); + } + org.wso2.carbon.user.core.tenant.TenantManager tenantManager = DataHolder.getRealmService().getTenantManager(); + org.wso2.carbon.user.api.Tenant[] tenants = tenantManager.getAllTenants(); + if((tenants != null) && (tenants.length > 0)) { + DataInsertionAndRetrievalManager manager = new DataInsertionAndRetrievalManager(); + for (org.wso2.carbon.user.api.Tenant tenant : tenants) { + if (log.isDebugEnabled()) { + log.debug(String.format("Reading subscriptions for tenant: [tenant-id] %d [tenant-domain] %s", + tenant.getId(), tenant.getDomain())); + } + Collection<CartridgeSubscription> subscriptions = manager.getCartridgeSubscriptions(tenant.getId()); + for (CartridgeSubscription subscription : subscriptions) { + if (log.isDebugEnabled()) { + log.debug(String.format("Reading domains in subscription: [alias] %s [domains] %s", + subscription.getAlias(), subscription.getDomains())); + } + if (subscription.getDomains().contains(domain)) { + return false; + } + } + } + } + if(log.isDebugEnabled()) { + log.debug(String.format("Domain %s is valid", domain)); + } + return true; + } catch (Exception e) { + String errorMsg = "Could not validate domain: " + domain; + log.error(errorMsg); + throw new ADCException(errorMsg, e); + } + } + public Collection<CartridgeSubscription> getCartridgeSubscriptions (int tenantId, String type) throws ADCException { if (type == null || type.isEmpty()) { http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e4ad61a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java index 554accf..d258e41 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java @@ -1213,11 +1213,20 @@ public class ServiceUtils { } } - public static StratosAdminResponse removeSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType, - String subscriptionAlias, List<String> domains) throws RestAPIException { + public static String isSubscriptionDomainValid(String domain) throws RestAPIException { + try { + return String.valueOf(cartridgeSubsciptionManager.isSubscriptionDomainValid(domain)); + } catch (Exception e) { + log.error(e.getMessage(), e); + throw new RestAPIException(e.getMessage(), e); + } + } + + public static StratosAdminResponse removeSubscriptionDomain(ConfigurationContext configurationContext, String cartridgeType, + String subscriptionAlias, String domain) throws RestAPIException { try { int tenantId = ApplicationManagementUtil.getTenantId(configurationContext); - cartridgeSubsciptionManager.removeSubscriptionDomains(tenantId, subscriptionAlias, domains); + cartridgeSubsciptionManager.removeSubscriptionDomain(tenantId, subscriptionAlias, domain); } catch (Exception e) { log.error(e.getMessage(), e); throw new RestAPIException(e.getMessage(), e); http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/8e4ad61a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java index c5db7ff..43c890a 100644 --- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java +++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/StratosAdmin.java @@ -1040,14 +1040,23 @@ public class StratosAdmin extends AbstractAdmin { return (String[]) ServiceUtils.getSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias).toArray(); } + @GET + @Path("/cartridge/subscription/domain/{domainName}/is-valid") + @Consumes("application/json") + @AuthorizationAction("/permission/protected/manage/monitor/tenants") + public String isSubscriptionDomainValid(@PathParam("domainName") String domainName) throws RestAPIException { + + return ServiceUtils.isSubscriptionDomainValid(domainName); + } + @DELETE - @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/") + @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/{domainName}") @Consumes("application/json") @AuthorizationAction("/permission/protected/manage/monitor/tenants") public StratosAdminResponse removeSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType, @PathParam("subscriptionAlias") String subscriptionAlias, - SubscriptionDomainRequest request) throws RestAPIException { + @PathParam("domainName") String domainName) throws RestAPIException { - return ServiceUtils.removeSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias, request.getDomains()); + return ServiceUtils.removeSubscriptionDomain(getConfigContext(), cartridgeType, subscriptionAlias, domainName); } }
