You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/12/14 22:48:13 UTC

[2/5] subscription and payload models to provide support for service deploying

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
index ecacc37..8e7d245 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/ApplicationCartridgeSubscription.java
@@ -19,15 +19,9 @@
 
 package org.apache.stratos.adc.mgt.subscription;
 
-import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
-import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
 import org.apache.stratos.adc.mgt.repository.Repository;
-import org.apache.stratos.adc.mgt.subscriber.Subscriber;
 import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
-import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
-import org.apache.stratos.cloud.controller.pojo.Properties;
 
 public class ApplicationCartridgeSubscription extends CartridgeSubscription {
 
@@ -37,35 +31,14 @@ public class ApplicationCartridgeSubscription extends CartridgeSubscription {
     /**
      * Constructor
      *
-     * @param cartridgeInfo CartridgeInfo subscription
+     * @param cartridgeInfo CartridgeInfo instance
+     * @param subscriptionTenancyBehaviour SubscriptionTenancyBehaviour instance
      */
-    public ApplicationCartridgeSubscription(CartridgeInfo cartridgeInfo, boolean isServiceDeployment) {
-        super(cartridgeInfo, isServiceDeployment);
+    public ApplicationCartridgeSubscription(CartridgeInfo cartridgeInfo, SubscriptionTenancyBehaviour
+            subscriptionTenancyBehaviour) {
+        super(cartridgeInfo, subscriptionTenancyBehaviour);
     }
 
-    public void createSubscription(Subscriber subscriber, String alias, String autoscalingPolicyName,
-                                   String deploymentPolicyName, Repository repository) throws
-            InvalidCartridgeAliasException, DuplicateCartridgeAliasException, ADCException,
-            RepositoryCredentialsRequiredException, RepositoryTransportException, UnregisteredCartridgeException,
-            AlreadySubscribedException, RepositoryRequiredException, InvalidRepositoryException, PolicyException {
-
-        super.createSubscription(subscriber, alias, autoscalingPolicyName, deploymentPolicyName, repository);
-        subscriptionTenancyBehaviour.createSubscription();
-    }
-
-    @Override
-    public CartridgeSubscriptionInfo registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException {
-
-        Properties props = new Properties();
-        props.setProperties(getCartridgeInfo().getProperties());
-        
-        subscriptionTenancyBehaviour.registerSubscription(props);
-
-        return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(),
-                getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
-                getRepository(), getCluster().getHostName(), getCluster().getClusterDomain(), getCluster().getClusterSubDomain(),
-                getCluster().getMgtClusterDomain(), getCluster().getMgtClusterSubDomain(), null, "PENDING", getSubscriptionKey());
-    }
 
     public Repository manageRepository (String repoURL, String repoUserName, String repoUserPassword,
                                         boolean privateRepo, String cartridgeAlias, CartridgeInfo cartridgeInfo,
@@ -74,19 +47,4 @@ public class ApplicationCartridgeSubscription extends CartridgeSubscription {
         //no repository for application cartridge instances
         return null;
     }
-
-    @Override
-    public void removeSubscription() throws ADCException, NotSubscribedException {
-
-        subscriptionTenancyBehaviour.removeSubscription();
-        super.cleanupSubscription();
-    }
-
-    public PayloadArg createPayloadParameters () throws ADCException {
-
-        PayloadArg payloadArg = super.createPayloadParameters();
-        return subscriptionTenancyBehaviour.createPayloadParameters(payloadArg);
-    }
-
-	
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
index fb08da3..c476f09 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
@@ -27,23 +27,20 @@ import org.apache.stratos.adc.mgt.dao.Cluster;
 import org.apache.stratos.adc.mgt.dns.DNSManager;
 import org.apache.stratos.adc.mgt.exception.*;
 import org.apache.stratos.adc.mgt.internal.DataHolder;
-import org.apache.stratos.adc.mgt.payload.Payload;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.payload.PayloadData;
 import org.apache.stratos.adc.mgt.repository.Repository;
-import org.apache.stratos.adc.mgt.service.RepositoryInfoBean;
 import org.apache.stratos.adc.mgt.subscriber.Subscriber;
-import org.apache.stratos.adc.mgt.subscription.tenancy.ServiceDeploymentMultiTenantBehaviour;
-import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionMultiTenantBehaviour;
-import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionSingleTenantBehaviour;
 import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
-import org.apache.stratos.adc.mgt.utils.*;
+import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
+import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+import org.apache.stratos.adc.mgt.utils.PersistenceManager;
+import org.apache.stratos.adc.mgt.utils.RepositoryFactory;
 import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 import org.apache.stratos.cloud.controller.pojo.Properties;
 
 import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
+import java.util.Map;
 
 public abstract class CartridgeSubscription implements Serializable {
 
@@ -58,23 +55,23 @@ public abstract class CartridgeSubscription implements Serializable {
     private Subscriber subscriber;
     private Repository repository;
     private CartridgeInfo cartridgeInfo;
-    private Payload payload;
+    private PayloadData payloadData;
     private Cluster cluster;
-    private String subscriptionStatus;
-    private String serviceStatus;
+    //private String subscriptionStatus;
+    //private String serviceStatus;
     private String mappedDomain;
-    private List<String> connectedSubscriptionAliases;
+    //private List<String> connectedSubscriptionAliases;
     private String subscriptionKey;
-    protected SubscriptionTenancyBehaviour subscriptionTenancyBehaviour;
+    private SubscriptionTenancyBehaviour subscriptionTenancyBehaviour;
 
     
     /**
      * Constructor
      *
-     * @param cartridgeInfo CartridgeInfo subscription
+     * @param cartridgeInfo CartridgeInfo instance
+     * @param subscriptionTenancyBehaviour SubscriptionTenancyBehaviour instance
      */
-    // TODO - temp fix to identify service deployment
-    public CartridgeSubscription(CartridgeInfo cartridgeInfo, boolean isServiceDeployment) {
+    public CartridgeSubscription(CartridgeInfo cartridgeInfo, SubscriptionTenancyBehaviour subscriptionTenancyBehaviour) {
 
         this.setCartridgeInfo(cartridgeInfo);
         this.setType(cartridgeInfo.getType());
@@ -84,16 +81,9 @@ public abstract class CartridgeSubscription implements Serializable {
         getCluster().setMgtClusterDomain("");
         getCluster().setMgtClusterSubDomain(CartridgeConstants.DEFAULT_MGT_SUBDOMAIN);
         getCluster().setHostName(cartridgeInfo.getHostName());
-        this.setSubscriptionStatus(CartridgeConstants.SUBSCRIBED);
-        this.connectedSubscriptionAliases = new ArrayList<String>();
-        boolean isMultiTenant = getCartridgeInfo().getMultiTenant();
-        if(isServiceDeployment) {
-        	subscriptionTenancyBehaviour = new ServiceDeploymentMultiTenantBehaviour(this);
-        } else if(isMultiTenant) {
-            subscriptionTenancyBehaviour = new SubscriptionMultiTenantBehaviour(this);
-        } else {
-            subscriptionTenancyBehaviour = new SubscriptionSingleTenantBehaviour(this);
-        } 
+        //this.setSubscriptionStatus(CartridgeConstants.SUBSCRIBED);
+        //this.connectedSubscriptionAliases = new ArrayList<String>();
+        this.setSubscriptionTenancyBehaviour(subscriptionTenancyBehaviour);
     }
 
     /**
@@ -122,14 +112,12 @@ public abstract class CartridgeSubscription implements Serializable {
             DuplicateCartridgeAliasException, RepositoryRequiredException, AlreadySubscribedException,
             RepositoryCredentialsRequiredException, InvalidRepositoryException, RepositoryTransportException {
 
-    	log.info(" ---- in super type cartridge subscription --");
         setSubscriber(subscriber);
         setAlias(alias);
         setAutoscalingPolicyName(autoscalingPolicy);
         setDeploymentPolicyName(deploymentPolicyName);
         setRepository(repository);
-        // TODOOO... remove followig
-        //subscriptionTenancyBehaviour.createSubscription(this);
+        getSubscriptionTenancyBehaviour().createSubscription(this);
     }
 
     /**
@@ -138,7 +126,11 @@ public abstract class CartridgeSubscription implements Serializable {
      * @throws ADCException
      * @throws NotSubscribedException
      */
-    public abstract void removeSubscription() throws ADCException, NotSubscribedException;
+    public void removeSubscription() throws ADCException, NotSubscribedException {
+
+        getSubscriptionTenancyBehaviour().removeSubscription(this);
+        cleanupSubscription();
+    }
 
     /**
      * Registers the subscription
@@ -149,8 +141,19 @@ public abstract class CartridgeSubscription implements Serializable {
      * @throws ADCException
      * @throws UnregisteredCartridgeException
      */
-    public abstract CartridgeSubscriptionInfo registerSubscription(Properties properties)
-            throws ADCException, UnregisteredCartridgeException;
+    public CartridgeSubscriptionInfo registerSubscription(Properties properties)
+            throws ADCException, UnregisteredCartridgeException {
+
+        Properties props = new Properties();
+        props.setProperties(getCartridgeInfo().getProperties());
+
+        getSubscriptionTenancyBehaviour().registerSubscription(this, props);
+
+        return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(),
+                getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
+                getRepository(), getCluster().getHostName(), getCluster().getClusterDomain(), getCluster().getClusterSubDomain(),
+                getCluster().getMgtClusterDomain(), getCluster().getMgtClusterSubDomain(), null, "PENDING", getSubscriptionKey());
+    }
 
     /**
      * Connect cartridges
@@ -158,7 +161,7 @@ public abstract class CartridgeSubscription implements Serializable {
      * @param connectingCartridgeAlias Alias of connecting cartridge
      */
     public void connect (String connectingCartridgeAlias) {
-        connectedSubscriptionAliases.add(connectingCartridgeAlias);
+        //connectedSubscriptionAliases.add(connectingCartridgeAlias);
     }
 
     /**
@@ -167,27 +170,7 @@ public abstract class CartridgeSubscription implements Serializable {
      * @param disconnectingCartridgeAlias Alias of the cartridge subscription to disconnect
      */
     public void disconnect (String disconnectingCartridgeAlias) {
-        connectedSubscriptionAliases.remove(disconnectingCartridgeAlias);
-    }
-
-    /**
-     * Creates the relevant payload parameters for this cartridge subscription
-     *
-     * @return PayloadArg subscription
-     * @throws ADCException in an errpr
-     */
-    public PayloadArg createPayloadParameters() throws ADCException {
-
-        PayloadArg payloadArg = new PayloadArg();
-        payloadArg.setCartridgeInfo(getCartridgeInfo());
-        //payloadArg.setPolicy(getAutoscalingPolicyName());
-        payloadArg.setMultitenant(getCartridgeInfo().getMultiTenant());
-        payloadArg.setTenantId(getSubscriber().getTenantId());
-        payloadArg.setTenantDomain(getSubscriber().getTenantDomain());
-        payloadArg.setCartridgeAlias(getAlias());
-        payloadArg.setServiceName(getCartridgeInfo().getType());
-        payloadArg.setSubscriptionKey(subscriptionKey);
-        return payloadArg;
+        //connectedSubscriptionAliases.remove(disconnectingCartridgeAlias);
     }
 
     /**
@@ -233,27 +216,7 @@ public abstract class CartridgeSubscription implements Serializable {
             repository.setPassword(repoUserPassword);
             repository.setPrivateRepository(privateRepo);
 
-        } 
-        // Commenting out, since internal git repos are no longer used
-        /*else {
-
-            log.info("External git repo url not provided for tenant "
-                    + tenantDomain + ", creating an git internal repository");
-
-            repository.setUserName(System.getProperty(CartridgeConstants.INTERNAL_GIT_USERNAME));
-            repository.setPassword(System.getProperty(CartridgeConstants.INTERNAL_GIT_PASSWORD));
-            try {
-                new RepositoryCreator(new RepositoryInfoBean(repoURL, cartridgeAlias, tenantDomain,
-                        repository.getUserName(), repository.getPassword(), cartridgeInfo.getDeploymentDirs(),
-                        cartridgeInfo)).createInternalRepository();
-
-            } catch (Exception e) {
-                throw new ADCException(e.getMessage(), e);
-            }
-            String repoName = tenantDomain + "/" + cartridgeAlias;
-            repository.setUrl("https://" + System.getProperty(CartridgeConstants.GIT_HOST_NAME) + ":8443/git/" +
-                    repoName);
-        }*/
+        }
 
         // Validate Remote Repository.
         ApplicationManagementUtil.validateRepository(repoURL, repoUserName, repoUserPassword, privateRepo,
@@ -311,7 +274,13 @@ public abstract class CartridgeSubscription implements Serializable {
             log.error(errorMsg, e);
         }
 
-        this.setSubscriptionStatus(CartridgeConstants.UNSUBSCRIBED);
+        //this.setSubscriptionStatus(CartridgeConstants.UNSUBSCRIBED);
+    }
+
+    public Map<String, String> getCustomPayloadEntries () {
+
+        //no custom payload entries by default
+        return null;
     }
 
     public String getType() {
@@ -330,9 +299,9 @@ public abstract class CartridgeSubscription implements Serializable {
         return repository;
     }
 
-    public List<String> getConnectedSubscriptionAliases() {
+    /*public List<String> getConnectedSubscriptionAliases() {
         return connectedSubscriptionAliases;
-    }
+    }*/
 
     public CartridgeInfo getCartridgeInfo() {
         return cartridgeInfo;
@@ -406,12 +375,12 @@ public abstract class CartridgeSubscription implements Serializable {
         this.cartridgeInfo = cartridgeInfo;
     }
 
-    public Payload getPayload() {
-        return payload;
+    public PayloadData getPayloadData() {
+        return payloadData;
     }
 
-    public void setPayload(Payload payload) {
-        this.payload = payload;
+    public void setPayloadData(PayloadData payloadData) {
+        this.payloadData = payloadData;
     }
 
     public int getSubscriptionId() {
@@ -430,13 +399,13 @@ public abstract class CartridgeSubscription implements Serializable {
         this.mappedDomain = mappedDomain;
     }
 
-    public String getSubscriptionStatus() {
+    /*public String getSubscriptionStatus() {
         return subscriptionStatus;
     }
 
     public void setSubscriptionStatus(String subscriptionStatus) {
         this.subscriptionStatus = subscriptionStatus;
-    }
+    }*/
 
     public String getSubscriptionKey() {
         return subscriptionKey;
@@ -462,11 +431,19 @@ public abstract class CartridgeSubscription implements Serializable {
         this.deploymentPolicyName = deploymentPolicyName;
     }
 
-    public String getServiceStatus() {
+    public SubscriptionTenancyBehaviour getSubscriptionTenancyBehaviour() {
+        return subscriptionTenancyBehaviour;
+    }
+
+    public void setSubscriptionTenancyBehaviour(SubscriptionTenancyBehaviour subscriptionTenancyBehaviour) {
+        this.subscriptionTenancyBehaviour = subscriptionTenancyBehaviour;
+    }
+
+    /*public String getServiceStatus() {
         return serviceStatus;
     }
 
     public void setServiceStatus(String serviceStatus) {
         this.serviceStatus = serviceStatus;
-    }
+    }*/
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription_old.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription_old.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription_old.java
index b6b0deb..47c2388 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription_old.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription_old.java
@@ -380,11 +380,11 @@
 //        this.cartridgeInfo = cartridgeInfo;
 //    }
 //
-//    public Payload getPayload() {
+//    public Payload getPayloadData() {
 //        return payload;
 //    }
 //
-//    public void setPayload(Payload payload) {
+//    public void setPayloadData(Payload payload) {
 //        this.payload = payload;
 //    }
 //

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
index f068129..53b7ae6 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription.java
@@ -21,16 +21,17 @@ package org.apache.stratos.adc.mgt.subscription;
 
 import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
 import org.apache.stratos.adc.mgt.dao.DataCartridge;
-import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
+import org.apache.stratos.adc.mgt.exception.ADCException;
+import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
 import org.apache.stratos.adc.mgt.repository.Repository;
-import org.apache.stratos.adc.mgt.subscriber.Subscriber;
 import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
 import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 import org.apache.stratos.cloud.controller.pojo.Properties;
 
+import java.util.HashMap;
+import java.util.Map;
+
 public class DataCartridgeSubscription extends CartridgeSubscription {
 
     private String host;
@@ -40,37 +41,16 @@ public class DataCartridgeSubscription extends CartridgeSubscription {
     /**
      * Constructor
      *
-     * @param cartridgeInfo CartridgeInfo subscription
+     * @param cartridgeInfo CartridgeInfo instance
+     * @param subscriptionTenancyBehaviour SubscriptionTenancyBehaviour instance
      */
-    public DataCartridgeSubscription(CartridgeInfo cartridgeInfo, boolean isServiceDeployment) {
+    public DataCartridgeSubscription(CartridgeInfo cartridgeInfo, SubscriptionTenancyBehaviour
+            subscriptionTenancyBehaviour) {
 
-        super(cartridgeInfo, isServiceDeployment);
-        this.setHost("localhost");
-        this.setUsername(CartridgeConstants.MYSQL_DEFAULT_USER);
-        this.setPassword(ApplicationManagementUtil.generatePassword());
-    }
-
-    @Override
-    public void createSubscription(Subscriber subscriber, String alias, String autoscalingPolicyName, String deploymentPolicyName,
-                                   Repository repository)
-
-            throws InvalidCartridgeAliasException,
-            DuplicateCartridgeAliasException, ADCException, RepositoryCredentialsRequiredException,
-            RepositoryTransportException, UnregisteredCartridgeException, AlreadySubscribedException,
-            RepositoryRequiredException, InvalidRepositoryException, PolicyException {
-
-        super.createSubscription(subscriber, alias, autoscalingPolicyName, deploymentPolicyName, repository);
-        subscriptionTenancyBehaviour.createSubscription();
-    }
-
-    public PayloadArg createPayloadParameters() throws ADCException {
-
-        PayloadArg payloadArg = super.createPayloadParameters();
-        payloadArg.setDataCartridgeHost(this.getHost());
-        payloadArg.setDataCartridgeAdminUser(getUsername());
-        payloadArg.setDataCartridgeAdminPassword(getPassword());
-
-        return subscriptionTenancyBehaviour.createPayloadParameters(payloadArg);
+        super(cartridgeInfo, subscriptionTenancyBehaviour);
+        setHost("localhost");
+        setUsername("root");
+        setPassword("root");
     }
 
     @Override
@@ -79,9 +59,7 @@ public class DataCartridgeSubscription extends CartridgeSubscription {
 
         Properties props = new Properties();
         props.setProperties(getCartridgeInfo().getProperties());
-        //subscriptionTenancyBehaviour.registerSubscription(ApplicationManagementUtil.
-        //        setRegisterServiceProperties(getAutoscalingPolicyName(), getSubscriber().getTenantId(), getAlias()));
-        subscriptionTenancyBehaviour.registerSubscription(props);
+        getSubscriptionTenancyBehaviour().registerSubscription(this, props);
 
         DataCartridge dataCartridge = new DataCartridge();
         dataCartridge.setUserName(getUsername());
@@ -103,10 +81,14 @@ public class DataCartridgeSubscription extends CartridgeSubscription {
     }
 
     @Override
-    public void removeSubscription() throws ADCException, NotSubscribedException {
+    public Map<String, String> getCustomPayloadEntries() {
+
+        Map<String, String> payloadEntriesMap = new HashMap<String, String>();
+        payloadEntriesMap.put("MYSQL_HOST", host);
+        payloadEntriesMap.put("MYSQL_USER", username);
+        payloadEntriesMap.put("MYSQL_PASSWORD", password);
 
-        subscriptionTenancyBehaviour.removeSubscription();
-        super.cleanupSubscription();
+        return payloadEntriesMap;
     }
 
     public String getHost() {

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription_old.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription_old.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription_old.java
index cd5f4dc..370988c 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription_old.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/DataCartridgeSubscription_old.java
@@ -81,13 +81,13 @@
 //        ApplicationManagementUtil.registerService(getType(),
 //                getCluster().getClusterDomain(),
 //                getCluster().getClusterSubDomain(),
-//                getPayload().createPayload(),
-//                getPayload().getPayloadArg().getTenantRange(),
+//                getPayloadData().createPayload(),
+//                getPayloadData().getPayloadArg().getTenantRange(),
 //                getCluster().getHostName(),
 //                ApplicationManagementUtil.setRegisterServiceProperties(getAutoscalingPolicyName(),
 //                        getSubscriber().getTenantId(), getAlias()));
 //
-//        getPayload().delete();
+//        getPayloadData().delete();
 //
 //        DataCartridge dataCartridge = new DataCartridge();
 //        dataCartridge.setUserName(getUsername());

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/FrameworkCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/FrameworkCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/FrameworkCartridgeSubscription.java
index 33a2d84..d469952 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/FrameworkCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/FrameworkCartridgeSubscription.java
@@ -21,15 +21,8 @@ package org.apache.stratos.adc.mgt.subscription;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.adc.mgt.dao.CartridgeSubscriptionInfo;
-import org.apache.stratos.adc.mgt.exception.*;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
-import org.apache.stratos.adc.mgt.repository.Repository;
-import org.apache.stratos.adc.mgt.subscriber.Subscriber;
 import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
-import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
-import org.apache.stratos.cloud.controller.pojo.Properties;
 
 
 public class FrameworkCartridgeSubscription extends CartridgeSubscription {
@@ -37,52 +30,14 @@ public class FrameworkCartridgeSubscription extends CartridgeSubscription {
 	private static Log log = LogFactory.getLog(FrameworkCartridgeSubscription.class);
     private static final long serialVersionUID = 1633832232416272756L;
 
-    
     /**
      * Constructor
      *
-     * @param cartridgeInfo CartridgeInfo subscription
+     * @param cartridgeInfo CartridgeInfo instance
+     * @param subscriptionTenancyBehaviour SubscriptionTenancyBehaviour instance
      */
-    public FrameworkCartridgeSubscription(CartridgeInfo cartridgeInfo, boolean isServiceDeployment) {
-        super(cartridgeInfo, isServiceDeployment);
-    }
-
-    @Override
-    public void createSubscription(Subscriber subscriber, String alias, String autoscalingPolicyName,
-                                   String deploymentPolicyName, Repository repository) throws
-            InvalidCartridgeAliasException, DuplicateCartridgeAliasException, ADCException,
-            RepositoryCredentialsRequiredException, RepositoryTransportException, UnregisteredCartridgeException,
-            AlreadySubscribedException, RepositoryRequiredException, InvalidRepositoryException, PolicyException {
-
-    	log.info(" -- in create Subscription ---");
-        super.createSubscription(subscriber, alias, autoscalingPolicyName, deploymentPolicyName, repository);
-        subscriptionTenancyBehaviour.createSubscription();
-    }
-
-    @Override
-    public CartridgeSubscriptionInfo registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException {
-
-        Properties props = new Properties();
-        props.setProperties(getCartridgeInfo().getProperties());
-        
-        subscriptionTenancyBehaviour.registerSubscription(props);
-
-        return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(),
-                getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),
-                getRepository(), getCluster().getHostName(), getCluster().getClusterDomain(), getCluster().getClusterSubDomain(),
-                getCluster().getMgtClusterDomain(), getCluster().getMgtClusterSubDomain(), null, "PENDING", getSubscriptionKey());
-    }
-
-    @Override
-    public void removeSubscription() throws ADCException, NotSubscribedException {
-
-        subscriptionTenancyBehaviour.removeSubscription();
-        super.cleanupSubscription();
-    }
-
-    public PayloadArg createPayloadParameters () throws ADCException {
-
-        PayloadArg payloadArg = super.createPayloadParameters();
-        return subscriptionTenancyBehaviour.createPayloadParameters(payloadArg);
+    public FrameworkCartridgeSubscription(CartridgeInfo cartridgeInfo, SubscriptionTenancyBehaviour
+            subscriptionTenancyBehaviour) {
+        super(cartridgeInfo, subscriptionTenancyBehaviour);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/LBCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/LBCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/LBCartridgeSubscription.java
index f2f69ae..48121de 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/LBCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/LBCartridgeSubscription.java
@@ -32,10 +32,12 @@ public class LBCartridgeSubscription extends CartridgeSubscription {
     /**
      * Constructor
      *
-     * @param cartridgeInfo CartridgeInfo subscription
+     * @param cartridgeInfo CartridgeInfo instance
+     * @param subscriptionTenancyBehaviour SubscriptionTenancyBehaviour instance
      */
-    public LBCartridgeSubscription(CartridgeInfo cartridgeInfo, boolean isServiceDeployment) {
-        super(cartridgeInfo, isServiceDeployment);
+    public LBCartridgeSubscription(CartridgeInfo cartridgeInfo, SubscriptionTenancyBehaviour
+            subscriptionTenancyBehaviour) {
+        super(cartridgeInfo, subscriptionTenancyBehaviour);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/SingleTenantCartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/SingleTenantCartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/SingleTenantCartridgeSubscription.java
index 6137c70..027fe1e 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/SingleTenantCartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/SingleTenantCartridgeSubscription.java
@@ -63,12 +63,12 @@
 //        ApplicationManagementUtil.registerService(getType(),
 //                getCluster().getClusterDomain(),
 //                getCluster().getClusterSubDomain(),
-//                getPayload().createPayload(),
-//                getPayload().getPayloadArg().getTenantRange(),
+//                getPayloadData().createPayload(),
+//                getPayloadData().getPayloadArg().getTenantRange(),
 //                getCluster().getHostName(),
 //                null);
 //
-//        getPayload().delete();
+//        getPayloadData().delete();
 //
 //        return ApplicationManagementUtil.createCartridgeSubscription(getCartridgeInfo(), getAutoscalingPolicyName(),
 //                getType(), getAlias(), getSubscriber().getTenantId(), getSubscriber().getTenantDomain(),

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/factory/CartridgeSubscriptionFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/factory/CartridgeSubscriptionFactory.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/factory/CartridgeSubscriptionFactory.java
index b6f0202..87a6fd5 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/factory/CartridgeSubscriptionFactory.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/factory/CartridgeSubscriptionFactory.java
@@ -21,6 +21,7 @@ package org.apache.stratos.adc.mgt.subscription.factory;
 
 import org.apache.stratos.adc.mgt.exception.ADCException;
 import org.apache.stratos.adc.mgt.subscription.*;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
 import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 
@@ -59,21 +60,22 @@ public class CartridgeSubscriptionFactory {
         return cartridgeSubscription;
     }*/
 
-    public static CartridgeSubscription getCartridgeSubscriptionInstance(CartridgeInfo cartridgeInfo)
+    public static CartridgeSubscription getCartridgeSubscriptionInstance(CartridgeInfo cartridgeInfo,
+                                                                         SubscriptionTenancyBehaviour subscriptionTenancyBehaviour)
             throws ADCException {
 
         //TODO: fix the logic properly
         CartridgeSubscription cartridgeSubscription = null;
         if(cartridgeInfo.getMultiTenant()) {
-            cartridgeSubscription = new FrameworkCartridgeSubscription(cartridgeInfo, false);
+            cartridgeSubscription = new FrameworkCartridgeSubscription(cartridgeInfo, subscriptionTenancyBehaviour);
 
         } else {
             if(cartridgeInfo.getProvider().equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER)) {
-                cartridgeSubscription = new DataCartridgeSubscription(cartridgeInfo, false);
+                cartridgeSubscription = new DataCartridgeSubscription(cartridgeInfo, subscriptionTenancyBehaviour);
             }
             else {
                 //cartridgeSubscription = new SingleTenantCartridgeSubscription(cartridgeInfo);
-                cartridgeSubscription = new FrameworkCartridgeSubscription(cartridgeInfo, false);
+                cartridgeSubscription = new FrameworkCartridgeSubscription(cartridgeInfo, subscriptionTenancyBehaviour);
             }
         }
 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java
index 77ced4e..ae1c8f9 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/ServiceDeploymentMultiTenantBehaviour.java
@@ -1,121 +1,109 @@
-/*
- * 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.adc.mgt.subscription.tenancy;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.adc.mgt.exception.ADCException;
-import org.apache.stratos.adc.mgt.exception.AlreadySubscribedException;
-import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
-import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-import org.apache.stratos.adc.mgt.utils.PersistenceManager;
-import org.apache.stratos.cloud.controller.pojo.Properties;
-
-public class ServiceDeploymentMultiTenantBehaviour extends
-		SubscriptionMultiTenantBehaviour {
-
-	private static Log log = LogFactory.getLog(ServiceDeploymentMultiTenantBehaviour.class);
-	
-	public ServiceDeploymentMultiTenantBehaviour(
-			CartridgeSubscription cartridgeSubscription) {
-		super(cartridgeSubscription);
-	}
-	
-	@Override
-	public void createSubscription() throws ADCException,
-			AlreadySubscribedException {
-	
-		log.info(" --- in Service Deployment Multitenant Behaviour create subscription ---- ");
-		
-		boolean allowMultipleSubscription = Boolean.
-        valueOf(System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED));
-
-		if (!allowMultipleSubscription) {
-			// If the cartridge is multi-tenant. We should not let users
-			// createSubscription twice.
-			boolean subscribed;
-			try {
-				subscribed = PersistenceManager.isAlreadySubscribed(
-						cartridgeSubscription.getType(), cartridgeSubscription
-								.getSubscriber().getTenantId());
-			} catch (Exception e) {
-				String msg = "Error checking whether the cartridge type "
-						+ cartridgeSubscription.getType()
-						+ " is already subscribed";
-				log.error(msg, e);
-				throw new ADCException(msg, e);
-			}
-
-			if (subscribed) {
-				String msg = "Already subscribed to "
-						+ cartridgeSubscription.getType()
-						+ ". This multi-tenant cartridge will not be available to createSubscription";
-				if (log.isDebugEnabled()) {
-					log.debug(msg);
-				}
-				throw new AlreadySubscribedException(msg,
-						cartridgeSubscription.getType());
-			}
-		}
-	
-				/*if (domainContext.getSubDomain().equalsIgnoreCase("mgt")) {
-					cartridgeSubscription.getCluster().setMgtClusterDomain(
-							domainContext.getDomain());
-					cartridgeSubscription.getCluster().setMgtClusterSubDomain(
-							domainContext.getSubDomain());
-				} else {
-					cartridgeSubscription.getCluster().setClusterDomain(
-							domainContext.getDomain());
-					cartridgeSubscription.getCluster().setClusterSubDomain(
-							domainContext.getSubDomain());
-				}*/
-				
-	}
-	
-	
-	@Override
-	public void registerSubscription(Properties properties)
-			throws ADCException, UnregisteredCartridgeException {
-		
-		// register subscription to start up the cartridge instances
-		ApplicationManagementUtil.registerService(cartridgeSubscription.getType(),
-                cartridgeSubscription.getCluster().getClusterDomain(),
-                cartridgeSubscription.getCluster().getClusterSubDomain(),
-                cartridgeSubscription.getPayload().createPayload(),
-                cartridgeSubscription.getPayload().getPayloadArg().getTenantRange(),
-                cartridgeSubscription.getCluster().getHostName(),
-                cartridgeSubscription.getAutoscalingPolicyName(),
-                cartridgeSubscription.getDeploymentPolicyName(),
-                properties);
-		
-        cartridgeSubscription.getPayload().delete();
-	}
-	
-	@Override
-	public PayloadArg createPayloadParameters(PayloadArg payloadArg)
-			throws ADCException {
-				
-		return payloadArg;
-	}
-
-}
+///*
+// * 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.adc.mgt.subscription.tenancy;
+//
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.stratos.adc.mgt.exception.ADCException;
+//import org.apache.stratos.adc.mgt.exception.AlreadySubscribedException;
+//import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
+//import org.apache.stratos.adc.mgt.payload.PayloadArg;
+//import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+//import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
+//import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+//import org.apache.stratos.adc.mgt.utils.PersistenceManager;
+//import org.apache.stratos.cloud.controller.pojo.Properties;
+//
+//public class ServiceDeploymentMultiTenantBehaviour extends
+//		SubscriptionMultiTenantBehaviour {
+//
+//	private static Log log = LogFactory.getLog(ServiceDeploymentMultiTenantBehaviour.class);
+//
+//	@Override
+//	public void createSubscription() throws ADCException,
+//			AlreadySubscribedException {
+//
+//		log.info(" --- in Service Deployment Multitenant Behaviour create subscription ---- ");
+//
+//		boolean allowMultipleSubscription = Boolean.
+//        valueOf(System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED));
+//
+//		if (!allowMultipleSubscription) {
+//			// If the cartridge is multi-tenant. We should not let users
+//			// createSubscription twice.
+//			boolean subscribed;
+//			try {
+//				subscribed = PersistenceManager.isAlreadySubscribed(
+//						cartridgeSubscription.getType(), cartridgeSubscription
+//								.getSubscriber().getTenantId());
+//			} catch (Exception e) {
+//				String msg = "Error checking whether the cartridge type "
+//						+ cartridgeSubscription.getType()
+//						+ " is already subscribed";
+//				log.error(msg, e);
+//				throw new ADCException(msg, e);
+//			}
+//
+//			if (subscribed) {
+//				String msg = "Already subscribed to "
+//						+ cartridgeSubscription.getType()
+//						+ ". This multi-tenant cartridge will not be available to createSubscription";
+//				if (log.isDebugEnabled()) {
+//					log.debug(msg);
+//				}
+//				throw new AlreadySubscribedException(msg,
+//						cartridgeSubscription.getType());
+//			}
+//		}
+//
+//				/*if (domainContext.getSubDomain().equalsIgnoreCase("mgt")) {
+//					cartridgeSubscription.getCluster().setMgtClusterDomain(
+//							domainContext.getDomain());
+//					cartridgeSubscription.getCluster().setMgtClusterSubDomain(
+//							domainContext.getSubDomain());
+//				} else {
+//					cartridgeSubscription.getCluster().setClusterDomain(
+//							domainContext.getDomain());
+//					cartridgeSubscription.getCluster().setClusterSubDomain(
+//							domainContext.getSubDomain());
+//				}*/
+//
+//	}
+//
+//
+//	@Override
+//	public void registerSubscription(Properties properties)
+//			throws ADCException, UnregisteredCartridgeException {
+//
+//		// register subscription to start up the cartridge instances
+//		ApplicationManagementUtil.registerService(cartridgeSubscription.getType(),
+//                cartridgeSubscription.getCluster().getClusterDomain(),
+//                cartridgeSubscription.getCluster().getClusterSubDomain(),
+//                cartridgeSubscription.getPayloadData().createPayload(),
+//                cartridgeSubscription.getPayloadData().getPayloadArg().getTenantRange(),
+//                cartridgeSubscription.getCluster().getHostName(),
+//                cartridgeSubscription.getAutoscalingPolicyName(),
+//                cartridgeSubscription.getDeploymentPolicyName(),
+//                properties);
+//
+//        cartridgeSubscription.getPayloadData().delete();
+//    }
+//
+//}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionMultiTenantBehaviour.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionMultiTenantBehaviour.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionMultiTenantBehaviour.java
index 05244bd..46cfd93 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionMultiTenantBehaviour.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionMultiTenantBehaviour.java
@@ -25,24 +25,18 @@ import org.apache.stratos.adc.mgt.exception.ADCException;
 import org.apache.stratos.adc.mgt.exception.AlreadySubscribedException;
 import org.apache.stratos.adc.mgt.exception.NotSubscribedException;
 import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
 import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.adc.mgt.utils.PersistenceManager;
 import org.apache.stratos.cloud.controller.pojo.Properties;
-import org.apache.stratos.messaging.domain.topology.Service;
-import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
 
 
 public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehaviour {
 
     private static Log log = LogFactory.getLog(SubscriptionMultiTenantBehaviour.class);
 
-    public SubscriptionMultiTenantBehaviour(CartridgeSubscription cartridgeSubscription) {
-        super(cartridgeSubscription);
-    }
 
-    public void createSubscription() throws ADCException, AlreadySubscribedException {
+    public void createSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, AlreadySubscribedException {
 
         boolean allowMultipleSubscription = Boolean.
                 valueOf(System.getProperty(CartridgeConstants.FEATURE_MULTI_TENANT_MULTIPLE_SUBSCRIPTION_ENABLED));
@@ -54,8 +48,8 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio
                 subscribed = PersistenceManager.isAlreadySubscribed(cartridgeSubscription.getType(),
                         cartridgeSubscription.getSubscriber().getTenantId());
             } catch (Exception e) {
-                String msg = "Error checking whether the cartridge type " + cartridgeSubscription.getType()
-                        + " is already subscribed";
+                String msg = "Error checking whether the cartridge type " + cartridgeSubscription.getType() +
+                        " is already subscribed";
                 log.error(msg, e);
                 throw new ADCException(msg, e);
             }
@@ -70,33 +64,8 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio
             }
         }
 
-        /*TopologyManagementService topologyService = DataHolder.getTopologyMgtService();
-        DomainContext[] domainContexts = topologyService.getDomainsAndSubdomains(cartridgeSubscription.getType(),
-                cartridgeSubscription.getSubscriber().getTenantId());
-        log.info("Retrieved " + domainContexts.length + " domain and corresponding subdomain pairs");
-
-        if (domainContexts.length > 0) {
-            if(domainContexts.length > 2) {
-                if(log.isDebugEnabled())
-                    log.debug("Too many domain sub domain pairs");
-            }
-
-            for (DomainContext domainContext : domainContexts) {
-                if (domainContext.getSubDomain().equalsIgnoreCase("mgt")) {
-                    cartridgeSubscription.getCluster().setMgtClusterDomain(domainContext.getDomain());
-                    cartridgeSubscription.getCluster().setMgtClusterSubDomain(domainContext.getSubDomain());
-                } else {
-                    cartridgeSubscription.getCluster().setClusterDomain(domainContext.getDomain());
-                    cartridgeSubscription.getCluster().setClusterSubDomain(domainContext.getSubDomain());
-                }
-            }
-        } else {
-            String msg = "Domain contexts not found for " + cartridgeSubscription.getType() + " and tenant id " +
-                    cartridgeSubscription.getSubscriber().getTenantId();
-            log.warn(msg);
-            throw new ADCException(msg);
-        }*/
-        TopologyManager.acquireReadLock();
+        //TODO: implement getting cluster Id from DB
+        /*TopologyManager.acquireReadLock();
 
         try {
             Service service = TopologyManager.getTopology().getService(cartridgeSubscription.getType());
@@ -107,30 +76,25 @@ public class SubscriptionMultiTenantBehaviour extends SubscriptionTenancyBehavio
                 throw new ADCException(errorMsg);
             }
 
-            //TODO: fix properly
             //cartridgeSubscription.getCluster().setClusterDomain(service.getCluster().);
             //cartridgeSubscription.getCluster().setClusterSubDomain(domainContext.getSubDomain());
 
         } finally {
             TopologyManager.releaseReadLock();
-        }
+        }*/
     }
 
-    public void registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException {
+    public void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties)
+            throws ADCException, UnregisteredCartridgeException {
 
         //nothing to do
     }
 
-    public void removeSubscription() throws ADCException, NotSubscribedException {
+    public void removeSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, NotSubscribedException {
 
         log.info("Cartridge with alias " + cartridgeSubscription.getAlias() + ", and type " + cartridgeSubscription.getType() +
                 " is a multi-tenant cartridge and therefore will not terminate all instances and " +
                 "unregister services");
     }
 
-    public PayloadArg createPayloadParameters(PayloadArg payloadArg) throws ADCException {
-
-        //payload not used
-        return null;
-    }	
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionSingleTenantBehaviour.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionSingleTenantBehaviour.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionSingleTenantBehaviour.java
index 35e1dd1..c57c1a9 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionSingleTenantBehaviour.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionSingleTenantBehaviour.java
@@ -27,10 +27,8 @@ import org.apache.stratos.adc.mgt.exception.ADCException;
 import org.apache.stratos.adc.mgt.exception.AlreadySubscribedException;
 import org.apache.stratos.adc.mgt.exception.NotSubscribedException;
 import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
 import org.apache.stratos.adc.mgt.utils.ApplicationManagementUtil;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
 import org.apache.stratos.cloud.controller.pojo.Properties;
 
 
@@ -38,11 +36,9 @@ public class SubscriptionSingleTenantBehaviour extends SubscriptionTenancyBehavi
 
     private static Log log = LogFactory.getLog(SubscriptionSingleTenantBehaviour.class);
 
-    public SubscriptionSingleTenantBehaviour(CartridgeSubscription cartridgeSubscription) {
-        super(cartridgeSubscription);
-    }
 
-    public void createSubscription() throws ADCException, AlreadySubscribedException {
+
+    public void createSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, AlreadySubscribedException {
 
         //set the cluster and hostname
         cartridgeSubscription.getCluster().setClusterDomain(cartridgeSubscription.getAlias() + "." +
@@ -51,30 +47,22 @@ public class SubscriptionSingleTenantBehaviour extends SubscriptionTenancyBehavi
                 cartridgeSubscription.getCluster().getHostName());
     }
 
-    public void registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException {
+    public void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties) throws ADCException, UnregisteredCartridgeException {
 
-         //TODO: change to debug
-        log.info("Type: " + cartridgeSubscription.getType() +
-            " \n Cluster Domain: " + cartridgeSubscription.getCluster().getClusterDomain() +
-            " \n Cluster Sub-Domain: " + cartridgeSubscription.getCluster().getClusterSubDomain() +
-            " \n Tenant Range: " + cartridgeSubscription.getPayload().getPayloadArg().getTenantRange() +
-            " \n Autoscaling Policy: " + cartridgeSubscription.getAutoscalingPolicyName() +
-            " \n Deployment Policy: " + cartridgeSubscription.getDeploymentPolicyName());
+        log.info("Payload: " + cartridgeSubscription.getPayloadData().getCompletePayloadData().toString());
 
         ApplicationManagementUtil.registerService(cartridgeSubscription.getType(),
                 cartridgeSubscription.getCluster().getClusterDomain(),
                 cartridgeSubscription.getCluster().getClusterSubDomain(),
-                cartridgeSubscription.getPayload().createPayload(),
-                cartridgeSubscription.getPayload().getPayloadArg().getTenantRange(),
+                cartridgeSubscription.getPayloadData().getCompletePayloadData(),
+                cartridgeSubscription.getPayloadData().getBasicPayloadData().getTenantRange(),
                 cartridgeSubscription.getCluster().getHostName(),
                 cartridgeSubscription.getAutoscalingPolicyName(),
                 cartridgeSubscription.getDeploymentPolicyName(),
                 properties);
-
-        cartridgeSubscription.getPayload().delete();
     }
 
-    public void removeSubscription() throws ADCException, NotSubscribedException {
+    public void removeSubscription(CartridgeSubscription cartridgeSubscription) throws ADCException, NotSubscribedException {
 
         try {
             CloudControllerServiceClient.getServiceClient().terminateAllInstances(cartridgeSubscription.getCluster().getClusterDomain());
@@ -106,25 +94,4 @@ public class SubscriptionSingleTenantBehaviour extends SubscriptionTenancyBehavi
         log.info("Unregistered service cluster, domain " + cartridgeSubscription.getCluster().getClusterDomain() + ", sub domain " +
                 cartridgeSubscription.getCluster().getClusterSubDomain());
     }
-
-    public PayloadArg createPayloadParameters(PayloadArg payloadArg) throws ADCException {
-
-
-        if(cartridgeSubscription.getRepository() != null) {
-            payloadArg.setRepoURL(cartridgeSubscription.getRepository().getUrl());
-        }
-        payloadArg.setHostName(cartridgeSubscription.getCluster().getHostName());
-        payloadArg.setServiceDomain(cartridgeSubscription.getCluster().getClusterDomain());
-        payloadArg.setServiceSubDomain(cartridgeSubscription.getCluster().getMgtClusterSubDomain());
-        payloadArg.setMgtServiceDomain(cartridgeSubscription.getCluster().getMgtClusterDomain());
-        payloadArg.setMgtServiceSubDomain(cartridgeSubscription.getCluster().getMgtClusterSubDomain());
-        if(cartridgeSubscription.getCartridgeInfo().getProvider().equals(CartridgeConstants.PROVIDER_NAME_WSO2)) {
-            payloadArg.setTenantRange(Integer.toString(cartridgeSubscription.getSubscriber().getTenantId()));
-        }
-        else {
-            payloadArg.setTenantRange("*");
-        }
-
-        return payloadArg;
-    }
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
index 2f2beaa..b0766f4 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
@@ -23,7 +23,6 @@ import org.apache.stratos.adc.mgt.exception.ADCException;
 import org.apache.stratos.adc.mgt.exception.AlreadySubscribedException;
 import org.apache.stratos.adc.mgt.exception.NotSubscribedException;
 import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
-import org.apache.stratos.adc.mgt.payload.PayloadArg;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
 import org.apache.stratos.cloud.controller.pojo.Properties;
 
@@ -32,25 +31,13 @@ import java.io.Serializable;
 public abstract class SubscriptionTenancyBehaviour implements Serializable {
 
     private static final long serialVersionUID = 1L;
-    protected CartridgeSubscription cartridgeSubscription;
 
-    public SubscriptionTenancyBehaviour(CartridgeSubscription cartridgeSubscription) {
-        this.cartridgeSubscription = cartridgeSubscription;
-    }
+    public abstract void createSubscription(CartridgeSubscription cartridgeSubscription)
+            throws ADCException, AlreadySubscribedException;
 
-    public void setCartridgeSubscription (CartridgeSubscription cartridgeSubscription) {
-        this.cartridgeSubscription = cartridgeSubscription;
-    }
+    public abstract void registerSubscription(CartridgeSubscription cartridgeSubscription, Properties properties)
+            throws ADCException, UnregisteredCartridgeException;
 
-    public CartridgeSubscription getCartridgeSubscription () {
-        return cartridgeSubscription;
-    }
-
-    public abstract void createSubscription() throws ADCException, AlreadySubscribedException;
-
-    public abstract void registerSubscription(Properties properties) throws ADCException, UnregisteredCartridgeException;
-
-    public abstract void removeSubscription() throws ADCException, NotSubscribedException;
-
-    public abstract PayloadArg createPayloadParameters(PayloadArg payloadArg) throws ADCException;
+    public abstract void removeSubscription(CartridgeSubscription cartridgeSubscription)
+            throws ADCException, NotSubscribedException;
 }

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeInstanceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeInstanceUtils.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeInstanceUtils.java
deleted file mode 100644
index 7e72f90..0000000
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeInstanceUtils.java
+++ /dev/null
@@ -1,240 +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.adc.mgt.subscription.utils;
-
-public class CartridgeInstanceUtils {
-    /*
-    private static Log log = LogFactory.getLog(CartridgeInstanceUtils.class);
-
-    public static void validateCartridgeAlias(String alias, String cartridgeType) throws InvalidCartridgeAliasException,
-            DuplicateCartridgeAliasException, ADCException {
-
-        // Do not use quotes in messages, current UI JavaScript does not work if there are quotes
-        // TODO: Fix message display in UI
-        String patternString = "([a-z0-9]+([-][a-z0-9])*)+";
-        Pattern pattern = Pattern.compile(patternString);
-
-        if (!pattern.matcher(alias).matches()) {
-            String msg = "The alias " + alias + " can contain only alpha-numeric lowercase characters. Please enter a valid alias.";
-            log.error(msg);
-            throw new InvalidCartridgeAliasException(msg, cartridgeType, alias);
-        }
-
-        boolean isAliasTaken = false;
-        try {
-            isAliasTaken = PersistenceManager.isAliasAlreadyTaken(alias, cartridgeType);
-        } catch (Exception e) {
-            String msg = "Exception : " + e.getMessage();
-            log.error(msg, e);
-            throw new ADCException("Error when checking alias is already taken", e);
-        }
-
-        if (isAliasTaken) {
-            String msg = "The alias " + alias + " is already taken. Please try again with a different alias.";
-            log.error(msg);
-            throw new DuplicateCartridgeAliasException(msg, cartridgeType, alias);
-        }
-    }
-
-    public static String generatePassword() {
-
-        final int PASSWORD_LENGTH = 8;
-        StringBuffer sb = new StringBuffer();
-        for (int x = 0; x < PASSWORD_LENGTH; x++) {
-            sb.append((char) ((int) (Math.random() * 26) + 97));
-        }
-        return sb.toString();
-
-    }
-
-    public static CartridgeSubscriptionInfo createCartridgeSubscription(CartridgeInfo cartridgeInfo,
-                                                                     Policy policy,
-                                                                     String cartridgeType,
-                                                                     String cartridgeAlias,
-                                                                     int tenantId,
-                                                                     String tenantDomain,
-                                                                     Repository repository,
-                                                                     String clusterDomain,
-                                                                     String clusterSubDomain,
-                                                                     String hostName,
-                                                                     String mgtClusterDomain,
-                                                                     String mgtClusterSubDomain,
-                                                                     DataCartridge dataCartridge) {
-
-        CartridgeSubscriptionInfo cartridgeSubscription = new CartridgeSubscriptionInfo();
-        cartridgeSubscription.setCartridge(cartridgeType);
-        cartridgeSubscription.setAlias(cartridgeAlias);
-        cartridgeSubscription.setClusterDomain(clusterDomain);
-        cartridgeSubscription.setClusterSubdomain(clusterSubDomain);
-        cartridgeSubscription.setMgtClusterDomain(mgtClusterDomain);
-        cartridgeSubscription.setMgtClusterSubDomain(mgtClusterSubDomain);
-        cartridgeSubscription.setHostName(hostName);
-        cartridgeSubscription.setPolicy(policy.getName());
-        cartridgeSubscription.setRepository(repository);
-        cartridgeSubscription.setPortMappings(createPortMappings(cartridgeInfo));
-        cartridgeSubscription.setProvider(cartridgeInfo.getProvider());
-        cartridgeSubscription.setDataCartridge(dataCartridge);
-        cartridgeSubscription.setTenantId(tenantId);
-        cartridgeSubscription.setTenantDomain(tenantDomain);
-        cartridgeSubscription.setBaseDirectory(cartridgeInfo.getBaseDir());
-        cartridgeSubscription.setState("PENDING");
-
-        return cartridgeSubscription;
-    }
-
-    private static List<PortMapping> createPortMappings(CartridgeInfo cartridgeInfo) {
-        List<PortMapping> portMappings = new ArrayList<PortMapping>();
-
-        if (cartridgeInfo.getPortMappings() != null) {
-            for (org.apache.stratos.cloud.controller.util.xsd.PortMapping portMapping : cartridgeInfo.getPortMappings()) {
-                PortMapping portMap = new PortMapping();
-                portMap.setPrimaryPort(portMapping.getPort());
-                portMap.setProxyPort(portMapping.getProxyPort());
-                portMap.setType(portMapping.getProtocol());
-                portMappings.add(portMap);
-            }
-        }
-        return portMappings;
-    }
-
-    public static void addDNSEntry(String alias, String cartridgeType) {
-        new DNSManager().addNewSubDomain(alias + "." + cartridgeType, System.getProperty(CartridgeConstants.ELB_IP));
-    }
-
-    public static SubscriptionInfo createSubscriptionResponse(CartridgeSubscriptionInfo cartridgeSubscription, Repository repository) {
-        SubscriptionInfo subscriptionInfo = new SubscriptionInfo();
-
-        if (repository != null && repository.getUrl() != null) {
-            subscriptionInfo.setRepositoryURL(convertRepoURL(repository.getUrl()));
-        }
-        subscriptionInfo.setHostname(cartridgeSubscription.getHostName());
-
-        return subscriptionInfo;
-    }
-
-    private static String convertRepoURL(String gitURL) {
-        String convertedHttpURL = null;
-        if (gitURL != null && gitURL.startsWith("git@")) {
-            StringBuilder httpRepoUrl = new StringBuilder();
-            httpRepoUrl.append("http://");
-            String[] urls = gitURL.split(":");
-            String[] hostNameArray = urls[0].split("@");
-            String hostName = hostNameArray[1];
-            httpRepoUrl.append(hostName).append("/").append(urls[1]);
-            convertedHttpURL = httpRepoUrl.toString();
-        } else if (gitURL != null && gitURL.startsWith("http")) {
-            convertedHttpURL = gitURL;
-        }
-        return convertedHttpURL;
-    }
-
-    public static RepositoryInformation validateRepository(String repoURL, String repoUsername, String repoPassword,
-                                                           boolean privateRepo, boolean testConnection)
-
-            throws RepositoryRequiredException, ADCException,
-            RepositoryCredentialsRequiredException, InvalidRepositoryException, RepositoryTransportException {
-
-        RepositoryInformation repositoryInformation = new RepositoryInformation();
-        repositoryInformation.setRepoURL(repoURL);
-        if (log.isDebugEnabled()) {
-            log.debug("Validating Git Repository");
-        }
-
-        if (repoURL == null || repoURL.trim().length() == 0) {
-            throw new RepositoryRequiredException("External repository required for subscription");
-        }
-
-        if (repoURL != null && repoURL.trim().length() > 0 && privateRepo) {
-            if (log.isDebugEnabled()) {
-                log.debug("External repo validation is a private repo: " + repoURL);
-            }
-            if (repoUsername == null || repoUsername.trim().length() == 0 || repoPassword == null
-                    || repoPassword.trim().length() == 0) {
-                throw new RepositoryCredentialsRequiredException(
-                        "Username and Password are required for private repository");
-            }
-        }
-
-        if (!testConnection) {
-            if (log.isDebugEnabled()) {
-                log.debug("External repo validation is not enabled");
-            }
-            return repositoryInformation;
-        }
-
-        if (repoURL == null || repoURL.trim().length() == 0) {
-            // This means, no repo to validate.
-            return repositoryInformation;
-        }
-
-        if (log.isDebugEnabled()) {
-            log.debug("External repo validation enabled");
-        }
-
-        // This assumes running on Linux.
-        String parentDirName = "/tmp/" + UUID.randomUUID().toString();
-        CredentialsProvider credentialsProvider = null;
-        if (repoUsername != null && repoUsername.trim().length() > 0 && repoPassword != null
-                && repoPassword.trim().length() > 0) {
-            if (log.isDebugEnabled()) {
-                log.debug("External repo credentails are passed: " + repoUsername);
-            }
-            credentialsProvider = new UsernamePasswordCredentialsProvider(repoUsername, repoPassword.toCharArray());
-        }
-
-        // Initialize temp local file repo
-        FileRepository localRepo = null;
-        try {
-            File f = new File(parentDirName + "/.git");
-            localRepo = new FileRepository(f);
-            if (log.isDebugEnabled()) {
-                log.debug("Local File Repo: " + f.getAbsoluteFile());
-            }
-        } catch (IOException e) {
-            throw new ADCException("Error creating local file repo", e);
-        }
-
-        Git git = new Git(localRepo);
-        LsRemoteCommand cmd = git.lsRemote().setRemote(repoURL);
-        if (credentialsProvider != null) {
-            cmd.setCredentialsProvider(credentialsProvider);
-        }
-        try {
-            Collection<Ref> collection = cmd.call();
-            List<String> refNames = new ArrayList<String>();
-            if (collection != null) {
-                for (Ref ref : collection) {
-                    if (log.isDebugEnabled()) {
-                        log.debug(repoURL + ": " + ref.getName());
-                    }
-                    refNames.add(ref.getName());
-                }
-            }
-            repositoryInformation.setRefName(refNames.toArray(new String[refNames.size()]));
-        } catch (InvalidRemoteException e) {
-            throw new InvalidRepositoryException("Provided repository url is not valid", e);
-        } catch (TransportException e) {
-            throw new RepositoryTransportException("Transport error when checking remote repository", e);
-        } catch (GitAPIException e) {
-            throw new ADCException("Git API error when checking remote repository", e);
-        }
-        return repositoryInformation;
-    }*/
-}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeSubscriptionUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeSubscriptionUtils.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeSubscriptionUtils.java
new file mode 100644
index 0000000..dbd7b43
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/utils/CartridgeSubscriptionUtils.java
@@ -0,0 +1,69 @@
+/*
+ * 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.adc.mgt.subscription.utils;
+
+import org.apache.stratos.adc.mgt.payload.BasicPayloadData;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+
+public class CartridgeSubscriptionUtils {
+
+    public static BasicPayloadData getBasicPayloadData (CartridgeSubscription cartridgeSubscription) {
+
+        BasicPayloadData basicPayloadData = new BasicPayloadData();
+        basicPayloadData.setApplicationPath(cartridgeSubscription.getCartridgeInfo().getBaseDir());
+        basicPayloadData.setSubscriptionKey(cartridgeSubscription.getSubscriptionKey());
+        basicPayloadData.setClusterId(cartridgeSubscription.getClusterDomain());
+        basicPayloadData.setDeployment("default");//currently hard coded to default
+        if(cartridgeSubscription.getRepository() != null) {
+            basicPayloadData.setGitRepositoryUrl(cartridgeSubscription.getRepository().getUrl());
+        }
+        basicPayloadData.setHostName(cartridgeSubscription.getHostName());
+        basicPayloadData.setMultitenant(String.valueOf(cartridgeSubscription.getCartridgeInfo().getMultiTenant()));
+        basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridgeSubscription.getCartridgeInfo()));
+        basicPayloadData.setServiceName(cartridgeSubscription.getCartridgeInfo().getType());
+        basicPayloadData.setSubscriptionAlias(cartridgeSubscription.getAlias());
+        basicPayloadData.setTenantId(cartridgeSubscription.getSubscriber().getTenantId());
+        if(cartridgeSubscription.getCartridgeInfo().getMultiTenant() ||
+                cartridgeSubscription.getSubscriber().getTenantId() == -1234) {  //TODO: fix properly
+            basicPayloadData.setTenantRange("*");
+        } else {
+            basicPayloadData.setTenantRange(String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
+        }
+
+        return basicPayloadData;
+    }
+
+    private static String createPortMappingPayloadString (CartridgeInfo cartridgeInfo) {
+
+        // port mappings
+        StringBuilder portMapBuilder = new StringBuilder();
+        org.apache.stratos.cloud.controller.pojo.PortMapping[] portMappings = cartridgeInfo.getPortMappings();
+        for (org.apache.stratos.cloud.controller.pojo.PortMapping portMapping : portMappings) {
+            String port = portMapping.getPort();
+            portMapBuilder.append(port).append("|");
+        }
+
+        // remove last "|" character
+        String portMappingString = portMapBuilder.toString().replaceAll("\\|$", "");
+
+        return portMappingString;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/efdaabd7/components/org.apache.stratos.adc.mgt/src/test/java/org/apache/stratos/adc/mgt/test/CartridgeSubscriptionTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/test/java/org/apache/stratos/adc/mgt/test/CartridgeSubscriptionTest.java b/components/org.apache.stratos.adc.mgt/src/test/java/org/apache/stratos/adc/mgt/test/CartridgeSubscriptionTest.java
index d0929d5..2446b23 100644
--- a/components/org.apache.stratos.adc.mgt/src/test/java/org/apache/stratos/adc/mgt/test/CartridgeSubscriptionTest.java
+++ b/components/org.apache.stratos.adc.mgt/src/test/java/org/apache/stratos/adc/mgt/test/CartridgeSubscriptionTest.java
@@ -23,14 +23,24 @@ import junit.framework.TestCase;
 import org.apache.stratos.adc.mgt.exception.ADCException;
 import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
 import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionMultiTenantBehaviour;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionSingleTenantBehaviour;
+import org.apache.stratos.adc.mgt.subscription.tenancy.SubscriptionTenancyBehaviour;
 import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
 
 public class CartridgeSubscriptionTest extends TestCase {
 
     private CartridgeSubscription getCartridgeInstance (CartridgeInfo cartridgeInfo) {
 
+        SubscriptionTenancyBehaviour tenancyBehaviour;
+        if(cartridgeInfo.getMultiTenant()) {
+            tenancyBehaviour = new SubscriptionMultiTenantBehaviour();
+        } else {
+            tenancyBehaviour = new SubscriptionSingleTenantBehaviour();
+        }
+
         try {
-            return CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+            return CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour);
 
         } catch (ADCException e) {
             throw new RuntimeException(e);
@@ -40,14 +50,16 @@ public class CartridgeSubscriptionTest extends TestCase {
     public void testCarbonCartridge () {
 
         CartridgeInfo cartridgeInfo = new CartridgeInfo();
+        cartridgeInfo.setProvider("carbon");
         cartridgeInfo.setMultiTenant(true);
         cartridgeInfo.setType("esb");
         assertNotNull(getCartridgeInstance(cartridgeInfo));
     }
-     //TODO FIXME
-    /*public void testPhpCartridgeInstance () {
+
+    public void testPhpCartridgeInstance () {
 
         CartridgeInfo cartridgeInfo = new CartridgeInfo();
+        cartridgeInfo.setProvider("php-provider");
         cartridgeInfo.setMultiTenant(false);
         cartridgeInfo.setType("php");
         assertNotNull(getCartridgeInstance(cartridgeInfo));
@@ -56,6 +68,7 @@ public class CartridgeSubscriptionTest extends TestCase {
     public void testMySqlCartridgeInstance () {
 
         CartridgeInfo cartridgeInfo = new CartridgeInfo();
+        cartridgeInfo.setProvider("data");
         cartridgeInfo.setMultiTenant(false);
         cartridgeInfo.setType("mysql");
         assertNotNull(getCartridgeInstance(cartridgeInfo));
@@ -64,8 +77,9 @@ public class CartridgeSubscriptionTest extends TestCase {
     public void testTomcatCartridgeInstance () {
 
         CartridgeInfo cartridgeInfo = new CartridgeInfo();
+        cartridgeInfo.setProvider("tomcat-provider");
         cartridgeInfo.setMultiTenant(false);
         cartridgeInfo.setType("tomcat");
         assertNotNull(getCartridgeInstance(cartridgeInfo));
-    }*/
+    }
 }