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);
}
}