Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping 10fdc0712 -> 24fc938ea


reverting to text based payloads temporarily


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

Branch: refs/heads/4.0.0-grouping
Commit: 24fc938eaed677f65931d8483f50ca8930d05c69
Parents: 10fdc07
Author: Isuru Haththotuwa <[email protected]>
Authored: Thu Sep 25 16:19:50 2014 +0530
Committer: Isuru Haththotuwa <[email protected]>
Committed: Thu Sep 25 16:19:50 2014 +0530

----------------------------------------------------------------------
 .../application/ApplicationUtils.java           | 104 +++++++-
 .../parser/DefaultApplicationParser.java        |  26 +-
 .../ApplicationCartridgePayloadData.java        |  27 ++
 .../application/payload/BasicPayloadData.java   | 253 +++++++++++++++++++
 .../payload/DataCartridgePayloadData.java       |  27 ++
 .../payload/FrameworkCartridgePayloadData.java  |  27 ++
 .../LoadBalancerCartridgePayloadData.java       |  27 ++
 .../application/payload/PayloadData.java        |  69 +++++
 .../application/payload/PayloadFactory.java     |  59 +++++
 9 files changed, 604 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java
index 695af5d..697f33a 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/ApplicationUtils.java
@@ -19,12 +19,15 @@
 
 package org.apache.stratos.cloud.controller.application;
 
+import 
org.apache.stratos.cloud.controller.application.payload.BasicPayloadData;
+import org.apache.stratos.cloud.controller.application.payload.PayloadData;
+import org.apache.stratos.cloud.controller.application.payload.PayloadFactory;
+import 
org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException;
 import org.apache.stratos.cloud.controller.pojo.Cartridge;
 import org.apache.stratos.cloud.controller.pojo.PortMapping;
 import 
org.apache.stratos.cloud.controller.pojo.application.SubscribableContext;
 import 
org.apache.stratos.cloud.controller.pojo.application.SubscribableInfoContext;
 import org.apache.stratos.cloud.controller.pojo.payload.MetaDataHolder;
-import org.apache.stratos.metadata.client.config.MetaDataClientConfig;
 
 import java.util.*;
 import java.util.regex.Pattern;
@@ -115,9 +118,9 @@ public class ApplicationUtils {
             clusterLevelPayloadProperties.put("REPO_URL", 
subscribableInfoCtxt.getRepoUrl());
         }
         // ports
-        if (createPortMappingPayloadString(cartridge) != null) {
-            clusterLevelPayloadProperties.put("PORTS", 
createPortMappingPayloadString(cartridge));
-        }
+//        if (createPortMappingPayloadString(cartridge) != null) {
+//            clusterLevelPayloadProperties.put("PORTS", 
createPortMappingPayloadString(cartridge));
+//        }
         // provider
         if (cartridge.getProvider() != null) {
             clusterLevelPayloadProperties.put("PROVIDER", 
cartridge.getProvider());
@@ -144,8 +147,9 @@ public class ApplicationUtils {
         }
 
         // remove last "|" character
+        String portMappingString = 
portMapBuilder.toString().replaceAll("\\|$", "");
 
-        return portMapBuilder.toString().replaceAll("\\|$", "");
+        return portMappingString;
     }
 
     public static StringBuilder getTextPayload (String appId, String 
groupName, String clusterId) {
@@ -185,4 +189,94 @@ public class ApplicationUtils {
 
         return payloadBuilder;
     }
+
+    public static PayloadData createPayload (String appId, String groupName, 
Cartridge cartridge, String subscriptionKey, int tenantId, String clusterId,
+                                             String hostName, String repoUrl, 
String alias, Map<String, String> customPayloadEntries)
+            throws ApplicationDefinitionException {
+
+        //Create the payload
+        BasicPayloadData basicPayloadData = createBasicPayload(appId, 
groupName, cartridge, subscriptionKey,
+                clusterId, hostName, repoUrl, alias, tenantId);
+        //Populate the basic payload details
+        basicPayloadData.populatePayload();
+
+        PayloadData payloadData = 
PayloadFactory.getPayloadDataInstance(cartridge.getProvider(),
+                cartridge.getType(), basicPayloadData);
+
+        boolean isDeploymentParam = false;
+        // get the payload parameters defined in the cartridge definition file 
for this cartridge type
+        if (cartridge.getProperties() != null && 
!cartridge.getProperties().isEmpty()) {
+
+            for (Map.Entry<String, String> propertyEntry : 
cartridge.getProperties().entrySet()) {
+                // check if a property is related to the payload. Currently 
this is done by checking if the
+                // property name starts with 'payload_parameter.' suffix. If 
so the payload param name will
+                // be taken as the substring from the index of '.' to the end 
of the property name.
+                if (propertyEntry.getKey()
+                        .startsWith("payload_parameter.")) {
+                    String payloadParamName = propertyEntry.getKey();
+                    String payloadParamSubstring = 
payloadParamName.substring(payloadParamName.indexOf(".") + 1);
+                    if("DEPLOYMENT".equals(payloadParamSubstring)) {
+                        isDeploymentParam = true;
+                    }
+                    payloadData.add(payloadParamSubstring, 
propertyEntry.getValue());
+                }
+            }
+        }
+
+        // DEPLOYMENT payload param must be set because its used by puppet 
agent
+        // to generate the hostname. Therefore, if DEPLOYMENT is not set in 
cartridge properties,
+        // adding the DEPLOYMENT="default" param
+        if(!isDeploymentParam) {
+            payloadData.add("DEPLOYMENT", "default");
+        }
+        //check if there are any custom payload entries defined
+        if (customPayloadEntries != null) {
+            //add them to the payload
+            Set<Map.Entry<String,String>> entrySet = 
customPayloadEntries.entrySet();
+            for (Map.Entry<String, String> entry : entrySet) {
+                payloadData.add(entry.getKey(), entry.getValue());
+            }
+        }
+
+        return payloadData;
+    }
+
+    private static BasicPayloadData createBasicPayload (String appId, String 
groupName, Cartridge cartridge,
+                                                        String 
subscriptionKey, String clusterId,
+                                                        String hostName, 
String repoUrl, String alias,
+                                                       int tenantId) {
+
+        BasicPayloadData basicPayloadData = new BasicPayloadData();
+        basicPayloadData.setAppId(appId);
+        basicPayloadData.setGroupName(groupName);
+        basicPayloadData.setApplicationPath(cartridge.getBaseDir());
+        basicPayloadData.setSubscriptionKey(subscriptionKey);
+        //basicPayloadData.setDeployment("default");//currently hard coded to 
default
+        
basicPayloadData.setMultitenant(String.valueOf(cartridge.isMultiTenant()));
+        
basicPayloadData.setPortMappings(createPortMappingPayloadString(cartridge));
+        basicPayloadData.setServiceName(cartridge.getType());
+        basicPayloadData.setProvider(cartridge.getProvider());
+
+        if(repoUrl != null) {
+            basicPayloadData.setGitRepositoryUrl(repoUrl);
+        }
+
+        if (clusterId != null) {
+            basicPayloadData.setClusterId(clusterId);
+        }
+
+        if (hostName != null) {
+            basicPayloadData.setHostName(hostName);
+        }
+
+        if (alias != null) {
+            basicPayloadData.setSubscriptionAlias(alias);
+        }
+
+        basicPayloadData.setTenantId(tenantId);
+
+        basicPayloadData.setTenantRange("*");
+
+        return basicPayloadData;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
index 282b4d9..62db219 100644
--- 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/DefaultApplicationParser.java
@@ -500,13 +500,15 @@ public class DefaultApplicationParser implements 
ApplicationParser {
 
             // create and collect this cluster's information
             assert subscribableInfoCtxt != null;
-            ApplicationClusterContext appClusterCtxt = 
createApplicationClusterContext(subscribableCtxt.getType(),
-                    appId, groupName, clusterId, hostname, 
subscribableInfoCtxt.getDeploymentPolicy(), false);
+            ApplicationClusterContext appClusterCtxt = 
createApplicationClusterContext(appId, groupName, cartridge,
+                    key, tenantId, subscribableInfoCtxt.getRepoUrl(), 
subscribableCtxt.getAlias(),
+                    clusterId, hostname, 
subscribableInfoCtxt.getDeploymentPolicy(), false);
             this.applicationClusterContexts.add(appClusterCtxt);
 
+            // TODO: I will bring you back when meta data service is completed 
B-)
             // create cluster level meta data
-            
this.metaDataHolders.add(ApplicationUtils.getClusterLevelPayloadData(appId, 
groupName, tenantId, key,
-                    hostname, appClusterCtxt.getTenantRange(), clusterId, 
subscribableCtxt, subscribableInfoCtxt, cartridge));
+            
//this.metaDataHolders.add(ApplicationUtils.getClusterLevelPayloadData(appId, 
groupName, tenantId, key,
+            //        hostname, appClusterCtxt.getTenantRange(), clusterId, 
subscribableCtxt, subscribableInfoCtxt, cartridge));
 
             // add relevant information to the map
             clusterDataMap.put(subscribableCtxt.getAlias(), new 
ClusterDataHolder(subscribableCtxt.getType(), clusterId));
@@ -531,15 +533,19 @@ public class DefaultApplicationParser implements 
ApplicationParser {
         //clusterDataHolder.setPayloadDataHolders(payloadDataHolders);
     }
 
-    private ApplicationClusterContext createApplicationClusterContext (String 
serviceType, String appId,
-                                                                       String 
groupName, String clusterId,
-                                                                       String 
hostname, String deploymentPolicy,
-                                                                       boolean 
isLB) {
+    private ApplicationClusterContext createApplicationClusterContext (String 
appId, String groupName, Cartridge cartridge,
+                                                                       String 
subscriptionKey, int tenantId, String repoUrl,
+                                                                       String 
alias, String clusterId, String hostname,
+                                                                       String 
deploymentPolicy, boolean isLB)
+            throws ApplicationDefinitionException {
 
         // Create text payload
-        String textPayload = ApplicationUtils.getTextPayload(appId, groupName, 
clusterId).toString();
+        //String textPayload = ApplicationUtils.getTextPayload(appId, 
groupName, clusterId).toString();
+
+        String textPayload = ApplicationUtils.createPayload(appId, groupName, 
cartridge, subscriptionKey, tenantId, clusterId,
+                hostname, repoUrl, alias, null).toString();
 
-        return new ApplicationClusterContext(serviceType, clusterId, hostname, 
textPayload, deploymentPolicy, isLB);
+        return new ApplicationClusterContext(cartridge.getType(), clusterId, 
hostname, textPayload, deploymentPolicy, isLB);
     }
 
 //    public void addClusterId (Map<String, Set<String>> 
serviceNameToClusterIdsMap, String serviceName, String clusterId) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/ApplicationCartridgePayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/ApplicationCartridgePayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/ApplicationCartridgePayloadData.java
new file mode 100644
index 0000000..870c22c
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/ApplicationCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloud.controller.application.payload;
+
+public class ApplicationCartridgePayloadData extends PayloadData {
+
+    public ApplicationCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/BasicPayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/BasicPayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/BasicPayloadData.java
new file mode 100644
index 0000000..c15e492
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/BasicPayloadData.java
@@ -0,0 +1,253 @@
+/*
+ * 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.cloud.controller.application.payload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.io.Serializable;
+
+/**
+ * Contains basic payload data fields
+ */
+public class BasicPayloadData implements Serializable {
+
+    private static Log log = LogFactory.getLog(BasicPayloadData.class);
+
+    private String appId;
+    private String groupName;
+    private String serviceName;
+    private String clusterId;
+    private String hostName;
+    private int tenantId;
+    private String tenantRange;
+    private String subscriptionAlias;
+    private String deployment;
+    private String puppetIp;
+    private String puppetHostName;
+    private String puppetEnvironment;
+    private String subscriptionKey;
+    private String applicationPath;
+    private String gitRepositoryUrl;
+    private String portMappings;
+    private String multitenant;
+    private String provider;
+
+    protected StringBuilder payloadBuilder;
+
+    public BasicPayloadData() {
+
+    }
+
+    public void populatePayload () {
+
+        payloadBuilder = new StringBuilder();
+
+        payloadBuilder.append("APP_ID=" + getAppId());
+        payloadBuilder.append(",");
+        payloadBuilder.append("GROUP_NAME=" + getGroupName());
+        payloadBuilder.append(",");
+        payloadBuilder.append("SERVICE_NAME=" + getServiceName());
+        payloadBuilder.append(",");
+        payloadBuilder.append("HOST_NAME=" + getHostName());
+        payloadBuilder.append(",");
+        payloadBuilder.append("MULTITENANT=" + getMultitenant());
+        payloadBuilder.append(",");
+        payloadBuilder.append("TENANT_ID=" + getTenantId());
+        payloadBuilder.append(",");
+        payloadBuilder.append("TENANT_RANGE=" + getTenantRange());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CARTRIDGE_ALIAS=" + getSubscriptionAlias());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CLUSTER_ID=" + getClusterId());
+        payloadBuilder.append(",");
+        payloadBuilder.append("CARTRIDGE_KEY=" + getSubscriptionKey());
+        payloadBuilder.append(",");
+        //payloadBuilder.append("DEPLOYMENT=" + getDeployment());
+        //payloadBuilder.append(",");
+        //payloadBuilder.append("APP_PATH=" + getApplicationPath());
+        //payloadBuilder.append(",");
+        payloadBuilder.append("REPO_URL=" + getGitRepositoryUrl());
+        payloadBuilder.append(",");
+        payloadBuilder.append("PORTS=" + getPortMappings());
+        payloadBuilder.append(",");
+        payloadBuilder.append("PROVIDER=" + getProvider());
+
+        //Payload Data exposed as system variables
+        payloadBuilder.append(",");
+        payloadBuilder.append("PUPPET_IP=" + System.getProperty("puppet.ip"));
+        payloadBuilder.append(",");
+        payloadBuilder.append("PUPPET_HOSTNAME=" + 
System.getProperty("puppet.hostname"));
+        payloadBuilder.append(",");
+        payloadBuilder.append("PUPPET_DNS_AVAILABLE=" + 
System.getProperty("puppet.env"));
+        payloadBuilder.append(",");
+        payloadBuilder.append("PUPPET_ENV=" + 
System.getProperty("puppet.dns.available"));
+
+    }
+
+    public String getServiceName() {
+        return serviceName;
+    }
+
+    public void setServiceName(String serviceName) {
+        this.serviceName = serviceName;
+    }
+
+    public String getClusterId() {
+        return clusterId;
+    }
+
+    public void setClusterId(String clusterId) {
+        this.clusterId = clusterId;
+    }
+
+    public String getHostName() {
+        return hostName;
+    }
+
+    public void setHostName(String hostName) {
+        this.hostName = hostName;
+    }
+
+    public int getTenantId() {
+        return tenantId;
+    }
+
+    public void setTenantId(int tenantId) {
+        this.tenantId = tenantId;
+    }
+
+    public String getTenantRange() {
+        return tenantRange;
+    }
+
+    public void setTenantRange(String tenantRange) {
+        this.tenantRange = tenantRange;
+    }
+
+    public String getSubscriptionAlias() {
+        return subscriptionAlias;
+    }
+
+    public void setSubscriptionAlias(String subscriptionAlias) {
+        this.subscriptionAlias = subscriptionAlias;
+    }
+
+    public String getDeployment() {
+        return deployment;
+    }
+
+    public void setDeployment(String deployment) {
+        this.deployment = deployment;
+    }
+
+    public String getPuppetIp() {
+        return puppetIp;
+    }
+
+    public void setPuppetIp(String puppetIp) {
+        this.puppetIp = puppetIp;
+    }
+
+    public String getSubscriptionKey() {
+        return subscriptionKey;
+    }
+
+    public void setSubscriptionKey(String subscriptionKey) {
+        this.subscriptionKey = subscriptionKey;
+    }
+
+    public StringBuilder getPayloadData () {
+
+        return payloadBuilder;
+    }
+
+    public String getApplicationPath() {
+        return applicationPath;
+    }
+
+    public void setApplicationPath(String applicationPath) {
+        this.applicationPath = applicationPath;
+    }
+
+    public String getGitRepositoryUrl() {
+        return gitRepositoryUrl;
+    }
+
+    public void setGitRepositoryUrl(String gitRepositoryUrl) {
+        this.gitRepositoryUrl = gitRepositoryUrl;
+    }
+
+    public String getPortMappings() {
+        return portMappings;
+    }
+
+    public void setPortMappings(String portMappings) {
+        this.portMappings = portMappings;
+    }
+
+    public String getMultitenant() {
+        return multitenant;
+    }
+
+    public void setMultitenant(String multitenant) {
+        this.multitenant = multitenant;
+    }
+
+    public String getPuppetHostName() {
+        return puppetHostName;
+    }
+
+    public void setPuppetHostName(String puppetHostName) {
+        this.puppetHostName = puppetHostName;
+    }
+
+    public String getPuppetEnvironment() {
+        return puppetEnvironment;
+    }
+
+    public void setPuppetEnvironment(String puppetEnvironment) {
+        this.puppetEnvironment = puppetEnvironment;
+    }
+
+    public String getProvider() {
+        return provider;
+    }
+
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    public String getAppId() {
+        return appId;
+    }
+
+    public void setAppId(String appId) {
+        this.appId = appId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/DataCartridgePayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/DataCartridgePayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/DataCartridgePayloadData.java
new file mode 100644
index 0000000..1848b6d
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/DataCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloud.controller.application.payload;
+
+public class DataCartridgePayloadData extends PayloadData {
+
+    public DataCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/FrameworkCartridgePayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/FrameworkCartridgePayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/FrameworkCartridgePayloadData.java
new file mode 100644
index 0000000..a22d40b
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/FrameworkCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloud.controller.application.payload;
+
+public class FrameworkCartridgePayloadData extends PayloadData {
+
+    public FrameworkCartridgePayloadData(BasicPayloadData basicPayloadData) {
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/LoadBalancerCartridgePayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/LoadBalancerCartridgePayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/LoadBalancerCartridgePayloadData.java
new file mode 100644
index 0000000..6ceeba9
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/LoadBalancerCartridgePayloadData.java
@@ -0,0 +1,27 @@
+/*
+ * 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.cloud.controller.application.payload;
+
+public class LoadBalancerCartridgePayloadData extends PayloadData {
+
+    public LoadBalancerCartridgePayloadData(BasicPayloadData basicPayloadData) 
{
+        super(basicPayloadData);
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadData.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadData.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadData.java
new file mode 100644
index 0000000..35b1fe6
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadData.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.cloud.controller.application.payload;
+
+import java.io.Serializable;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+
+public abstract class PayloadData implements Serializable {
+
+    private BasicPayloadData basicPayloadData;
+    private Map<String, String> completePayloadMap;
+    public PayloadData(BasicPayloadData basicPayloadData) {
+
+        this.setBasicPayloadData(basicPayloadData);
+        completePayloadMap = new HashMap<String, String>();
+    }
+
+    public void add (String payloadDataName, String payloadDataValue) {
+        completePayloadMap.put(payloadDataName, payloadDataValue);
+    }
+
+    public StringBuilder getCompletePayloadData () {
+
+        //return completePayloadMap;
+        StringBuilder completePayload = new StringBuilder();
+        completePayload.append(basicPayloadData.getPayloadData());
+        Iterator< String > iter = completePayloadMap.keySet().iterator();
+        while(iter.hasNext()) {
+            String key = iter.next();
+            String val = completePayloadMap.get(key);
+            if(completePayload.length() > 0){
+                completePayload.append(",");
+            }
+            completePayload.append(key + "=" + val);
+        }
+        return completePayload;
+    }
+
+    public BasicPayloadData getBasicPayloadData() {
+        return basicPayloadData;
+    }
+
+    public void setBasicPayloadData(BasicPayloadData basicPayloadData) {
+        this.basicPayloadData = basicPayloadData;
+    }
+
+    public String toString () {
+        return getCompletePayloadData().toString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/24fc938e/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadFactory.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadFactory.java
 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadFactory.java
new file mode 100755
index 0000000..2b3ea8b
--- /dev/null
+++ 
b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/payload/PayloadFactory.java
@@ -0,0 +1,59 @@
+/**
+ *  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.cloud.controller.application.payload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import 
org.apache.stratos.cloud.controller.exception.ApplicationDefinitionException;
+
+
+public class PayloadFactory {
+
+       private static Log log = LogFactory.getLog(PayloadFactory.class);
+
+    /**
+     * Creates and returns a PayloadData instance
+     *
+     * @param cartridgeProvider Cartridge provider
+     * @param cartridgeType Cartridge type
+     * @param basicPayloadData BasicPayloadData instance
+     * @return Payload subscription
+     */
+       public static PayloadData getPayloadDataInstance(String 
cartridgeProvider, String cartridgeType,
+                                                     BasicPayloadData 
basicPayloadData)
+            throws ApplicationDefinitionException {
+
+        PayloadData payloadData = null;
+
+        //TODO: fix after adding the property Category to Cartridge Definition
+        if (cartridgeProvider.equals("data")) {
+            payloadData = new DataCartridgePayloadData(basicPayloadData);
+        } else {
+            payloadData = new FrameworkCartridgePayloadData(basicPayloadData);
+        }
+
+        if(payloadData == null) {
+            throw new ApplicationDefinitionException("Unable to find matching 
payload for cartridge type " + cartridgeType +
+                    ", provider " + cartridgeProvider);
+        }
+
+        return payloadData;
+    }
+}

Reply via email to