You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ud...@apache.org on 2014/07/11 20:32:31 UTC
[6/6] git commit: persist CompositeApplication
persist CompositeApplication
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/308f6d34
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/308f6d34
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/308f6d34
Branch: refs/heads/4.0.0-grouping
Commit: 308f6d34fd22c4e02c3f7c6b7f8476f005385503
Parents: fad15e2
Author: Udara Liyanage <ud...@wso2.com>
Authored: Fri Jul 11 21:15:28 2014 +0530
Committer: Udara Liyanage <ud...@wso2.com>
Committed: Fri Jul 11 21:15:28 2014 +0530
----------------------------------------------------------------------
.../CompositeApplicationManager.java | 5 +-
.../application/beans/CartridgeDefinition.java | 8 ++++
.../application/beans/ComponentDefinition.java | 3 --
.../manager/persistence/PersistenceManager.java | 2 +
.../RegistryBasedPersistenceManager.java | 50 +++++++++++++++++++-
.../DataInsertionAndRetrievalManager.java | 34 ++++++++++++-
.../stratos/manager/utils/Serializer.java | 22 +++++++++
.../rest/endpoint/services/ServiceUtils.java | 4 +-
8 files changed, 121 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
index c905320..2a02646 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/CompositeApplicationManager.java
@@ -19,7 +19,7 @@ public class CompositeApplicationManager {
private static Log log = LogFactory.getLog(CompositeApplicationManager.class);
- public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition) throws CompositeApplicationDefinitionException {
+ public void deployCompositeApplication (CompositeAppDefinition compositeAppDefinition) throws CompositeApplicationDefinitionException, PersistenceManagerException {
// if (log.isDebugEnabled()) {
// log.debug("deploying composite application " + configCompositeApplication.getAlias());
// }
@@ -34,6 +34,9 @@ public class CompositeApplicationManager {
CompositeApplicationParser compositeAppParser = new DefaultCompositeApplicationParser();
compositeAppParser.parse(compositeAppDefinition);
+
+ DataInsertionAndRetrievalManager mgr = new DataInsertionAndRetrievalManager();
+ mgr.persistCompositeApplication(compositeAppDefinition);
// TODO: traverse the data structure and create the subscriptions
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
index 7788dc6..bb19145 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/CartridgeDefinition.java
@@ -66,4 +66,12 @@ public class CartridgeDefinition {
public void setUsername(String username) {
this.username = username;
}
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
index 6a2ab2b..55be3fe 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/composite/application/beans/ComponentDefinition.java
@@ -2,9 +2,6 @@ package org.apache.stratos.manager.composite.application.beans;
import java.util.List;
-/**
- * Created by udara on 7/11/14.
- */
public class ComponentDefinition {
private String group;
private String alias;
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
index 65b31c4..c0203eb 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/PersistenceManager.java
@@ -19,6 +19,7 @@
package org.apache.stratos.manager.persistence;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.exception.PersistenceManagerException;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -57,6 +58,7 @@ public abstract class PersistenceManager {
//Grouping
public abstract void persistDeployedCompositeApplication(ConfigCompositeApplication configCompositeApplication) throws PersistenceManagerException;
+ public abstract void persistCompositeApplication(CompositeAppDefinition compositeApplication) throws PersistenceManagerException;
//Grouping
public abstract void removeDeployedCompositeApplication(String configCompositeApplicationAlias) throws PersistenceManagerException;
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
index 50bd56b..2ef2680 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/persistence/RegistryBasedPersistenceManager.java
@@ -21,6 +21,7 @@ package org.apache.stratos.manager.persistence;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.exception.PersistenceManagerException;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -249,7 +250,33 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
persistCompApplication(configCompositeAapplication);
}
}
-
+
+ public void persistCompositeApplication (CompositeAppDefinition configCompositeApplication)
+ throws PersistenceManagerException {
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("trying to persist ConfigCompositeApplication [ %s ]", configCompositeApplication.getAlias()));
+ }
+ int tenantId = CarbonContext.getThreadLocalCarbonContext().getTenantId();
+ if (tenantId != MultitenantConstants.SUPER_TENANT_ID) {
+ // TODO: This is only a workaround. Proper fix is to write to tenant registry
+ try {
+ PrivilegedCarbonContext.startTenantFlow();
+ PrivilegedCarbonContext carbonContext = PrivilegedCarbonContext.getThreadLocalCarbonContext();
+ carbonContext.setTenantDomain(MultitenantConstants.SUPER_TENANT_DOMAIN_NAME);
+ carbonContext.setTenantId(MultitenantConstants.SUPER_TENANT_ID);
+
+ persistCompApplication(configCompositeApplication);
+
+ } finally {
+ PrivilegedCarbonContext.endTenantFlow();
+ }
+
+ } else {
+ persistCompApplication(configCompositeApplication);
+ }
+ }
+
// Grouping
private void persistCompApplication (ConfigCompositeApplication configCompositeAapplication) throws PersistenceManagerException {
@@ -270,6 +297,27 @@ public class RegistryBasedPersistenceManager extends PersistenceManager {
throw new PersistenceManagerException(e);
}
}
+
+ // Grouping
+ private void persistCompApplication (CompositeAppDefinition configCompositeAapplication) throws PersistenceManagerException {
+
+ // persist Service
+ try {
+ //RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + configCompositeAapplication.getAlias(),
+ RegistryManager.getInstance().persist(STRATOS_MANAGER_REOSURCE + COMPOSITE_APPLICATION + "/" + "compositeApplicationAlias",
+ Serializer.serializeServiceToByteArray(configCompositeAapplication), null);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Persisted ConfigCompositeApplication successfully: hardcoded [ " + configCompositeAapplication.getAlias() + " ]");
+ }
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+
+ } catch (IOException e) {
+ throw new PersistenceManagerException(e);
+ }
+ }
public void removeDeployedCompositeApplication(String configCompositeApplicationAlias) throws PersistenceManagerException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
index 4dd61fb..4f88f2c 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/retriever/DataInsertionAndRetrievalManager.java
@@ -21,6 +21,7 @@ package org.apache.stratos.manager.retriever;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.exception.PersistenceManagerException;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
@@ -369,7 +370,38 @@ public class DataInsertionAndRetrievalManager {
//LookupDataHolder.getInstance().releaseWriteLock();
}
}
-
+
+ public void persistCompositeApplication (CompositeAppDefinition compositeApplication) throws PersistenceManagerException {
+
+ // get the write lock
+ //LookupDataHolder.getInstance().acquireWriteLock();
+
+ try {
+ // store in LookupDataHolder
+ //ToDo ... add to data holder
+ // LookupDataHolder.getInstance().putSubscription(cartridgeSubscription);
+
+ try {
+ // store in Persistence Manager
+ persistenceManager.persistCompositeApplication(compositeApplication);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error in persisting CartridgeSubscription in Persistence Manager";
+ log.error(errorMsg, e);
+ // remove from the in memory model since persisting failed
+ /* TODO
+ LookupDataHolder.getInstance().removeSubscription(cartridgeSubscription.getSubscriber().getTenantId(), cartridgeSubscription.getType(),
+ cartridgeSubscription.getAlias(), cartridgeSubscription.getClusterDomain(),
+ cartridgeSubscription.getRepository() != null ? cartridgeSubscription.getRepository().getUrl() : null);
+ */
+ throw e;
+ }
+
+ } finally {
+ // release the write lock
+ //LookupDataHolder.getInstance().releaseWriteLock();
+ }
+ }
// Grouping
public void removeCompositeApplication (String configCompositeApplicationAlias) throws PersistenceManagerException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
index 5de1213..6597499 100644
--- a/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
+++ b/components/org.apache.stratos.manager/src/main/java/org/apache/stratos/manager/utils/Serializer.java
@@ -19,6 +19,7 @@
package org.apache.stratos.manager.utils;
+import org.apache.stratos.manager.composite.application.beans.CompositeAppDefinition;
import org.apache.stratos.manager.deploy.service.Service;
import org.apache.stratos.manager.grouping.definitions.ServiceGroupDefinition;
import org.apache.stratos.manager.lookup.ClusterIdToSubscription;
@@ -125,6 +126,27 @@ public class Serializer {
}
+ // Grouping
+ public static byte[] serializeServiceToByteArray(CompositeAppDefinition configCompositeApplication)
+ throws IOException {
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutput out = null;
+ try {
+ out = new ObjectOutputStream(bos);
+ out.writeObject(configCompositeApplication);
+
+ return bos.toByteArray();
+
+ } finally {
+ if (out != null) {
+ out.close();
+ }
+ bos.close();
+ }
+
+ }
+
public static byte [] serializeServiceGroupDefinitionToByteArray (ServiceGroupDefinition serviceGroupDefinition)
throws IOException {
http://git-wip-us.apache.org/repos/asf/stratos/blob/308f6d34/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
index 468c67a..d09451c 100644
--- a/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
+++ b/components/org.apache.stratos.rest.endpoint/src/main/java/org/apache/stratos/rest/endpoint/services/ServiceUtils.java
@@ -259,8 +259,10 @@ public class ServiceUtils {
} catch (CompositeApplicationDefinitionException e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
+ } catch (PersistenceManagerException e) {
+ e.printStackTrace();
}
-
+ //TODO send to CC
StratosAdminResponse stratosAdminResponse = new StratosAdminResponse();
stratosAdminResponse.setMessage("Successfully deployed Composite Application [ Id: " + compositeAppDefinition.getApplicationId()
+ " , alias: " + compositeAppDefinition.getAlias() + " ]");