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