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 2014/01/08 06:51:43 UTC
[32/46] renaming package adc.mgt to manager
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
new file mode 100644
index 0000000..bf436e5
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/manager/CartridgeSubscriptionManager.java
@@ -0,0 +1,628 @@
+/*
+ * 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.manager.manager;
+
+import org.apache.axis2.AxisFault;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.client.CloudControllerServiceClient;
+import org.apache.stratos.manager.dao.CartridgeSubscriptionInfo;
+import org.apache.stratos.manager.dto.SubscriptionInfo;
+import org.apache.stratos.manager.exception.*;
+import org.apache.stratos.manager.payload.BasicPayloadData;
+import org.apache.stratos.manager.payload.PayloadData;
+import org.apache.stratos.manager.payload.PayloadFactory;
+import org.apache.stratos.manager.publisher.ArtifactUpdatePublisher;
+import org.apache.stratos.manager.repository.Repository;
+import org.apache.stratos.manager.retriever.DataInsertionAndRetrievalManager;
+import org.apache.stratos.manager.subscriber.Subscriber;
+import org.apache.stratos.manager.subscription.CartridgeSubscription;
+import org.apache.stratos.manager.subscription.factory.CartridgeSubscriptionFactory;
+import org.apache.stratos.manager.subscription.tenancy.SubscriptionMultiTenantBehaviour;
+import org.apache.stratos.manager.subscription.tenancy.SubscriptionSingleTenantBehaviour;
+import org.apache.stratos.manager.subscription.tenancy.SubscriptionTenancyBehaviour;
+import org.apache.stratos.manager.subscription.utils.CartridgeSubscriptionUtils;
+import org.apache.stratos.manager.utils.ApplicationManagementUtil;
+import org.apache.stratos.manager.utils.CartridgeConstants;
+import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+import org.apache.stratos.cloud.controller.pojo.Property;
+import org.wso2.carbon.context.CarbonContext;
+
+import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Manager class for the purpose of managing CartridgeSubscriptionInfo subscriptions, groupings, etc.
+ */
+public class CartridgeSubscriptionManager {
+
+ private static Log log = LogFactory.getLog(CartridgeSubscriptionManager.class);
+ //private static DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager();
+
+ /**
+ * Subscribes to a cartridge
+ *
+ * @param cartridgeType Cartridge type
+ * @param subscriptionAlias Cartridge alias
+ * @param autoscalingPolicyName Autoscaling policy name
+ * @param deploymentPolicyName Deployment Policy name
+ * @param tenantDomain Subscriing tenant's domain
+ * @param tenantId Subscribing tenant's Id
+ * @param tenantAdminUsername Subscribing tenant's admin user name
+ * @param repositoryType Type of repository
+ * @param repositoryURL Repository URL
+ * @param isPrivateRepository If a private or a public repository
+ * @param repositoryUsername Repository username
+ * @param repositoryPassword Repository password
+ *
+ * @return Subscribed CartridgeSubscription object
+ * @throws ADCException
+ * @throws InvalidCartridgeAliasException
+ * @throws DuplicateCartridgeAliasException
+ * @throws PolicyException
+ * @throws UnregisteredCartridgeException
+ * @throws RepositoryRequiredException
+ * @throws RepositoryCredentialsRequiredException
+ * @throws RepositoryTransportException
+ * @throws AlreadySubscribedException
+ * @throws InvalidRepositoryException
+ */
+ public CartridgeSubscription subscribeToCartridge (String cartridgeType, String subscriptionAlias,
+ String autoscalingPolicyName, String deploymentPolicyName,
+ String tenantDomain, int tenantId,
+ String tenantAdminUsername, String repositoryType,
+ String repositoryURL, boolean isPrivateRepository,
+ String repositoryUsername, String repositoryPassword)
+
+ throws ADCException, InvalidCartridgeAliasException, DuplicateCartridgeAliasException, PolicyException,
+ UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
+ RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException {
+
+ return subscribeToCartridgeWithProperties(cartridgeType, subscriptionAlias, autoscalingPolicyName,
+ deploymentPolicyName, tenantDomain, tenantId, tenantAdminUsername,
+ repositoryType, repositoryURL, isPrivateRepository, repositoryUsername,
+ repositoryPassword, null);
+ }
+
+ public CartridgeSubscription subscribeToCartridgeWithProperties(String cartridgeType, String cartridgeAlias,
+ String autoscalingPolicyName, String deploymentPolicyName, String tenantDomain,
+ int tenantId, String tenantAdminUsername, String repositoryType, String repositoryURL,
+ boolean isPrivateRepository, String repositoryUsername, String repositoryPassword, Property[] props)
+
+ throws ADCException,
+ InvalidCartridgeAliasException,
+ DuplicateCartridgeAliasException,
+ PolicyException,
+ UnregisteredCartridgeException,
+ RepositoryRequiredException,
+ RepositoryCredentialsRequiredException,
+ RepositoryTransportException,
+ AlreadySubscribedException,
+ InvalidRepositoryException {
+
+ // validate cartridge alias
+ CartridgeSubscriptionUtils.validateCartridgeAlias(tenantId, cartridgeType, cartridgeAlias);
+
+ CartridgeInfo cartridgeInfo;
+ try {
+ cartridgeInfo =
+ CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
+ if (props != null) {
+ cartridgeInfo.setProperties(props);
+ }
+
+ } catch (UnregisteredCartridgeException e) {
+ String message =
+ cartridgeType +
+ " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
+ log.error(message);
+ throw e;
+
+ } catch (Exception e) {
+ String message = "Error getting info for " + cartridgeType;
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ //Decide tenancy behaviour
+ SubscriptionTenancyBehaviour tenancyBehaviour;
+ if(cartridgeInfo.getMultiTenant()) {
+ tenancyBehaviour = new SubscriptionMultiTenantBehaviour();
+ } else {
+ tenancyBehaviour = new SubscriptionSingleTenantBehaviour();
+ }
+
+ //Create the CartridgeSubscription instance
+ CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.
+ getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour);
+
+ //Create repository
+ Repository repository = cartridgeSubscription.manageRepository(repositoryURL,
+ repositoryUsername,
+ repositoryPassword,
+ isPrivateRepository,
+ cartridgeAlias,
+ cartridgeInfo, tenantDomain);
+
+ //Create subscriber
+ Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
+
+ //create subscription
+ cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName,
+ deploymentPolicyName, repository);
+ cartridgeSubscription.setSubscriptionKey(CartridgeSubscriptionUtils.generateSubscriptionKey()); // TODO ---- fix
+ // properly
+
+ log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername +
+ " subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " +
+ cartridgeType + ", Repo URL: " + repositoryURL + ", Policy: " +
+ autoscalingPolicyName);
+
+ //Create the payload
+ BasicPayloadData basicPayloadData = CartridgeSubscriptionUtils.createBasicPayload(cartridgeSubscription);
+ //Populate the basic payload details
+ basicPayloadData.populatePayload();
+
+ PayloadData payloadData = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(),
+ cartridgeInfo.getType(), basicPayloadData);
+
+ // get the payload parameters defined in the cartridge definition file for this cartridge type
+ if (cartridgeInfo.getProperties() != null && cartridgeInfo.getProperties().length != 0) {
+
+ for (Property property : cartridgeInfo.getProperties()) {
+ // 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 (property.getName()
+ .startsWith(CartridgeConstants.CUSTOM_PAYLOAD_PARAM_NAME_PREFIX)) {
+ String payloadParamName = property.getName();
+ payloadData.add(payloadParamName.substring(payloadParamName.indexOf(".") + 1), property.getValue());
+ }
+ }
+ }
+
+ //check if there are any custom payload entries defined
+ if (cartridgeSubscription.getCustomPayloadEntries() != null) {
+ //add them to the payload
+ Map<String, String> customPayloadEntries = cartridgeSubscription.getCustomPayloadEntries();
+ Set<Map.Entry<String,String>> entrySet = customPayloadEntries.entrySet();
+ for (Map.Entry<String, String> entry : entrySet) {
+ payloadData.add(entry.getKey(), entry.getValue());
+ }
+ }
+
+ cartridgeSubscription.setPayloadData(payloadData);
+
+ // Publish tenant subscribed event to message broker
+ CartridgeSubscriptionUtils.publishTenantSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getCartridgeInfo().getType());
+
+ if(cartridgeInfo.getMultiTenant()) {
+ log.info(" Multitenant --> Publishing Artifact update event -- ");
+ log.info(" Values : cluster id - " + cartridgeSubscription.getClusterDomain() + " tenant - " +
+ cartridgeSubscription.getSubscriber().getTenantId());
+ ArtifactUpdatePublisher publisher = new ArtifactUpdatePublisher(cartridgeSubscription.getRepository(),
+ cartridgeSubscription.getClusterDomain(), // clusterId
+ String.valueOf(cartridgeSubscription.getSubscriber().getTenantId()));
+ publisher.publish();
+ }
+
+ return cartridgeSubscription;
+ }
+
+ /**
+ * Connects / groups cartridges
+ *
+ * @param tenantDomain Tenant's domain
+ * @param cartridgeSubscription CartridgeSubscription instance to which the CartridgeSubscription denoted by
+ * connectingSubscriptionAlias will be connected to
+ * @param connectingSubscriptionAlias Alias of the connecting cartridge
+ *
+ * @throws ADCException
+ * @throws NotSubscribedException
+ * @throws AxisFault
+ */
+// public void connectCartridges (String tenantDomain, CartridgeSubscription cartridgeSubscription,
+// String connectingSubscriptionAlias)
+// throws ADCException, NotSubscribedException, AxisFault {
+//
+// //TODO: retrieve from the cache and connect. For now, new objects are created
+//
+// CartridgeSubscription connectingCartridgeSubscription = getCartridgeSubscription(tenantDomain,
+// connectingSubscriptionAlias);
+//
+// if(cartridgeSubscription == null) {
+// String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + " connecting aborted";
+// log.error(errorMsg);
+// return;
+// }
+//
+// if(connectingCartridgeSubscription == null) {
+// String errorMsg = "No cartridge subscription found in cache for tenant " + tenantDomain + ", alias " +
+// connectingSubscriptionAlias + ", connecting aborted";
+// log.error(errorMsg);
+// return;
+// }
+//
+// CartridgeSubscriptionConnector cartridgeSubscriptionConnector = CartridgeSubscriptionConnectorFactory.
+// getCartridgeInstanceConnector(connectingCartridgeSubscription.getType());
+//
+// cartridgeSubscription.connect(connectingSubscriptionAlias);
+//
+// //PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
+//
+// //get additional payload params for connecting cartridges
+// Properties payloadProperties = cartridgeSubscriptionConnector.createConnection(cartridgeSubscription,
+// connectingCartridgeSubscription);
+// StringBuilder connectionParamsBuilder = new StringBuilder();
+// Set<Map.Entry<Object,Object>> payloadParamEntries = payloadProperties.entrySet();
+//
+// for (Map.Entry<Object, Object> payloadParamEntry : payloadParamEntries) {
+// connectionParamsBuilder.append(",");
+// connectionParamsBuilder.append(payloadParamEntry.getKey().toString());
+// connectionParamsBuilder.append("=");
+// connectionParamsBuilder.append(payloadParamEntry.getValue().toString());
+// }
+//
+// //add connection relates parameters to the payload
+// if(cartridgeSubscription.getPayloadData() != null) {
+// //cartridgeSubscription.getPayloadData().populatePayload(connectionParamsBuilder.toString());
+// } else {
+// //no existing payload
+// /*Payload payload = PayloadFactory.getPayloadDataInstance(cartridgeSubscription.getCartridgeInfo().getProvider(),
+// cartridgeSubscription.getType(), "/tmp/" + tenantDomain + "-" + cartridgeSubscription.getAlias() +
+// ".zip");
+// payload.populatePayload(connectionParamsBuilder.toString());
+// cartridgeSubscription.setPayloadData(payload);*/
+// }
+//
+// }
+
+ /**
+ * Registers the cartridge subscription for the given CartridgeSubscriptionInfo object
+ *
+ * @param cartridgeSubscription CartridgeSubscription subscription
+ *
+ * @return SubscriptionInfo object populated with relevant information
+ * @throws ADCException
+ * @throws UnregisteredCartridgeException
+ */
+ public SubscriptionInfo registerCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
+ throws ADCException, UnregisteredCartridgeException {
+
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo = cartridgeSubscription.registerSubscription(null);
+
+ //set status as 'SUBSCRIBED'
+ cartridgeSubscription.setSubscriptionStatus(CartridgeConstants.SUBSCRIBED);
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*int subscriptionId;
+ try {
+ subscriptionId = PersistenceManager.persistSubscription(cartridgeSubscriptionInfo);
+
+ } catch (Exception e) {
+ String errorMsg = "Error saving subscription for tenant " +
+ cartridgeSubscription.getSubscriber().getTenantDomain() + ", alias " + cartridgeSubscription.getType();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }*/
+
+ //cartridgeSubscription.setSubscriptionId(subscriptionId);
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ try {
+ new DataInsertionAndRetrievalManager().cacheAndPersistSubcription(cartridgeSubscription);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error saving subscription for tenant " +
+ cartridgeSubscription.getSubscriber().getTenantDomain() + ", alias " + cartridgeSubscription.getType();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }
+
+ ApplicationManagementUtil.addDNSEntry(cartridgeSubscriptionInfo.getAlias(), cartridgeSubscription.getType());
+
+ log.info("Successful Subscription: " + cartridgeSubscription.toString());
+ return ApplicationManagementUtil.
+ createSubscriptionResponse(cartridgeSubscriptionInfo, cartridgeSubscription.getRepository());
+ }
+
+ public Collection<CartridgeSubscription> getCartridgeSubscriptions (int tenantId, String type) throws ADCException {
+
+ if (type == null || type.isEmpty()) {
+ return new DataInsertionAndRetrievalManager().getCartridgeSubscriptions(tenantId);
+
+ } else {
+ return new DataInsertionAndRetrievalManager().getCartridgeSubscriptions(tenantId, type);
+ }
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (int tenantId, String subscriptionAlias) {
+
+ return new DataInsertionAndRetrievalManager().getCartridgeSubscription(tenantId, subscriptionAlias);
+ }
+
+ /**
+ * Unsubscribe from a Cartridge
+ *
+ * @param tenantDomain Tenant's domain
+ * @param alias Alias given at subscription time
+ * @throws ADCException
+ * @throws NotSubscribedException
+ */
+ public void unsubscribeFromCartridge (String tenantDomain, String alias)
+ throws ADCException, NotSubscribedException {
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*CartridgeSubscription cartridgeSubscription = getCartridgeSubscription(tenantDomain, alias);
+
+ if(cartridgeSubscription != null) {
+ cartridgeSubscription.removeSubscription();
+
+ // Publish tenant un-subscribed event to message broker
+ CartridgeSubscriptionUtils.publishTenantUnSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getCartridgeInfo().getType());
+ }
+ else {
+ if(log.isDebugEnabled()) {
+ log.debug("No cartridge subscription found with alias " + alias + " for tenant " + tenantDomain);
+ }
+ }*/
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ //fix properly
+ DataInsertionAndRetrievalManager dataInsertionAndRetrievalManager = new DataInsertionAndRetrievalManager();
+
+ CartridgeSubscription cartridgeSubscription = dataInsertionAndRetrievalManager.getCartridgeSubscription(CarbonContext.getThreadLocalCarbonContext().getTenantId(), alias);
+ if(cartridgeSubscription != null) {
+ cartridgeSubscription.removeSubscription();
+
+ //set status as 'UNSUBSCRIBED'
+ //cartridgeSubscription.setSubscriptionStatus(CartridgeConstants.UNSUBSCRIBED);
+
+ // remove subscription
+ try {
+ dataInsertionAndRetrievalManager.removeSubscription(cartridgeSubscription.getSubscriber().getTenantId(), alias);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error removing subscription for tenant " + tenantDomain + ", alias " + cartridgeSubscription.getAlias();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }
+
+ // update with new state
+ /*try {
+ dataInsertionAndRetrievalManager.cacheAndPersistSubcription(cartridgeSubscription);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error updating subscription for tenant " + tenantDomain + ", alias " + cartridgeSubscription.getAlias();
+ log.error(errorMsg);
+ throw new ADCException(errorMsg, e);
+ }*/
+
+ // Publish tenant un-subscribed event to message broker
+ CartridgeSubscriptionUtils.publishTenantUnSubscribedEvent(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getCartridgeInfo().getType());
+ }
+ else {
+ String errorMsg = "No cartridge subscription found with alias " + alias + " for tenant " + tenantDomain;
+ log.error(errorMsg);
+ throw new NotSubscribedException(errorMsg, alias);
+ }
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+ /*
+ /**
+ * Creates and returns a CartridgeSubscription object
+ *
+ * @param tenantDomain Tenant's domain
+ * @param alias alias given at subscription
+ *
+ * @return CartridgeSubscription object populated with relevant information
+ * @throws ADCException
+ * @throws NotSubscribedException
+ */
+ /*public CartridgeSubscription getCartridgeSubscription(String tenantDomain, String alias)
+ throws ADCException, NotSubscribedException {
+
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo = getCartridgeSubscriptionInfo(tenantDomain, alias);
+
+ CartridgeInfo cartridgeInfo;
+ try {
+ cartridgeInfo = CloudControllerServiceClient.getServiceClient().
+ getCartridgeInfo(cartridgeSubscriptionInfo.getCartridge());
+ } catch (Exception e) {
+ throw new ADCException(e.getMessage(), e);
+ }
+
+ return populateCartridgeSubscriptionInformation(cartridgeInfo, cartridgeSubscriptionInfo);
+ }*/
+ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+ //TODO: remove
+ /*public CartridgeSubscription deployMultitenantService(String cartridgeType, String cartridgeAlias,
+ String autoscalingPolicyName, String deploymentPolicyName,
+ String tenantDomain, int tenantId,
+ String tenantAdminUsername,
+ String clusterDomain, String clusterSubdomain,
+ String repositoryURL, boolean isPrivateRepository,
+ String repositoryUsername, String repositoryPassword, String tenantRange) throws ADCException, InvalidCartridgeAliasException, DuplicateCartridgeAliasException, PolicyException,
+ UnregisteredCartridgeException, RepositoryRequiredException, RepositoryCredentialsRequiredException,
+ RepositoryTransportException, AlreadySubscribedException, InvalidRepositoryException {
+
+ log.info(" ---- in deploy multitenant service ---- ");
+ //validate cartridge alias
+ ApplicationManagementUtil.validateCartridgeAlias(cartridgeAlias, cartridgeType);
+
+ CartridgeInfo cartridgeInfo;
+ try {
+ cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
+
+ } catch (UnregisteredCartridgeException e) {
+ String message = cartridgeType
+ + " is not a valid cartridgeSubscription type. Please try again with a valid cartridgeSubscription type.";
+ log.error(message);
+ throw e;
+
+ } catch (Exception e) {
+ String message = "Error getting info for " + cartridgeType;
+ log.error(message, e);
+ throw new ADCException(message, e);
+ }
+
+ Subscriber subscriber = new Subscriber(tenantAdminUsername, tenantId, tenantDomain);
+
+ CartridgeSubscription cartridgeSubscription = new FrameworkCartridgeSubscription(cartridgeInfo,true);
+ log.info("-- Cartridge subscription is created --- ");
+ Repository repository = cartridgeSubscription.manageRepository(repositoryURL, repositoryUsername,
+ repositoryPassword, isPrivateRepository, cartridgeAlias, cartridgeInfo, tenantDomain);
+ log.info("-- Repository creation is done --- ");
+ cartridgeSubscription.createSubscription(subscriber, cartridgeAlias, autoscalingPolicyName, deploymentPolicyName, repository);
+ cartridgeSubscription.setSubscriptionKey(generateSubscriptionKey());
+
+ //cartridgeSubscription.setClusterDomain(clusterDomain);
+ //cartridgeSubscription.setClusterSubDomain(clusterDomain);
+
+ log.info("-- subscription key is generated --- ");
+ log.info("Tenant [" + tenantId + "] with username [" + tenantAdminUsername +
+ " subscribed to " + "] Cartridge Alias " + cartridgeAlias + ", Cartridge Type: " + cartridgeType +
+ ", Repo URL: " + repositoryURL + ", Policy: " + autoscalingPolicyName);
+
+ // TODO -- payload would need some additional params - like Puppet master IP .. etc
+
+ Payload payload = PayloadFactory.getPayloadDataInstance(cartridgeInfo.getProvider(), cartridgeType,
+ "/tmp/" + tenantDomain + "-" + cartridgeAlias + ".zip");
+ PayloadArg payloadArg = cartridgeSubscription.createPayloadParameters();
+
+ if (payloadArg != null) {
+ //populate the payload
+ payload.populatePayload(payloadArg);
+
+ // populate payload from UI here
+ payloadArg.setTenantRange(tenantRange);
+ //payloadArg.setDeployment("default");
+ payloadArg.setServiceDomain(cartridgeAlias+"."+cartridgeInfo.getHostName()+".domain"); // This is cluster id
+ cartridgeSubscription.setPayloadData(payload);
+ }
+
+ //get the payload parameters defined in the cartridge definition file for this cartridge type
+ if (cartridgeInfo.getProperties() != null && cartridgeInfo.getProperties().length != 0) {
+
+ StringBuilder customPayloadParamsBuilder = new StringBuilder();
+ for(Property property : cartridgeInfo.getProperties()) {
+ //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(property.getName().startsWith(CartridgeConstants.CUSTOM_PAYLOAD_PARAM_NAME_PREFIX)) {
+ String payloadParamName = property.getName();
+ customPayloadParamsBuilder.append(",");
+ customPayloadParamsBuilder.append(payloadParamName.
+ substring(payloadParamName.indexOf(".") + 1));
+ customPayloadParamsBuilder.append("=");
+ customPayloadParamsBuilder.append(property.getValue());
+ }
+ }
+ //if valid payload related parameters are found in the cartridge definition file, add them to the payload
+ String customPayloadParamString = customPayloadParamsBuilder.toString();
+ if(!customPayloadParamString.isEmpty()) {
+ payload.populatePayload(customPayloadParamString);
+ cartridgeSubscription.setPayloadData(payload);
+ }
+ }
+
+ return cartridgeSubscription;
+
+ }*/
+
+ /*private CartridgeSubscriptionInfo getCartridgeSubscriptionInfo (String tenantDomain, String alias)
+ throws ADCException, NotSubscribedException {
+
+ CartridgeSubscriptionInfo subscription;
+ try {
+ subscription = PersistenceManager.getSubscription(tenantDomain, alias);
+
+ } catch (Exception e) {
+ String msg = "Failed to get subscriptions for " + tenantDomain;
+ log.error(msg, e);
+ throw new ADCException(msg, e);
+ }
+
+ if (subscription == null) {
+ String msg = "Tenant " + tenantDomain + " has not subscribed for cartridges";
+ log.error(msg);
+ throw new NotSubscribedException(msg, msg);
+ }
+
+ return subscription;
+
+ }*/
+
+ /*private List<CartridgeSubscriptionInfo> getCartridgeSubscriptions (int tenantId) throws ADCException, NotSubscribedException {
+
+ List<CartridgeSubscriptionInfo> subscriptions;
+ try {
+ subscriptions = PersistenceManager.getSubscriptionsForTenant(tenantId);
+
+ } catch (Exception e) {
+ String msg = "Failed to get subscriptions for " + tenantId;
+ log.error(msg, e);
+ throw new ADCException(msg, e);
+ }
+
+ if (subscriptions == null) {
+ String msg = "Tenant " + tenantId + " has not subscribed for cartridges";
+ log.error(msg);
+ throw new NotSubscribedException(msg, msg);
+ }
+
+ return subscriptions;
+ }*/
+
+ /*private CartridgeSubscription populateCartridgeSubscriptionInformation(CartridgeInfo cartridgeInfo,
+ CartridgeSubscriptionInfo cartridgeSubscriptionInfo)
+ throws ADCException {
+
+ SubscriptionTenancyBehaviour tenancyBehaviour;
+ if(cartridgeInfo.getMultiTenant()) {
+ tenancyBehaviour = new SubscriptionMultiTenantBehaviour();
+ } else {
+ tenancyBehaviour = new SubscriptionSingleTenantBehaviour();
+ }
+
+ CartridgeSubscription cartridgeSubscription = CartridgeSubscriptionFactory.
+ getCartridgeSubscriptionInstance(cartridgeInfo, tenancyBehaviour);
+
+ cartridgeSubscription.setSubscriptionId(cartridgeSubscriptionInfo.getSubscriptionId());
+ cartridgeSubscription.setAlias(cartridgeSubscriptionInfo.getAlias());
+ cartridgeSubscription.setHostName(cartridgeSubscriptionInfo.getHostName());
+ cartridgeSubscription.setClusterDomain(cartridgeSubscriptionInfo.getClusterDomain());
+ cartridgeSubscription.setClusterSubDomain(cartridgeSubscriptionInfo.getClusterSubdomain());
+ cartridgeSubscription.setMgtClusterDomain(cartridgeSubscriptionInfo.getMgtClusterDomain());
+ cartridgeSubscription.setMgtClusterSubDomain(cartridgeSubscriptionInfo.getMgtClusterSubDomain());
+ cartridgeSubscription.setAutoscalingPolicyName(cartridgeSubscriptionInfo.getPolicy());
+ Subscriber subscriber = new Subscriber(CarbonContext.getThreadLocalCarbonContext().getUsername(),
+ cartridgeSubscriptionInfo.getTenantId(), cartridgeSubscriptionInfo.getTenantDomain());
+ cartridgeSubscription.setSubscriber(subscriber);
+ cartridgeSubscription.setRepository(cartridgeSubscriptionInfo.getRepository());
+
+ return cartridgeSubscription;
+ }*/
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/ApplicationCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/ApplicationCartridgePayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/ApplicationCartridgePayloadData.java
new file mode 100644
index 0000000..5506427
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/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.manager.payload;
+
+public class ApplicationCartridgePayloadData extends PayloadData {
+
+ public ApplicationCartridgePayloadData(BasicPayloadData basicPayloadData) {
+ super(basicPayloadData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/BasicPayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/BasicPayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/BasicPayloadData.java
new file mode 100644
index 0000000..916fa9e
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/BasicPayloadData.java
@@ -0,0 +1,224 @@
+/*
+ * 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.manager.payload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.utils.CartridgeConstants;
+
+import java.io.Serializable;
+
+/**
+ * Contains basic payload data fields
+ */
+public class BasicPayloadData implements Serializable {
+
+ private static Log log = LogFactory.getLog(BasicPayloadData.class);
+
+ 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 subscriptionKey;
+ private String applicationPath;
+ private String gitRepositoryUrl;
+ private String portMappings;
+ private String multitenant;
+
+ protected StringBuilder payloadBuilder;
+
+ public BasicPayloadData() {
+
+ }
+
+ public void populatePayload () {
+
+ payloadBuilder = new StringBuilder();
+
+ 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("GIT_REPO=" + getGitRepositoryUrl());
+ payloadBuilder.append(",");
+ payloadBuilder.append("PORTS=" + getPortMappings());
+
+ //Payload Data exposed as system variables
+ payloadBuilder.append(",");
+ payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+ }
+
+ 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 () {
+
+ /*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("GIT_REPO=" + getGitRepositoryUrl());
+ payloadBuilder.append(",");
+ payloadBuilder.append("PORTS=" + getPortMappings());
+
+ //Payload Data exposed as system variables
+ payloadBuilder.append(",");
+ payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));*/
+
+ 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;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/CarbonPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/CarbonPayload.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/CarbonPayload.java
new file mode 100644
index 0000000..8e2c970
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/CarbonPayload.java
@@ -0,0 +1,43 @@
+///*
+// * 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.manager.payload;
+//
+//import org.apache.stratos.manager.utils.CartridgeConstants;
+//
+//public class CarbonPayload extends Payload {
+//
+// public CarbonPayload(String payloadFilePath) {
+// super(payloadFilePath);
+// }
+//
+// public void populatePayload(PayloadArg payloadArg) {
+//
+// super.populatePayload(payloadArg);
+// payloadBuilder.append(",");
+//
+// //carbon specific
+// //payloadBuilder.append("DEPLOYMENT=" + payloadArg.getDeployment());
+// //payloadBuilder.append(",");
+// //payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+// //payloadBuilder.append(",");
+// payloadBuilder.append("MULTITENANT=" + payloadArg.getCartridgeInfo().getMultiTenant());
+//
+// }
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataCartridgePayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataCartridgePayloadData.java
new file mode 100644
index 0000000..2c71157
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/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.manager.payload;
+
+public class DataCartridgePayloadData extends PayloadData {
+
+ public DataCartridgePayloadData(BasicPayloadData basicPayloadData) {
+ super(basicPayloadData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataPayload.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataPayload.java
new file mode 100644
index 0000000..f96edb7
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/DataPayload.java
@@ -0,0 +1,40 @@
+///*
+// * 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.manager.payload;
+//
+//public class DataPayload extends NonCarbonPayload {
+//
+// public DataPayload(String payloadFilePath) {
+// super(payloadFilePath);
+// }
+//
+// public void populatePayload(PayloadArg payloadArg) {
+//
+// super.populatePayload(payloadArg);
+// payloadBuilder.append(",");
+//
+// //data specific
+// payloadBuilder.append("MYSQL_USER=" + payloadArg.getDataCartridgeAdminUser());
+// payloadBuilder.append(",");
+// payloadBuilder.append("MYSQL_HOST=" + payloadArg.getDataCartridgeHost());
+// payloadBuilder.append(",");
+// payloadBuilder.append("MYSQL_PASSWORD=" + payloadArg.getDataCartridgeAdminPassword());
+// }
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/FramewrokCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/FramewrokCartridgePayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/FramewrokCartridgePayloadData.java
new file mode 100644
index 0000000..613fdec
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/FramewrokCartridgePayloadData.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.manager.payload;
+
+public class FramewrokCartridgePayloadData extends PayloadData {
+
+ public FramewrokCartridgePayloadData(BasicPayloadData basicPayloadData) {
+ super(basicPayloadData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/LoadBalancerCartridgePayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/LoadBalancerCartridgePayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/LoadBalancerCartridgePayloadData.java
new file mode 100644
index 0000000..79e88c9
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/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.manager.payload;
+
+public class LoadBalancerCartridgePayloadData extends PayloadData {
+
+ public LoadBalancerCartridgePayloadData(BasicPayloadData basicPayloadData) {
+ super(basicPayloadData);
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/NonCarbonPayload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/NonCarbonPayload.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/NonCarbonPayload.java
new file mode 100644
index 0000000..bcd7bfd
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/NonCarbonPayload.java
@@ -0,0 +1,125 @@
+///*
+// * 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.manager.payload;
+//
+//import org.apache.stratos.manager.utils.CartridgeConstants;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//
+//public class NonCarbonPayload extends Payload {
+//
+// public NonCarbonPayload(String payloadFilePath) {
+// super(payloadFilePath);
+// }
+//
+// public void populatePayload(PayloadArg payloadArg) {
+//
+// super.populatePayload(payloadArg);
+// payloadBuilder.append(",");
+//
+// //general
+// payloadBuilder.append("REPO_INFO_EPR=" + System.getProperty(CartridgeConstants.REPO_INFO_EPR));
+// payloadBuilder.append(",");
+// payloadBuilder.append("CARTRIDGE_AGENT_EPR=" + System.getProperty(CartridgeConstants.CARTRIDGE_AGENT_EPR));
+// payloadBuilder.append(",");
+// payloadBuilder.append("APP_PATH=" + payloadArg.getCartridgeInfo().getBaseDir());
+//
+// //port mapping specific
+// if(payloadArg.getCartridgeInfo() != null) {
+// payloadBuilder.append(",");
+// payloadBuilder.append(createPortMappingPayloadString(payloadArg.getCartridgeInfo()));
+// }
+//
+// //git repository specific
+// payloadBuilder.append(",");
+// payloadBuilder.append("GIT_REPO=" + getRepositoryUrlParam(payloadArg));
+//
+// //BAM specific
+// payloadBuilder.append(",");
+// payloadBuilder.append("BAM_IP=" + System.getProperty(CartridgeConstants.BAM_IP));
+// payloadBuilder.append(",");
+// payloadBuilder.append("BAM_PORT=" + System.getProperty(CartridgeConstants.BAM_PORT));
+//
+// //TODO: remove
+// //Autoscale policy specific
+// /*if(payloadArg.getPolicy() != null) {
+// payloadBuilder.append(getAutoscalingParams(payloadArg.getPolicy()));
+// }*/
+//
+// }
+//
+// private 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("\\|$", "");
+// /*String portMappingPayloadString = null;
+// if (portMappingString.charAt(portMappingString.length() - 1) == '|') {
+// portMappingPayloadString = portMappingString.substring(0, portMappingString.length() - 1);
+// } else {
+// portMappingPayloadString = portMappingString;
+// }*/
+//
+// return "PORTS=" + portMappingString;
+// }
+//
+// private String getRepositoryUrlParam (PayloadArg arg) {
+//
+// String gitRepoURL = null;
+// if (arg.getRepoURL() != null) {
+// gitRepoURL = arg.getRepoURL();
+// } else {
+// gitRepoURL = "git@" + System.getProperty(CartridgeConstants.GIT_HOST_IP) + ":" + arg.getTenantDomain()
+// + System.getProperty("file.separator") + arg.getCartridgeAlias() + ".git";
+// }
+// return gitRepoURL;
+// }
+//
+// //TODO: remove
+// /*private String getAutoscalingParams (Policy policy) {
+//
+// DecimalFormat df = new DecimalFormat("##.##");
+// df.setParseBigDecimal(true);
+//
+// StringBuilder autoscalingPayloadBuilder = new StringBuilder();
+//
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("MIN=" + policy.getMinAppInstances());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("MAX=" + policy.getMaxAppInstances());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("ALARMING_LOWER_RATE=" + policy.getAlarmingLowerRate());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("ALARMING_UPPER_RATE=" + policy.getAlarmingUpperRate());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("MAX_REQUESTS_PER_SEC=" + policy.getMaxRequestsPerSecond());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("ROUNDS_TO_AVERAGE=" + policy.getRoundsToAverage());
+// autoscalingPayloadBuilder.append(",");
+// autoscalingPayloadBuilder.append("SCALE_DOWN_FACTOR=" + policy.getScaleDownFactor());
+//
+// return autoscalingPayloadBuilder.toString();
+// }*/
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/Payload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/Payload.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/Payload.java
new file mode 100644
index 0000000..551979e
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/Payload.java
@@ -0,0 +1,224 @@
+///*
+// * 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.manager.payload;
+//
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.stratos.manager.exception.ADCException;
+//import org.apache.stratos.manager.utils.CartridgeConstants;
+//
+//import java.io.*;
+//import java.util.zip.ZipEntry;
+//import java.util.zip.ZipOutputStream;
+//
+//public abstract class Payload implements Serializable {
+//
+// private static Log log = LogFactory.getLog(Payload.class);
+//
+// protected StringBuilder payloadBuilder;
+// protected String payloadFilePath;
+// protected PayloadArg payloadArg;
+//
+// /**
+// * Constructor
+// *
+// * @param payloadFilePath Full path at which the payload file is created
+// */
+// public Payload(String payloadFilePath) {
+// this.payloadFilePath = payloadFilePath;
+// payloadBuilder = new StringBuilder();
+// }
+//
+// /**
+// * Pupulates the Payload subscription with relevant parameters and values given in PayloadArg subscription
+// *
+// * @param payloadArg PayloadArg subscription with relevant values
+// */
+// public void populatePayload(PayloadArg payloadArg) {
+//
+// this.payloadArg = payloadArg;
+// payloadBuilder.append("HOST_NAME=" + payloadArg.getHostName());
+// payloadBuilder.append(",");
+// payloadBuilder.append("TENANT_ID=" + payloadArg.getTenantId());
+// payloadBuilder.append(",");
+// payloadBuilder.append("TENANT_RANGE=" + payloadArg.getTenantRange());
+// payloadBuilder.append(",");
+// payloadBuilder.append("TENANT_CONTEXT=" + payloadArg.getTenantDomain()); // No need to send those now
+// payloadBuilder.append(",");
+// payloadBuilder.append("CARTRIDGE_ALIAS=" + payloadArg.getCartridgeAlias());
+// payloadBuilder.append(",");
+// payloadBuilder.append("MB_IP=" + System.getProperty(CartridgeConstants.MB_IP)); // No need to send those now, will get from Puppet
+// payloadBuilder.append(",");
+// payloadBuilder.append("MB_PORT=" + System.getProperty(CartridgeConstants.MB_PORT)); // No need to send those now, will get from Puppet
+// payloadBuilder.append(",");
+// payloadBuilder.append("CEP_IP=" + System.getProperty(CartridgeConstants.CEP_IP)); // No need to send those now, will get from Puppet
+// payloadBuilder.append(",");
+// payloadBuilder.append("CEP_PORT=" + System.getProperty(CartridgeConstants.CEP_PORT)); // No need to send those now, will get from Puppet
+// payloadBuilder.append(",");
+// payloadBuilder.append("CLUSTER_ID=" + payloadArg.getServiceDomain());
+// payloadBuilder.append(",");
+// payloadBuilder.append("CARTRIDGE_KEY=" + payloadArg.getSubscriptionKey());
+// payloadBuilder.append(",");
+// payloadBuilder.append("DEPLOYMENT=" + "default"); // hard coded to default
+// payloadBuilder.append(",");
+// payloadBuilder.append("PUPPET_IP=" + System.getProperty(CartridgeConstants.PUPPET_IP));
+//
+//
+// if(payloadArg.getCartridgeInfo() != null) {
+// payloadBuilder.append(",");
+// payloadBuilder.append("SERVICE_NAME=" + payloadArg.getCartridgeInfo().getType());
+// }
+//
+// //add the user defined payload String (if any)
+// //this should be of the format <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
+// if (payloadArg.getUserDefinedPayload() != null && !payloadArg.getUserDefinedPayload().trim().isEmpty()) {
+//
+// if(!payloadBuilder.toString().endsWith(",")) {
+// payloadBuilder.append(",");
+// }
+// payloadBuilder.append(payloadArg.getUserDefinedPayload());
+// }
+// }
+//
+// /**
+// * Add the user defined payload String (if any). This should be of the format
+// * <key_1>=<value_1>,<key_2>=<value_2>,....<key_n>=<value_n>
+// *
+// * @param payloadString String object with payload information
+// */
+// public void populatePayload (String payloadString) {
+//
+// if(payloadBuilder.toString().isEmpty()) {
+// if(payloadString.startsWith(",")) {
+// payloadBuilder.append(payloadString.substring(1));
+// }
+// else {
+// payloadBuilder.append(payloadString);
+// }
+// } else {
+// if(!payloadBuilder.toString().endsWith(",") && !payloadString.startsWith(",")) {
+// payloadBuilder.append(",");
+// payloadBuilder.append(payloadString);
+// }
+// else if (payloadBuilder.toString().endsWith(",") && payloadString.startsWith(",")) {
+// payloadBuilder.append(payloadString.substring(1));
+// }
+// else {
+// payloadBuilder.append(payloadString);
+// }
+// }
+// }
+//
+// /**
+// * Create the actual payload in the file system
+// *
+// * @return DataHandler subscription with payload
+// * @throws ADCException in case of an error
+// */
+// public StringBuilder createPayload () throws ADCException {
+//
+// if(payloadBuilder.length() == 0) {
+// log.warn("Payload string length is zero. Create payload failed");
+// return null;
+// }
+//
+// File payloadFile = new File(getPayloadFilePath());
+// if(payloadFile.exists()) {
+// payloadFile.delete();
+// }
+//
+// log.info("** Payload ** " + payloadBuilder.toString());
+//
+// return payloadBuilder;
+// }
+//
+// /**
+// * Adds content to a zip file
+// *
+// * @param dir Name of directory
+// * @param fileName Name of file to add
+// * @param zos ZipOutputStream subscription to write
+// * @throws ADCException in an error
+// */
+// private void addToZipFile(String dir, String fileName, ZipOutputStream zos) throws ADCException {
+//
+// log.info("Writing '" + fileName + "' to zip file");
+//
+// File file = new File(dir + File.separator + fileName);
+// FileInputStream fis;
+// try {
+// fis = new FileInputStream(file);
+//
+// } catch (FileNotFoundException e) {
+// log.error(e.getMessage());
+// throw new ADCException(e.getMessage(), e);
+// }
+//
+// ZipEntry zipEntry = new ZipEntry(fileName);
+// try {
+// zos.putNextEntry(zipEntry);
+//
+// } catch (IOException e) {
+// log.error(e.getMessage());
+// throw new ADCException(e.getMessage(), e);
+// }
+//
+// byte[] bytes = new byte[1024];
+// int length;
+//
+// try {
+// while ((length = fis.read(bytes)) >= 0) {
+// zos.write(bytes, 0, length);
+// }
+// } catch (IOException e) {
+// log.error(e.getMessage());
+// throw new ADCException(e.getMessage(), e);
+// }
+//
+// try {
+// zos.closeEntry();
+// fis.close();
+//
+// } catch (IOException e) {
+// log.error(e.getMessage());
+// throw new ADCException(e.getMessage(), e);
+// }
+// }
+//
+// public String getPayloadFilePath() {
+// return payloadFilePath;
+// }
+//
+// public void setPayloadFilePath(String payloadFilePath) {
+// this.payloadFilePath = payloadFilePath;
+// }
+//
+// public boolean delete () {
+// return new File(payloadFilePath).delete();
+// }
+//
+// public PayloadArg getPayloadArg() {
+// return payloadArg;
+// }
+//
+// public void setPayloadArg(PayloadArg payloadArg) {
+// this.payloadArg = payloadArg;
+// }
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadArg.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadArg.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadArg.java
new file mode 100755
index 0000000..f22da5c
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadArg.java
@@ -0,0 +1,194 @@
+///**
+// * 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.manager.payload;
+//
+//import org.apache.stratos.manager.dto.Policy;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//
+//public class PayloadArg {
+//
+// //basic
+// private String hostName;
+// private String tenantRange;
+// private int tenantId;
+// private String serviceName;
+// private String cartridgeAlias;
+// private String tenantDomain;
+// private CartridgeInfo cartridgeInfo;
+// private Policy policy;
+// private String repoURL;
+// private boolean multitenant;
+//
+// //other
+// private String userDefinedPayload;
+// private String serviceDomain;
+// private String serviceSubDomain;
+// private String mgtServiceDomain;
+// private String mgtServiceSubDomain;
+// private String deployment;
+// private String subscriptionKey;
+//
+// //data cartridge specific
+// private String dataCartridgeHost;
+// private String dataCartridgeAdminUser;
+// private String dataCartridgeAdminPassword;
+//
+//
+// public CartridgeInfo getCartridgeInfo() {
+// return cartridgeInfo;
+// }
+// public void setCartridgeInfo(CartridgeInfo cartridgeInfo) {
+// this.cartridgeInfo = cartridgeInfo;
+// }
+// public Policy getPolicy() {
+// return policy;
+// }
+// public void setPolicy(Policy policy) {
+// this.policy = policy;
+// }
+// public String getRepoURL() {
+// return repoURL;
+// }
+// public void setRepoURL(String repoURL) {
+// this.repoURL = repoURL;
+// }
+// public String getDataCartridgeAdminPassword() {
+// return dataCartridgeAdminPassword;
+// }
+// public void setDataCartridgeAdminPassword(String dataCartridgeAdminPassword) {
+// this.dataCartridgeAdminPassword = dataCartridgeAdminPassword;
+// }
+// public String getDataCartridgeHost() {
+// return dataCartridgeHost;
+// }
+// public void setDataCartridgeHost(String dataCartridgeHost) {
+// this.dataCartridgeHost = dataCartridgeHost;
+// }
+// public int getTenantId() {
+// return tenantId;
+// }
+// public void setTenantId(int tenantId) {
+// this.tenantId = tenantId;
+// }
+// public String getTenantDomain() {
+// return tenantDomain;
+// }
+// public void setTenantDomain(String tenantDomain) {
+// this.tenantDomain = tenantDomain;
+// }
+// public String getUserDefinedPayload() {
+// return userDefinedPayload;
+// }
+// public void setUserDefinedPayload(String userDefinedPayload) {
+// this.userDefinedPayload = userDefinedPayload;
+// }
+// public boolean isMultitenant() {
+// return multitenant;
+// }
+// public void setMultitenant(boolean multitenant) {
+// this.multitenant = multitenant;
+// }
+// public String getCartridgeAlias() {
+// return cartridgeAlias;
+// }
+// public void setCartridgeAlias(String cartridgeAlias) {
+// this.cartridgeAlias = cartridgeAlias;
+// }
+//
+// public String getTenantRange() {
+// return tenantRange;
+// }
+//
+// public void setTenantRange(String tenantRange) {
+// this.tenantRange = tenantRange;
+// }
+//
+// public String getHostName() {
+// return hostName;
+// }
+//
+// public void setHostName(String hostName) {
+// this.hostName = hostName;
+// }
+//
+// public String getServiceDomain() {
+// return serviceDomain;
+// }
+//
+// public void setServiceDomain(String serviceDomain) {
+// this.serviceDomain = serviceDomain;
+// }
+//
+// public String getServiceSubDomain() {
+// return serviceSubDomain;
+// }
+//
+// public void setServiceSubDomain(String serviceSubDomain) {
+// this.serviceSubDomain = serviceSubDomain;
+// }
+//
+// public String getMgtServiceDomain() {
+// return mgtServiceDomain;
+// }
+//
+// public void setMgtServiceDomain(String mgtServiceDomain) {
+// this.mgtServiceDomain = mgtServiceDomain;
+// }
+//
+// public String getMgtServiceSubDomain() {
+// return mgtServiceSubDomain;
+// }
+//
+// public void setMgtServiceSubDomain(String mgtServiceSubDomain) {
+// this.mgtServiceSubDomain = mgtServiceSubDomain;
+// }
+//
+// public String getDataCartridgeAdminUser() {
+// return dataCartridgeAdminUser;
+// }
+//
+// public void setDataCartridgeAdminUser(String dataCartridgeAdminUser) {
+// this.dataCartridgeAdminUser = dataCartridgeAdminUser;
+// }
+//
+// public String getDeployment() {
+// return deployment;
+// }
+//
+// public void setDeployment(String deployment) {
+// this.deployment = deployment;
+// }
+//
+// public String getServiceName() {
+// return serviceName;
+// }
+//
+// public void setServiceName(String serviceName) {
+// this.serviceName = serviceName;
+// }
+// public String getSubscriptionKey() {
+// return subscriptionKey;
+// }
+// public void setSubscriptionKey(String subscriptionKey) {
+// this.subscriptionKey = subscriptionKey;
+// }
+//
+//
+//}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadData.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadData.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadData.java
new file mode 100644
index 0000000..168e656
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadData.java
@@ -0,0 +1,74 @@
+/*
+ * 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.manager.payload;
+
+import java.io.Serializable;
+
+public abstract class PayloadData implements Serializable {
+
+ //protected StringBuilder additionalPayloadDataBuilder;
+ //private Map<String, String> payloadDataMap;
+ private BasicPayloadData basicPayloadData;
+ private StringBuilder completePayloadDataBuilder;
+
+ public PayloadData(BasicPayloadData basicPayloadData) {
+ this.setBasicPayloadData(basicPayloadData);
+ //additionalPayloadDataBuilder = new StringBuilder();
+ completePayloadDataBuilder = new StringBuilder(basicPayloadData.getPayloadData());
+ //payloadDataMap = new HashMap<String, String>();
+ }
+
+ public void add (String payloadDataName, String payloadDataValue) {
+
+ if(completePayloadDataBuilder.length() > 0) {
+ completePayloadDataBuilder.append(",");
+ }
+
+ //payloadDataMap.putSubscription(payloadDataName, payloadDataValue);
+ completePayloadDataBuilder.append(payloadDataName + "=" + payloadDataValue);
+ }
+
+ /*public String getPayloadDataValue (String payloadDataName) {
+ return payloadDataMap.get(payloadDataName);
+ }*/
+
+ public StringBuilder getCompletePayloadData () {
+
+ /*if(additionalPayloadDataBuilder.length() > 0) {
+ return getBasicPayloadData().getPayloadData().append(",").append(additionalPayloadDataBuilder);
+ } else {
+ return getBasicPayloadData().getPayloadData();
+ }*/
+
+ return completePayloadDataBuilder;
+ }
+
+ 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/incubator-stratos/blob/9d280533/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadFactory.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadFactory.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadFactory.java
new file mode 100755
index 0000000..c32371e
--- /dev/null
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/payload/PayloadFactory.java
@@ -0,0 +1,60 @@
+/**
+ * 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.manager.payload;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.exception.ADCException;
+import org.apache.stratos.manager.utils.CartridgeConstants;
+
+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
+ * @throws ADCException if no matching criteria is found to create a payload
+ */
+ public static PayloadData getPayloadDataInstance(String cartridgeProvider, String cartridgeType,
+ BasicPayloadData basicPayloadData)
+ throws ADCException {
+
+ PayloadData payloadData = null;
+
+ //TODO: fix after adding the property Category to Cartridge Definition
+ if (cartridgeProvider.equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER)) {
+ payloadData = new DataCartridgePayloadData(basicPayloadData);
+ } else {
+ payloadData = new FramewrokCartridgePayloadData(basicPayloadData);
+ }
+
+ if(payloadData == null) {
+ throw new ADCException("Unable to find matching payload for cartridge type " + cartridgeType +
+ ", provider " + cartridgeProvider);
+ }
+
+ return payloadData;
+ }
+}