You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/05/04 19:04:07 UTC

git commit: Removed http request body from subscription domain remove api method and added domain validation method

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 <im...@apache.org>
Authored: Sun May 4 22:33:47 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
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);
     }
 }