You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ni...@apache.org on 2014/05/08 02:50:49 UTC

git commit: implement the capability to add multiple subscription domain mappings

Repository: incubator-stratos
Updated Branches:
  refs/heads/master c5a0142e8 -> 1ff07c620


implement the capability to add multiple subscription domain mappings


Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/1ff07c62
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/1ff07c62
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/1ff07c62

Branch: refs/heads/master
Commit: 1ff07c620d9fd5ec8d8fa28830fdc1e5d7bfcb78
Parents: c5a0142
Author: Nirmal Fernando <ni...@apache.org>
Authored: Thu May 8 06:19:49 2014 +0530
Committer: Nirmal Fernando <ni...@apache.org>
Committed: Thu May 8 06:19:49 2014 +0530

----------------------------------------------------------------------
 .../bean/SubscriptionDomainRequest.java         | 25 ++++----------
 .../subscription/domain/SubscriptionDomain.java | 29 -----------------
 .../domain/SubscriptionDomainBean.java          | 29 +++++++++++++++++
 .../bean/util/converter/PojoConverter.java      | 30 +++++++++++++++++
 .../stratos/rest/endpoint/mock/MockContext.java | 34 ++++++++++++--------
 .../rest/endpoint/mock/StratosTestAdmin.java    | 21 ++++++------
 .../rest/endpoint/services/ServiceUtils.java    | 24 +++++++++-----
 .../rest/endpoint/services/StratosAdmin.java    | 19 +++++------
 .../stratos-test/WEB-INF/schemas/schema.xsd     | 10 ++++--
 .../webapp/stratos/WEB-INF/schemas/schema.xsd   | 10 ++++--
 10 files changed, 138 insertions(+), 93 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/SubscriptionDomainRequest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/SubscriptionDomainRequest.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/SubscriptionDomainRequest.java
index 3d3fb4c..6e0d6ae 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/SubscriptionDomainRequest.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/SubscriptionDomainRequest.java
@@ -19,30 +19,17 @@
 
 package org.apache.stratos.rest.endpoint.bean;
 
-import javax.xml.bind.annotation.XmlRootElement;
 import java.util.List;
 
+import javax.xml.bind.annotation.XmlRootElement;
+
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
+
 /**
  * Defines subscription domain post request.
  */
-@XmlRootElement(name = "subscriptionDomainRequest")
+@XmlRootElement
 public class SubscriptionDomainRequest {
-    private String domainName;
-    private String applicationContext;
-
-    public String getDomainName() {
-        return domainName;
-    }
-
-    public String getApplicationContext() {
-        return applicationContext;
-    }
-
-    public void setDomainName(String domainName) {
-        this.domainName = domainName;
-    }
+    public List<SubscriptionDomainBean> domains;
 
-    public void setApplicationContext(String applicationContext) {
-        this.applicationContext = applicationContext;
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomain.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomain.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomain.java
deleted file mode 100644
index 8542339..0000000
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomain.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.rest.endpoint.bean.subscription.domain;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-@XmlRootElement
-public class SubscriptionDomain {
-    public String domainName;
-    public String applicationContext;
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomainBean.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomainBean.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomainBean.java
new file mode 100644
index 0000000..1b053bf
--- /dev/null
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/subscription/domain/SubscriptionDomainBean.java
@@ -0,0 +1,29 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.rest.endpoint.bean.subscription.domain;
+
+import javax.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement(name = "domains")
+public class SubscriptionDomainBean {
+    public String domainName;
+    public String applicationContext;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
index 3db3b24..50cbbb6 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/bean/util/converter/PojoConverter.java
@@ -21,12 +21,14 @@ package org.apache.stratos.rest.endpoint.bean.util.converter;
 
 import org.apache.stratos.cloud.controller.stub.pojo.*;
 import org.apache.stratos.manager.deploy.service.Service;
+import org.apache.stratos.manager.subscription.SubscriptionDomain;
 import org.apache.stratos.messaging.domain.topology.Cluster;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.*;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.*;
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
 import org.apache.stratos.rest.endpoint.bean.topology.Member;
 
 import java.util.ArrayList;
@@ -403,6 +405,34 @@ public class PojoConverter {
 
         return partitionBeans;
     }
+    
+	public static List<SubscriptionDomainBean> populateSubscriptionDomainPojos(List<SubscriptionDomain> subscriptionDomains) {
+
+		List<SubscriptionDomainBean> subscriptionDomainBeans = new ArrayList<SubscriptionDomainBean>();
+		
+		if (subscriptionDomains == null) {
+			return subscriptionDomainBeans;
+		}
+		
+		for (SubscriptionDomain subscriptionDomain : subscriptionDomains) {
+			subscriptionDomainBeans.add(populateSubscriptionDomainPojo(subscriptionDomain));
+		}
+
+		return subscriptionDomainBeans;
+	}
+    
+	public static SubscriptionDomainBean populateSubscriptionDomainPojo(SubscriptionDomain subscriptionDomain) {
+
+		SubscriptionDomainBean subscriptionDomainBean = new SubscriptionDomainBean();
+		
+		if (subscriptionDomain == null) {
+			return subscriptionDomainBean;
+		}
+		subscriptionDomainBean.domainName = subscriptionDomain.getDomainName();
+		subscriptionDomainBean.applicationContext = subscriptionDomain.getApplicationContext();
+
+		return subscriptionDomainBean;
+	}
 
     private static List<PropertyBean> getPropertyBeans (Properties properties) {
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
index 5cadb9a..a20dd8f 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/MockContext.java
@@ -21,16 +21,19 @@ package org.apache.stratos.rest.endpoint.mock;
 import org.apache.stratos.common.beans.TenantInfoBean;
 import org.apache.stratos.manager.dto.Cartridge;
 import org.apache.stratos.manager.dto.SubscriptionInfo;
+import org.apache.stratos.manager.subscription.SubscriptionDomain;
 import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean;
 import org.apache.stratos.rest.endpoint.bean.StratosAdminResponse;
+import org.apache.stratos.rest.endpoint.bean.SubscriptionDomainRequest;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.ServiceDefinitionBean;
-import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomain;
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
 import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
+import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 
 import java.util.*;
@@ -392,7 +395,7 @@ public class MockContext {
         return deploymentPolicyMap.values().toArray(new DeploymentPolicy[0]);
     }
 
-	public StratosAdminResponse addSubscriptionDomain(int tenantId, String alias, String domainName, String applicationContext) {
+	public StratosAdminResponse addSubscriptionDomains(int tenantId, String alias, SubscriptionDomainRequest request) {
 		// populate new alias
 		List<String> aliasList;
 		if(tenantIdToAliasesMap.containsKey(tenantId)) {
@@ -410,33 +413,36 @@ public class MockContext {
 		} else {
 			list = new ArrayList<SubscriptionDomain>();
 		}
-		SubscriptionDomain subscriptionDomain = new SubscriptionDomain();
-		subscriptionDomain.domainName = domainName;
-		subscriptionDomain.applicationContext = applicationContext;
-		list.add(subscriptionDomain);
+		for (org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean bean : request.domains) {
+			
+			SubscriptionDomain subscriptionDomain = new SubscriptionDomain(bean.domainName, bean.applicationContext);
+			list.add(subscriptionDomain);
+		}
+		
 		subscriptionAliasToDomainMap.put(alias, list);
 		
 		StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
-        stratosAdminResponse.setMessage("Successfully added subscription domain: "+domainName);
+        stratosAdminResponse.setMessage("Successfully added subscription domain/s.");
         return stratosAdminResponse;
 	}
 
-	public List<SubscriptionDomain> getSubscriptionDomains(int tenantId, String alias) {
+	public List<SubscriptionDomainBean> getSubscriptionDomains(int tenantId, String alias) {
 		List<String> tenantAliases = tenantIdToAliasesMap.get(tenantId);
 		if(tenantAliases != null && tenantAliases.contains(alias)) {
 			
-			return subscriptionAliasToDomainMap.get(alias);
+			return PojoConverter.populateSubscriptionDomainPojos(subscriptionAliasToDomainMap.get(alias));
 		}
-        return new ArrayList<SubscriptionDomain>();
+        return new ArrayList<SubscriptionDomainBean>();
 	}
 
-	public SubscriptionDomain getSubscriptionDomain(int tenantId, String cartridgeType,
+	public SubscriptionDomainBean getSubscriptionDomain(int tenantId, String cartridgeType,
 			String subscriptionAlias, String domainName) throws RestAPIException {
 		List<String> tenantAliases = tenantIdToAliasesMap.get(tenantId);
 		if(tenantAliases != null && tenantAliases.contains(subscriptionAlias)) {
 			for (SubscriptionDomain subscriptionDomain : subscriptionAliasToDomainMap.get(subscriptionAlias)) {
-				if(subscriptionDomain.domainName.equals(domainName)) {
-					return subscriptionDomain;
+				if(subscriptionDomain.getDomainName().equals(domainName)) {
+					
+					return PojoConverter.populateSubscriptionDomainPojo(subscriptionDomain);
 				}
 			}
 		}
@@ -456,7 +462,7 @@ public class MockContext {
 			for (Iterator<SubscriptionDomain> iterator = subscriptionAliasToDomainMap.get(subscriptionAlias).iterator(); iterator
 					.hasNext();) {
 				SubscriptionDomain subscriptionDomain = (SubscriptionDomain) iterator.next();
-				if (subscriptionDomain.domainName.equals(domainName)) {
+				if (subscriptionDomain.getDomainName().equals(domainName)) {
 					iterator.remove();
 					stratosAdminResponse.setMessage("Successfully removed the subscription domain: "+domainName);
 				}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
index 3f16039..34793b2 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/mock/StratosTestAdmin.java
@@ -25,6 +25,7 @@ import org.apache.stratos.common.beans.TenantInfoBean;
 import org.apache.stratos.manager.dto.Cartridge;
 import org.apache.stratos.manager.dto.SubscriptionInfo;
 import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.subscription.SubscriptionDomain;
 import org.apache.stratos.rest.endpoint.Utils;
 import org.apache.stratos.rest.endpoint.annotation.AuthorizationAction;
 import org.apache.stratos.rest.endpoint.annotation.SuperTenantService;
@@ -37,7 +38,7 @@ import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.Autosca
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.DeploymentPolicy;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.ServiceDefinitionBean;
-import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomain;
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
 import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 import org.apache.stratos.rest.endpoint.services.ServiceUtils;
@@ -478,38 +479,38 @@ public class StratosTestAdmin {
     }
 
     @POST
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public StratosAdminResponse addSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
+    public StratosAdminResponse addSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
                                                       @PathParam("subscriptionAlias") String subscriptionAlias,
                                                       SubscriptionDomainRequest request) throws RestAPIException {
 
-        return MockContext.getInstance().addSubscriptionDomain(2, subscriptionAlias, request.getDomainName(), request.getApplicationContext());
+        return MockContext.getInstance().addSubscriptionDomains(2, subscriptionAlias, request);
     }
 
     @GET
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public SubscriptionDomain[] getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
+    public SubscriptionDomainBean[] getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
                                            @PathParam("subscriptionAlias") String subscriptionAlias) throws RestAPIException {
 
-        return MockContext.getInstance().getSubscriptionDomains(2, subscriptionAlias).toArray(new SubscriptionDomain[0]);
+        return MockContext.getInstance().getSubscriptionDomains(2, subscriptionAlias).toArray(new SubscriptionDomainBean[0]);
     }
 
     @GET
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/{domainName}")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public SubscriptionDomain getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
+    public SubscriptionDomainBean getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
             @PathParam("subscriptionAlias") String subscriptionAlias, @PathParam("domainName") String domainName) throws RestAPIException {
 
         return MockContext.getInstance().getSubscriptionDomain(2, cartridgeType, subscriptionAlias, domainName);
     }
 
     @DELETE
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/{domainName}")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
     public StratosAdminResponse removeSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/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 f7b70f6..b602ec6 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
@@ -55,12 +55,14 @@ import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 import org.apache.stratos.messaging.util.Constants;
 import org.apache.stratos.rest.endpoint.bean.CartridgeInfoBean;
 import org.apache.stratos.rest.endpoint.bean.StratosAdminResponse;
+import org.apache.stratos.rest.endpoint.bean.SubscriptionDomainRequest;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.Partition;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.partition.PartitionGroup;
 import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.autoscale.AutoscalePolicy;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.ServiceDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Payload;
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
 import org.apache.stratos.rest.endpoint.bean.util.converter.PojoConverter;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 
@@ -1188,11 +1190,17 @@ public class ServiceUtils {
         return stratosAdminResponse;
     }
 
-    public static StratosAdminResponse addSubscriptionDomain(ConfigurationContext configurationContext, String cartridgeType,
-                                                             String subscriptionAlias, String domainName, String applicationContext) throws RestAPIException {
+    public static StratosAdminResponse addSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType,
+                                                             String subscriptionAlias, 
+                                                             SubscriptionDomainRequest request) 
+                                                            		 throws RestAPIException {
         try {
             int tenantId = ApplicationManagementUtil.getTenantId(configurationContext);
-            cartridgeSubsciptionManager.addSubscriptionDomain(tenantId, subscriptionAlias, domainName, applicationContext);
+            for (org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean subscriptionDomain : request.domains) {
+				
+            	cartridgeSubsciptionManager.addSubscriptionDomain(tenantId, subscriptionAlias, 
+            			subscriptionDomain.domainName, subscriptionDomain.applicationContext);
+			}
         } catch (Exception e) {
             log.error(e.getMessage(), e);
             throw new RestAPIException(e.getMessage(), e);
@@ -1203,24 +1211,24 @@ public class ServiceUtils {
         return stratosAdminResponse;
     }
 
-    public static List<SubscriptionDomain> getSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType,
+    public static List<SubscriptionDomainBean> getSubscriptionDomains(ConfigurationContext configurationContext, String cartridgeType,
                                                       String subscriptionAlias) throws RestAPIException {
         try {
             int tenantId = ApplicationManagementUtil.getTenantId(configurationContext);
-            return cartridgeSubsciptionManager.getSubscriptionDomains(tenantId, subscriptionAlias);
+            return PojoConverter.populateSubscriptionDomainPojos(cartridgeSubsciptionManager.getSubscriptionDomains(tenantId, subscriptionAlias));
         } catch (Exception e) {
             log.error(e.getMessage(), e);
             throw new RestAPIException(e.getMessage(), e);
         }
     }
     
-	public static SubscriptionDomain getSubscriptionDomain(ConfigurationContext configurationContext, String cartridgeType,
+	public static SubscriptionDomainBean getSubscriptionDomain(ConfigurationContext configurationContext, String cartridgeType,
 			String subscriptionAlias, String domain) throws RestAPIException {
 		try {
 			int tenantId = ApplicationManagementUtil
 					.getTenantId(configurationContext);
-			SubscriptionDomain subscriptionDomain = cartridgeSubsciptionManager.getSubscriptionDomain(tenantId,
-					subscriptionAlias, domain);
+			SubscriptionDomainBean subscriptionDomain = PojoConverter.populateSubscriptionDomainPojo(cartridgeSubsciptionManager.getSubscriptionDomain(tenantId,
+					subscriptionAlias, domain));
 			
 			if (subscriptionDomain == null) {
 				String message = "Could not find a subscription [domain] "+domain+ " for Cartridge [type] "

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/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 5b39030..b766ffa 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
@@ -42,6 +42,7 @@ import org.apache.stratos.rest.endpoint.bean.autoscaler.policy.deployment.Deploy
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.CartridgeDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.cartridge.definition.ServiceDefinitionBean;
 import org.apache.stratos.rest.endpoint.bean.repositoryNotificationInfoBean.Payload;
+import org.apache.stratos.rest.endpoint.bean.subscription.domain.SubscriptionDomainBean;
 import org.apache.stratos.rest.endpoint.bean.topology.Cluster;
 import org.apache.stratos.rest.endpoint.exception.RestAPIException;
 import org.apache.stratos.tenant.mgt.core.TenantPersistor;
@@ -1021,38 +1022,38 @@ public class StratosAdmin extends AbstractAdmin {
     }
 
     @POST
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public StratosAdminResponse addSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
+    public StratosAdminResponse addSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
                                                       @PathParam("subscriptionAlias") String subscriptionAlias,
                                                       SubscriptionDomainRequest request) throws RestAPIException {
 
-        return ServiceUtils.addSubscriptionDomain(getConfigContext(), cartridgeType, subscriptionAlias, request.getDomainName(), request.getApplicationContext());
+        return ServiceUtils.addSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias, request);
     }
 
     @GET
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public SubscriptionDomain[] getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
+    public SubscriptionDomainBean[] getSubscriptionDomains(@PathParam("cartridgeType") String cartridgeType,
                                            @PathParam("subscriptionAlias") String subscriptionAlias) throws RestAPIException {
 
-        return ServiceUtils.getSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias).toArray(new SubscriptionDomain[0]);
+        return ServiceUtils.getSubscriptionDomains(getConfigContext(), cartridgeType, subscriptionAlias).toArray(new SubscriptionDomainBean[0]);
     }
 
     @GET
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/{domainName}")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
-    public SubscriptionDomain getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
+    public SubscriptionDomainBean getSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,
             @PathParam("subscriptionAlias") String subscriptionAlias, @PathParam("domainName") String domainName) throws RestAPIException {
 
         return ServiceUtils.getSubscriptionDomain(getConfigContext(), cartridgeType, subscriptionAlias, domainName);
     }
 
     @DELETE
-    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domain/{domainName}")
+    @Path("/cartridge/{cartridgeType}/subscription/{subscriptionAlias}/domains/{domainName}")
     @Consumes("application/json")
     @AuthorizationAction("/permission/protected/manage/monitor/tenants")
     public StratosAdminResponse removeSubscriptionDomain(@PathParam("cartridgeType") String cartridgeType,

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
index fe09947..e6fd796 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos-test/WEB-INF/schemas/schema.xsd
@@ -205,12 +205,18 @@
     <xs:element name="subscriptionDomainRequest">
         <xs:complexType>
             <xs:sequence>
-                <xs:element name="domainName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
-                <xs:element name="applicationContext" minOccurs="0" maxOccurs="1" nillable="true"/>
+                <xs:element name="domains" type="subscriptionDomain" minOccurs="1" maxOccurs="unbounded" nillable="false"/>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
 
+    <xs:complexType name="subscriptionDomain">
+        <xs:all>
+		<xs:element name="domainName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
+                <xs:element name="applicationContext" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
+        </xs:all>
+    </xs:complexType>
+
     <xs:complexType name="thresholdValues">
         <xs:all>
             <xs:element name="average" type="xs:int" minOccurs="1" maxOccurs="1"/>

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/1ff07c62/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
index 1a4947d..f59bf28 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
+++ b/components/org.apache.stratos.rest.endpoint/src/main/webapp/stratos/WEB-INF/schemas/schema.xsd
@@ -205,12 +205,18 @@
     <xs:element name="subscriptionDomainRequest">
         <xs:complexType>
             <xs:sequence>
-                <xs:element name="domainName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
-                <xs:element name="applicationContext" minOccurs="0" maxOccurs="1" nillable="true"/>
+                <xs:element name="domains" type="subscriptionDomain" minOccurs="1" maxOccurs="unbounded" nillable="false"/>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
 
+    <xs:complexType name="subscriptionDomain">
+        <xs:all>
+                <xs:element name="domainName" type="xs:string" minOccurs="1" maxOccurs="1" nillable="false"/>
+                <xs:element name="applicationContext" type="xs:string" minOccurs="0" maxOccurs="1" nillable="true"/>
+        </xs:all>
+    </xs:complexType>
+
     <xs:complexType name="thresholdValues">
         <xs:all>
             <xs:element name="average" type="xs:int" minOccurs="1" maxOccurs="1"/>