You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2013/12/10 05:16:11 UTC
[1/5] registry based persistence and caching initial implementation
Updated Branches:
refs/heads/master 522db6033 -> aebdb0879
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
index c28f265..1e8936a 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
@@ -19,10 +19,7 @@
package org.apache.stratos.adc.mgt.persistence;
-import org.apache.stratos.adc.mgt.dao.Cluster;
-import org.apache.stratos.adc.mgt.dao.DataCartridge;
import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
-import org.apache.stratos.adc.mgt.repository.Repository;
import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
import java.util.List;
@@ -41,7 +38,10 @@ public abstract class PersistenceManager {
public abstract List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId)
throws PersistenceManagerException;
- public abstract List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
+ public abstract CartridgeSubscription getCartridgeSubscription (String clusterDomain)
+ throws PersistenceManagerException;
+
+ /*public abstract List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
throws PersistenceManagerException;
public abstract Repository getRepository (int tenantId, String alias)
@@ -75,5 +75,5 @@ public abstract class PersistenceManager {
throws PersistenceManagerException;
public abstract void updateServiceStatus (int tenantId, String cartridgeAlias, String newStatus)
- throws PersistenceManagerException;
+ throws PersistenceManagerException; */
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
new file mode 100644
index 0000000..e69585c
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.persistence;
+
+import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+
+import java.util.List;
+
+public class RegistryBasedPersistenceManager extends PersistenceManager {
+
+ @Override
+ public void persistCartridgeSubscription(CartridgeSubscription cartridgeSubscription) throws PersistenceManagerException {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public void removeCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public CartridgeSubscription getCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ @Override
+ public CartridgeSubscription getCartridgeSubscription(String clusterDomain) throws PersistenceManagerException {
+ return null; //To change body of implemented methods use File | Settings | File Templates.
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/repository/Repository.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/repository/Repository.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/repository/Repository.java
index dbd532e..82dc818 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/repository/Repository.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/repository/Repository.java
@@ -19,7 +19,9 @@
package org.apache.stratos.adc.mgt.repository;
-public class Repository {
+import java.io.Serializable;
+
+public class Repository implements Serializable {
private int id;
private String url;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
new file mode 100644
index 0000000..11093d3
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
@@ -0,0 +1,157 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.retriever;
+
+import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
+import org.apache.stratos.adc.mgt.lookup.LookupDataHolder;
+import org.apache.stratos.adc.mgt.persistence.PersistenceManager;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+import org.jgroups.logging.Log;
+import org.jgroups.logging.LogFactory;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+
+public class DataRetrievalManager {
+
+ private static final Log log = LogFactory.getLog(DataRetrievalManager.class);
+
+ private PersistenceManager persistenceManager;
+ private LookupDataHolder lookupDataHolder;
+ private ExecutorService cartridgeSubscriptionUpdateThreadPool = null;
+
+ public DataRetrievalManager (PersistenceManager persistenceManager, LookupDataHolder lookupDataHolder) {
+ this.persistenceManager = persistenceManager;
+ this.lookupDataHolder = lookupDataHolder;
+ cartridgeSubscriptionUpdateThreadPool = Executors.newCachedThreadPool();
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (int tenantId, String subscriptionAlias)
+ throws PersistenceManagerException {
+
+ CartridgeSubscription cartridgeSubscription = null;
+
+ if(lookupDataHolder != null) {
+ //look in the local cache
+ cartridgeSubscription = lookupDataHolder.getCartridgeSubscription(tenantId, subscriptionAlias);
+ }
+ //if not found in the local cache, look in the Persistence Manager
+ if (cartridgeSubscription == null) {
+ persistenceManager.getCartridgeSubscription(tenantId, subscriptionAlias);
+ } else {
+ if(log.isDebugEnabled()) {
+ log.debug("Cartridge subscription entry for tenant Id " + tenantId + ", subscription alias " +
+ subscriptionAlias + " found in the local cache");
+ }
+ }
+
+ return cartridgeSubscription;
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (String clusterId)
+ throws PersistenceManagerException {
+
+ CartridgeSubscription cartridgeSubscription = null;
+
+ if(lookupDataHolder != null) {
+ //look in the local cache
+ cartridgeSubscription = lookupDataHolder.getCartridgeSubscription(clusterId);
+ }
+ //if not found in the local cache, look in the Persistence Manager
+ if (cartridgeSubscription == null) {
+ persistenceManager.getCartridgeSubscription(clusterId);
+
+ } else {
+ if(log.isDebugEnabled()) {
+ log.debug("Cartridge subscription entry for cluster domain " + clusterId +
+ " found in the local cache");
+ }
+ }
+
+ return cartridgeSubscription;
+ }
+
+ public List<CartridgeSubscription> getCartridgeSubscriptions (int tenantId) throws PersistenceManagerException {
+
+ Collection<CartridgeSubscription> cartridgeSubscriptionCollection = null;
+
+ if(lookupDataHolder != null) {
+ //look in the local cache
+ cartridgeSubscriptionCollection = lookupDataHolder.getCartridgeSubscriptions(tenantId);
+ }
+ //if not found in the local cache, look in the Persistence Manager
+ if (cartridgeSubscriptionCollection == null) {
+ persistenceManager.getCartridgeSubscriptions(tenantId);
+
+ } else {
+ if(log.isDebugEnabled()) {
+ log.debug("Cartridge subscription entries for tenant " + tenantId +
+ " found in the local cache");
+ }
+ }
+
+ List<CartridgeSubscription> cartridgeSubscriptionList = new ArrayList<CartridgeSubscription>();
+ for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptionCollection) {
+ cartridgeSubscriptionList.add(cartridgeSubscription);
+ }
+
+ return cartridgeSubscriptionList;
+ }
+
+ public void putCartridgeSubscription (CartridgeSubscription cartridgeSubscription) {
+
+ cartridgeSubscriptionUpdateThreadPool.submit(new CartridgeSubscriptionUpdater(cartridgeSubscription,
+ lookupDataHolder, persistenceManager));
+ }
+
+ private class CartridgeSubscriptionUpdater implements Runnable {
+
+ CartridgeSubscription cartridgeSubscription;
+ LookupDataHolder lookupDataHolder;
+ PersistenceManager persistenceManager;
+
+ public CartridgeSubscriptionUpdater (CartridgeSubscription cartridgeSubscription, LookupDataHolder
+ lookupDataHolder, PersistenceManager persistenceManager) {
+
+ this.cartridgeSubscription = cartridgeSubscription;
+ this.lookupDataHolder = lookupDataHolder;
+ this.persistenceManager = persistenceManager;
+ }
+
+ public void run() {
+
+ if(lookupDataHolder != null) {
+ lookupDataHolder.addCartridgeSubscription(cartridgeSubscription.getSubscriber().getTenantId(),
+ cartridgeSubscription.getAlias(), cartridgeSubscription);
+ }
+ try {
+ persistenceManager.persistCartridgeSubscription(cartridgeSubscription);
+
+ } catch (PersistenceManagerException e) {
+ String errorMsg = "Error in persisting Cartridge Subscription instance";
+ log.error(errorMsg, e);
+ }
+ }
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscriber/Subscriber.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscriber/Subscriber.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscriber/Subscriber.java
index 54a636b..2145b6a 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscriber/Subscriber.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscriber/Subscriber.java
@@ -19,7 +19,9 @@
package org.apache.stratos.adc.mgt.subscriber;
-public class Subscriber {
+import java.io.Serializable;
+
+public class Subscriber implements Serializable {
private String adminUserName;
private int tenantId;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
index 567ffb7..dae407e 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/CartridgeSubscription.java
@@ -39,11 +39,12 @@ import org.apache.stratos.adc.mgt.utils.*;
import org.apache.stratos.adc.topology.mgt.service.TopologyManagementService;
import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
-public abstract class CartridgeSubscription {
+public abstract class CartridgeSubscription implements Serializable {
private static Log log = LogFactory.getLog(CartridgeSubscription.class);
private int subscriptionId;
@@ -57,6 +58,7 @@ public abstract class CartridgeSubscription {
private Payload payload;
private Cluster cluster;
private String subscriptionStatus;
+ private String serviceStatus;
private String mappedDomain;
private List<String> connectedSubscriptionAliases;
private String subscriptionKey;
@@ -447,4 +449,12 @@ public abstract class CartridgeSubscription {
public void setDeploymentPolicyName(String deploymentPolicyName) {
this.deploymentPolicyName = deploymentPolicyName;
}
+
+ public String getServiceStatus() {
+ return serviceStatus;
+ }
+
+ public void setServiceStatus(String serviceStatus) {
+ this.serviceStatus = serviceStatus;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
index 633a05d..3533fc1 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/subscription/tenancy/SubscriptionTenancyBehaviour.java
@@ -26,9 +26,10 @@ import org.apache.stratos.adc.mgt.exception.UnregisteredCartridgeException;
import org.apache.stratos.adc.mgt.payload.PayloadArg;
import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+import java.io.Serializable;
import java.util.Properties;
-public abstract class SubscriptionTenancyBehaviour {
+public abstract class SubscriptionTenancyBehaviour implements Serializable {
protected CartridgeSubscription cartridgeSubscription;
[4/5] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos into persistence
Posted by is...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos into persistence
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/1c2f93c3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/1c2f93c3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/1c2f93c3
Branch: refs/heads/master
Commit: 1c2f93c391309ce3c45a575ab81c988aad7c9b3d
Parents: ba14b09 522db60
Author: Isuru <is...@wso2.com>
Authored: Mon Dec 9 21:14:38 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Mon Dec 9 21:14:38 2013 +0530
----------------------------------------------------------------------
.../adc/mgt/client/AutoscalerServiceClient.java | 63 ++-
.../autoscaler/policy/PolicyManager.java | 10 +-
.../autoscaler/registry/RegistryManager.java | 2 +-
.../rule/AutoscalerRuleEvaluator.java | 36 +-
.../messaging/domain/topology/Cloud.java | 84 ----
.../messaging/domain/topology/Cluster.java | 27 --
.../messaging/domain/topology/Region.java | 79 ----
.../stratos/messaging/domain/topology/Zone.java | 55 ---
.../autoscaler/partition/PartitionGroup.java | 2 +-
.../policy/deployment/DeploymentPolicy.java | 4 +
.../bean/util/converter/PojoConverter.java | 149 +++++-
.../rest/endpoint/services/ServiceUtils.java | 84 +++-
.../rest/endpoint/services/StratosAdmin.java | 57 ++-
.../ec2/load-balancer/start-load-balancer.sh | 70 +++
.../templates/loadbalancer.conf.template | 126 +++++
.../pom.xml | 2 +-
.../src/main/resources/AutoScalerService.wsdl | 455 ++++++++++++++++++-
17 files changed, 974 insertions(+), 331 deletions(-)
----------------------------------------------------------------------
[3/5] git commit: registry based persistence and caching initial
implementation
Posted by is...@apache.org.
registry based persistence and caching initial implementation
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/ba14b09f
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/ba14b09f
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/ba14b09f
Branch: refs/heads/master
Commit: ba14b09ffc9a2a6d0a4ec05de9973ed59bfa10ea
Parents: 57cccfb
Author: Isuru <is...@wso2.com>
Authored: Mon Dec 9 09:43:07 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Mon Dec 9 09:43:07 2013 +0530
----------------------------------------------------------------------
.../org/apache/stratos/adc/mgt/dao/Cluster.java | 4 +-
.../adc/mgt/listener/TenantStatusListner.java | 42 +
.../adc/mgt/lookup/LookupDataHolder.java | 238 ++
.../apache/stratos/adc/mgt/payload/Payload.java | 7 +-
.../DatabaseBasedPersistenceManager.java | 2816 +++++++++---------
.../adc/mgt/persistence/PersistenceManager.java | 10 +-
.../RegistryBasedPersistenceManager.java | 53 +
.../stratos/adc/mgt/repository/Repository.java | 4 +-
.../adc/mgt/retriever/DataRetrievalManager.java | 157 +
.../stratos/adc/mgt/subscriber/Subscriber.java | 4 +-
.../mgt/subscription/CartridgeSubscription.java | 12 +-
.../tenancy/SubscriptionTenancyBehaviour.java | 3 +-
12 files changed, 1927 insertions(+), 1423 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/dao/Cluster.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/dao/Cluster.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/dao/Cluster.java
index df926fd..6120a80 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/dao/Cluster.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/dao/Cluster.java
@@ -1,6 +1,8 @@
package org.apache.stratos.adc.mgt.dao;
-public class Cluster {
+import java.io.Serializable;
+
+public class Cluster implements Serializable {
private int id;
private String clusterDomain;
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/listener/TenantStatusListner.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/listener/TenantStatusListner.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/listener/TenantStatusListner.java
new file mode 100644
index 0000000..959cf85
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/listener/TenantStatusListner.java
@@ -0,0 +1,42 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.listener;
+
+import org.apache.axis2.context.ConfigurationContext;
+import org.wso2.carbon.utils.Axis2ConfigurationContextObserver;
+
+public class TenantStatusListner implements Axis2ConfigurationContextObserver {
+
+ public void creatingConfigurationContext(int i) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void createdConfigurationContext(ConfigurationContext configurationContext) {
+
+ }
+
+ public void terminatingConfigurationContext(ConfigurationContext configurationContext) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+
+ public void terminatedConfigurationContext(ConfigurationContext configurationContext) {
+ //To change body of implemented methods use File | Settings | File Templates.
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
new file mode 100644
index 0000000..f283753
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
@@ -0,0 +1,238 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.lookup;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+
+import java.util.*;
+import java.util.concurrent.locks.ReentrantReadWriteLock;
+
+public class LookupDataHolder {
+
+ private static final Log log = LogFactory.getLog(LookupDataHolder.class);
+
+ private Map<Integer, SubscriptionAliasToCartridgeSubscriptionMap> tenantIdToCartridgeSubscriptionCache;
+ private Map<String, CartridgeSubscription> clusterItToCartridgeSubscrptionMatch;
+ //private static LookupDataHolder lookupDataHolder;
+
+ //locks
+ private static volatile ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
+ private static volatile ReentrantReadWriteLock.ReadLock readLock = lock.readLock();
+ private static volatile ReentrantReadWriteLock.WriteLock writeLock = lock.writeLock();
+
+ public LookupDataHolder () {
+ tenantIdToCartridgeSubscriptionCache = new HashMap<Integer, SubscriptionAliasToCartridgeSubscriptionMap>();
+ clusterItToCartridgeSubscrptionMatch = new HashMap<String, CartridgeSubscription>();
+ }
+
+ /*public static LookupDataHolder getInstance () {
+
+ if (lookupDataHolder == null) {
+ synchronized(LookupDataHolder.class) {
+ if (lookupDataHolder == null) {
+ lookupDataHolder = new LookupDataHolder();
+ }
+ }
+ }
+ return lookupDataHolder;
+ }*/
+
+ public void addCartridgeSubscription (int tenantId, String subscriptionAlias, CartridgeSubscription
+ cartridgeSubscription) {
+ addSubscription(tenantId, subscriptionAlias, cartridgeSubscription);
+ }
+
+ private void addSubscription (int tenantId, String subscriptionAlias, CartridgeSubscription cartridgeSubscription) {
+
+ writeLock.lock();
+
+ try {
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = tenantIdToCartridgeSubscriptionCache.
+ get(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ aliasToSubscriptionMap.addSubscription(subscriptionAlias, cartridgeSubscription);
+
+ } else {
+ aliasToSubscriptionMap = new SubscriptionAliasToCartridgeSubscriptionMap();
+ aliasToSubscriptionMap.addSubscription(subscriptionAlias, cartridgeSubscription);
+ }
+
+ if(clusterItToCartridgeSubscrptionMatch.put(cartridgeSubscription.getClusterDomain(), cartridgeSubscription)
+ != null) {
+ log.info("Overwrote the CartridgeSubscription value for cluster Id " +
+ cartridgeSubscription.getClusterDomain());
+ }
+
+ } finally {
+ writeLock.unlock();
+ }
+ }
+
+ public void removeCartridgeSubscription (int tenantId, String subscriptionAlias, String clusterId) {
+ removeSubscription(tenantId, subscriptionAlias, clusterId);
+ }
+
+ private void removeSubscription (int tenantId, String subscriptionAlias, String clusterId) {
+
+ writeLock.lock();
+
+ try {
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = tenantIdToCartridgeSubscriptionCache.
+ get(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ aliasToSubscriptionMap.removeSubscription(subscriptionAlias);
+ if(aliasToSubscriptionMap.isEmpty()){
+ tenantIdToCartridgeSubscriptionCache.remove(tenantId);
+ }
+
+ } else {
+ log.info("No SubscriptionAliasToCartridgeSubscriptionMap entry found for tenant Id " + tenantId);
+ }
+
+ if(clusterItToCartridgeSubscrptionMatch.remove(clusterId) != null) {
+ log.info("No CartridgeSubscription entry found for cluster Id " + clusterId);
+ }
+
+ } finally {
+ writeLock.unlock();
+ }
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (int tenantId, String subscriptionAlias) {
+ return getSubscription(tenantId, subscriptionAlias);
+ }
+
+ public Collection<CartridgeSubscription> getCartridgeSubscriptions (int tenantId) {
+ return getSubscriptions(tenantId);
+ }
+
+ private Collection<CartridgeSubscription> getSubscriptions (int tenantId) {
+
+ readLock.lock();
+
+ try {
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = tenantIdToCartridgeSubscriptionCache.
+ get(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ aliasToSubscriptionMap.getCartridgeSubscriptions();
+ }
+
+ } finally {
+ readLock.unlock();
+ }
+
+ return null;
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (String clusterId) {
+ return getCartridgeSubscription(clusterId);
+ }
+
+ private CartridgeSubscription getSubscription (String clusterId) {
+
+ readLock.lock();
+ try {
+ return clusterItToCartridgeSubscrptionMatch.get(clusterId);
+
+ } finally {
+ readLock.unlock();
+ }
+ }
+
+ private CartridgeSubscription getSubscription(int tenantId, String subscriptionAlias) {
+
+ readLock.lock();
+
+ try {
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = tenantIdToCartridgeSubscriptionCache.
+ get(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ CartridgeSubscription cartridgeSubscription = aliasToSubscriptionMap.
+ getCartridgeSubscription(subscriptionAlias);
+
+ if(cartridgeSubscription != null){
+ return cartridgeSubscription;
+
+ } else {
+ log.info("No CartridgeSubscription entry found for subscription alias "
+ + subscriptionAlias);
+ //if(log.isDebugEnabled()) {
+ // log.debug("No entry found for subscription alias " + subscriptionAlias);
+ //}
+ }
+ } else {
+ log.info("No SubscriptionAliasToCartridgeSubscriptionMap entry found for tenant id " + tenantId);
+ //if(log.isDebugEnabled()) {
+ // log.debug("No entry found for tenant id " + tenantId);
+ //}
+ }
+
+ return null;
+
+ } finally {
+ readLock.unlock();
+ }
+ }
+
+ private class SubscriptionAliasToCartridgeSubscriptionMap {
+
+ private Map<String, CartridgeSubscription> subscriptionAliasToCartridgeSubscriptionMap;
+
+ public SubscriptionAliasToCartridgeSubscriptionMap () {
+ subscriptionAliasToCartridgeSubscriptionMap = new HashMap<String, CartridgeSubscription>();
+ }
+
+ public Map<String, CartridgeSubscription> getSubscriptionAliasToCartridgeSubscriptionMap() {
+ return subscriptionAliasToCartridgeSubscriptionMap;
+ }
+
+ public void addSubscription(String subscriptionAlias, CartridgeSubscription cartridgeSubscription) {
+
+ if(subscriptionAliasToCartridgeSubscriptionMap.put(subscriptionAlias, cartridgeSubscription) != null) {
+ log.info("Overwrote the previous CartridgeSubscription value for subscription alias" + subscriptionAlias);
+ }
+ }
+
+ public boolean isEmpty () {
+ return subscriptionAliasToCartridgeSubscriptionMap.isEmpty();
+ }
+
+ public void removeSubscription (String subscriptionAlias) {
+
+ if(subscriptionAliasToCartridgeSubscriptionMap.remove(subscriptionAlias) == null) {
+ log.info("No CartridgeSubscription entry found for subscription alias " + subscriptionAlias);
+ }
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (String cartridgeSubscriptionAlias) {
+ return subscriptionAliasToCartridgeSubscriptionMap.get(cartridgeSubscriptionAlias);
+ }
+
+ public Collection<CartridgeSubscription> getCartridgeSubscriptions () {
+ return subscriptionAliasToCartridgeSubscriptionMap.values();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
index 724c32d..8c332db 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/payload/Payload.java
@@ -24,14 +24,11 @@ import org.apache.commons.logging.LogFactory;
import org.apache.stratos.adc.mgt.exception.ADCException;
import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
+import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
-public abstract class Payload {
+public abstract class Payload implements Serializable {
private static Log log = LogFactory.getLog(Payload.class);
[2/5] registry based persistence and caching initial implementation
Posted by is...@apache.org.
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/ba14b09f/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/DatabaseBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/DatabaseBasedPersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/DatabaseBasedPersistenceManager.java
index d8981e5..d73c029 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/DatabaseBasedPersistenceManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/DatabaseBasedPersistenceManager.java
@@ -1,1408 +1,1408 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.adc.mgt.persistence;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient;
-import org.apache.stratos.adc.mgt.dao.Cluster;
-import org.apache.stratos.adc.mgt.dao.DataCartridge;
-import org.apache.stratos.adc.mgt.exception.ADCException;
-import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
-import org.apache.stratos.adc.mgt.repository.Repository;
-import org.apache.stratos.adc.mgt.subscriber.Subscriber;
-import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-import org.apache.stratos.adc.mgt.subscription.DataCartridgeSubscription;
-import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
-import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
-import org.apache.stratos.adc.mgt.utils.RepoPasswordMgtUtil;
-import org.apache.stratos.adc.mgt.utils.StratosDBUtils;
-import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
-import org.wso2.carbon.context.CarbonContext;
-
-import java.sql.*;
-import java.util.ArrayList;
-import java.util.List;
-
-//import org.apache.stratos.adc.mgt.subscription.SingleTenantCartridgeSubscription;
-
-public class DatabaseBasedPersistenceManager extends PersistenceManager {
-
- private static final Log log = LogFactory.getLog(DatabaseBasedPersistenceManager.class);
-
- @Override
- public void persistCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- int repositoryId = -1;
- //persist Repository if available
- if(cartridgeSubscription.getRepository() != null) {
- repositoryId = persistRepository(connection, cartridgeSubscription.getRepository());
- }
-
- int dataCartridgeInfoId = -1;
- //persist Data Cartridge Subscription specific details if available
- if(cartridgeSubscription.getCartridgeInfo().getProvider().equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER) &&
- cartridgeSubscription instanceof DataCartridgeSubscription) {
- DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription) cartridgeSubscription;
- dataCartridgeInfoId = persistDataCartridgeInformation(connection, dataCartridgeSubscription.getHost(),
- dataCartridgeSubscription.getUsername(), dataCartridgeSubscription.getPassword());
- }
-
- PreparedStatement persistSubscriptionStmt = null;
-
- String insertSubscription = "INSERT INTO SUBSCRIPTION (CARTRIDGE_TYPE,CARTRIDGE_ALIAS,MAPPED_DOMAIN," +
- "SUBSCRIPTION_STATUS,MULTITENANT,PROVIDER,AUTOSCALING_POLICY,HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN," +
- "MGT_SUBDOMAIN,SERVICE_STATUS,DATA_CARTRIDGE_ID,REPOSITORY_ID)"
- + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
-
- try {
- persistSubscriptionStmt = connection.prepareStatement(insertSubscription);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for persisting Subscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistSubscriptionStmt.setString(1, cartridgeSubscription.getType());
- persistSubscriptionStmt.setString(2, cartridgeSubscription.getAlias());
- persistSubscriptionStmt.setString(3, cartridgeSubscription.getMappedDomain());
- persistSubscriptionStmt.setString(4, cartridgeSubscription.getSubscriptionStatus());
- persistSubscriptionStmt.setBoolean(5, cartridgeSubscription.getCartridgeInfo().getMultiTenant());
- persistSubscriptionStmt.setString(6, cartridgeSubscription.getCartridgeInfo().getProvider());
- persistSubscriptionStmt.setString(7, cartridgeSubscription.getAutoscalingPolicyName());
- persistSubscriptionStmt.setString(8, cartridgeSubscription.getHostName());
- persistSubscriptionStmt.setString(9, cartridgeSubscription.getClusterDomain());
- persistSubscriptionStmt.setString(10, cartridgeSubscription.getClusterSubDomain());
- persistSubscriptionStmt.setString(11, cartridgeSubscription.getMgtClusterDomain());
- persistSubscriptionStmt.setString(12, cartridgeSubscription.getMgtClusterSubDomain());
- persistSubscriptionStmt.setString(13, "CLUSTER_CREATED");//TODO: fix properly
- persistSubscriptionStmt.setInt(14, dataCartridgeInfoId);
- persistSubscriptionStmt.setInt(15, repositoryId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for persisting Subscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistSubscriptionStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for persisting Subscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- connection.commit();
-
- } catch (SQLException e) {
- try {
- connection.rollback();
-
- } catch (SQLException e1) {
- log.error("Failed to rollback", e);
- }
- String errorMsg = "Failed to commit the changes for persisting Subscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
- }
- }
-
- private int persistRepository (Connection connection, Repository repository) throws PersistenceManagerException{
-
- PreparedStatement persistRepoStmt = null;
- ResultSet resultSet = null;
- int repoId = -1;
-
- String insertRepo = "INSERT INTO REPOSITORY (URL,USERNAME,PASSWORD,IS_PRIVATE)"
- + " VALUES (?,?,?,?)";
-
- try {
- persistRepoStmt = connection.prepareStatement(insertRepo, Statement.RETURN_GENERATED_KEYS);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for persisting Repository";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistRepoStmt.setString(1, repository.getUrl());
- persistRepoStmt.setString(2, repository.getUserName());
- persistRepoStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(repository.getPassword()));
- persistRepoStmt.setBoolean(4, repository.isPrivateRepository());
-
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for persisting Repository";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistRepoStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for persisting Repository";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
- try {
- resultSet = persistRepoStmt.getGeneratedKeys();
- if (resultSet.next()) {
- repoId = resultSet.getInt(1);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistRepoStmt, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeStatement(persistRepoStmt);
- StratosDBUtils.closeResultSet(resultSet);
- }
-
- return repoId;
- }
-
- /*private int persistCluster (Connection connection, Cluster cluster) throws PersistenceManagerException {
-
- PreparedStatement persistClusterStmt = null;
- ResultSet resultSet = null;
- int clusterId = -1;
-
- String insertCluster = "INSERT INTO CLUSTER (HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN,MGT_SUBDOMAIN,SERVICE_STATUS)"
- + " VALUES (?,?,?,?,?,?,?)";
-
- try {
- persistClusterStmt = connection.prepareStatement(insertCluster, Statement.RETURN_GENERATED_KEYS);
-
- } catch (SQLException e) {
- StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
- throw new PersistenceManagerException("Failed create a Prepared Statement for persisting Cluster", e);
- }
-
- try {
- persistClusterStmt.setString(1, cluster.getHostName());
- persistClusterStmt.setString(2, cluster.getClusterDomain());
- persistClusterStmt.setString(3, cluster.getClusterSubDomain());
- persistClusterStmt.setString(4, cluster.getMgtClusterDomain());
- persistClusterStmt.setString(5, cluster.getMgtClusterSubDomain());
- persistClusterStmt.setString(6, "CREATED");//TODO:refactor
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for persisting Cluster";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistClusterStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for persisting Cluster";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
- try {
- resultSet = persistClusterStmt.getGeneratedKeys();
- if (resultSet.next()) {
- clusterId = resultSet.getInt(1);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistClusterStmt, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeStatement(persistClusterStmt);
- StratosDBUtils.closeResultSet(resultSet);
- }
-
- return clusterId;
- } */
-
- private int persistDataCartridgeInformation (Connection connection, String host, String adminUserName,
- String adminPassword) throws PersistenceManagerException {
-
- PreparedStatement persistDataCartridgeInformationStmt = null;
- ResultSet resultSet = null;
- int dataCartridgeInfoId = -1;
-
- String insertDataCartridgeInfo = "INSERT INTO DATA_CARTRIDGE (HOST,ADMIN_USERNAME,ADMIN_PASSWORD)"
- + " VALUES (?,?,?)";
-
- try {
- persistDataCartridgeInformationStmt = connection.prepareStatement(insertDataCartridgeInfo,
- Statement.RETURN_GENERATED_KEYS);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for persisting Data Cartridge Information";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistDataCartridgeInformationStmt.setString(1, host);
- persistDataCartridgeInformationStmt.setString(2, adminUserName);
- persistDataCartridgeInformationStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(adminPassword));
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for persisting Data Cartridge Information";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistDataCartridgeInformationStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for persisting Data Cartridge Information";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
- try {
- resultSet = persistDataCartridgeInformationStmt.getGeneratedKeys();
- if (resultSet.next()) {
- dataCartridgeInfoId = resultSet.getInt(1);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to get the generated keys for the Result Set of persisting Data Cartridge " +
- "Information";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeStatement(persistDataCartridgeInformationStmt);
- StratosDBUtils.closeResultSet(resultSet);
- }
-
- return dataCartridgeInfoId;
- }
-
- /*private int persistSubscriber (Connection connection, Subscriber subscriber) throws PersistenceManagerException {
-
- PreparedStatement persistSubscriberStmt = null;
-
- String insertSubscriber = "INSERT INTO TENANT (TENANT_ID,USERNAME,PASSWORD) VALUES (?,?,?)";
-
- try {
- persistSubscriberStmt = connection.prepareStatement(insertSubscriber);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for persisting Subscriber";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistSubscriberStmt.setInt(1, subscriber.getTenantId());
- persistSubscriberStmt.setString(2, subscriber.getAdminUserName());
- persistSubscriberStmt.setString(3, subscriber.getTenantDomain());
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for persisting Subscriber";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- persistSubscriberStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for persisting Subscriber";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeStatement(persistSubscriberStmt);
- }
-
- return subscriber.getTenantId();
- }*/
-
- @Override
- public void removeCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
- //TODO
- }
-
- @Override
- public CartridgeSubscription getCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
- "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
-
- PreparedStatement getSubscriptionStatement = null;
- try {
- getSubscriptionStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getSubscriptionStatement.setString(1, alias);
- getSubscriptionStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getSubscriptionStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- CartridgeSubscription cartridgeSubscription = null;
- try {
- while (resultSet.next()) {
- cartridgeSubscription = populateCartridgeSubscription(resultSet);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
- }
-
- return cartridgeSubscription;
- }
-
- private CartridgeSubscription populateCartridgeSubscription (ResultSet resultSet)
- throws PersistenceManagerException, SQLException {
-
- String cartridgeType = resultSet.getString("CARTRIDGE_TYPE");
-
- CartridgeInfo cartridgeInfo = null;
- try {
- cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
-
- } catch (Exception e) {
- //Cannot happen, but can continue
- String message = "Error getting Cartridge Definition for " + cartridgeType;
- log.error(message, e);
- }
-
- //If an error occurred while getting the CartridgeInfo instance, create an instance with a minimal data set
- if(cartridgeInfo == null) {
- cartridgeInfo = new CartridgeInfo();
- cartridgeInfo.setMultiTenant(resultSet.getBoolean("MULTITENANT"));
- cartridgeInfo.setProvider(resultSet.getString("PROVIDER"));
- }
-
- CartridgeSubscription cartridgeSubscription = null;
- try {
- cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
-
- } catch (ADCException e) {
- throw new PersistenceManagerException(e);
- }
-
- /*Policy autoScalingPolicy = PolicyHolder.getInstance().getPolicy(resultSet.getString("AUTOSCALING_POLICY"));
- if(autoScalingPolicy == null) {
- //get the default AutoScaling policy
- autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
- }*/
-
- //populate data
- cartridgeSubscription.setSubscriptionId(resultSet.getInt("SUBSCRIPTION_ID"));
- cartridgeSubscription.setType(cartridgeType);
- cartridgeSubscription.setAlias(resultSet.getString("CARTRIDGE_ALIAS"));
- cartridgeSubscription.setMappedDomain(resultSet.getString("MAPPED_DOMAIN"));
- cartridgeSubscription.setSubscriptionStatus(resultSet.getString("SUBSCRIPTION_STATUS"));
- cartridgeSubscription.setAutoscalingPolicyName(resultSet.getString("AUTOSCALING_POLICY"));
-
- //Repository related data
- if (resultSet.getInt("REPOSITORY_ID") != -1) {
- Repository repository = new Repository();
- repository.setId(resultSet.getInt("REPOSITORY_ID"));
- repository.setUrl(resultSet.getString("URL"));
- repository.setUserName(resultSet.getString("USERNAME"));
- repository.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.getString("PASSWORD")));
- repository.setPrivateRepository(resultSet.getBoolean("IS_PRIVATE"));
- cartridgeSubscription.setRepository(repository);
- }
-
- //Cluster related data
- Cluster cluster = new Cluster();
- cluster.setId(resultSet.getInt("CLUSTER_ID"));
- cluster.setHostName(resultSet.getString("HOSTNAME"));
- cluster.setClusterDomain(resultSet.getString("DOMAIN"));
- cluster.setClusterSubDomain(resultSet.getString("SUBDOMAIN"));
- cluster.setMgtClusterDomain(resultSet.getString("MGT_DOMAIN"));
- cluster.setMgtClusterSubDomain(resultSet.getString("MGT_SUBDOMAIN"));
- cluster.setServiceStatus(resultSet.getString("SERVICE_STATUS"));
- cartridgeSubscription.setCluster(cluster);
-
- //data cartridge specific information
- //TODO: temporarily removed
-// if (resultSet.getInt("DATA_CARTRIDGE_ID") != -1 && cartridgeSubscription instanceof
-// SingleTenantCartridgeSubscription) {
-// DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription)cartridgeSubscription;
-// dataCartridgeSubscription.setHost(resultSet.getString("HOST"));
-// dataCartridgeSubscription.setUsername(resultSet.getString("ADMIN_USERNAME"));
-// dataCartridgeSubscription.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.
-// getString("ADMIN_PASSWORD")));
-// }
-
- //Subscriber related data
- CarbonContext carbonContext = CarbonContext.getThreadLocalCarbonContext();
- Subscriber subscriber = new Subscriber(carbonContext.getUsername(), carbonContext.getTenantId(),
- carbonContext.getTenantDomain());
- cartridgeSubscription.setSubscriber(subscriber);
-
- return cartridgeSubscription;
- }
-
- @Override
- public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
- "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
-
- PreparedStatement getSubscriptionsStatement = null;
- try {
- getSubscriptionsStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getSubscriptionsStatement.setInt(1, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getSubscriptionsStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- List<CartridgeSubscription> cartridgeSubscriptions = new ArrayList<CartridgeSubscription>();
- try {
- while(resultSet.next()) {
- CartridgeSubscription cartridgeSubscription = populateCartridgeSubscription(resultSet);
- cartridgeSubscriptions.add(cartridgeSubscription);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- }
-
- return cartridgeSubscriptions;
- }
-
- @Override
- public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_TYPE=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
- "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
-
- PreparedStatement getSubscriptionsStatement = null;
- try {
- getSubscriptionsStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getSubscriptionsStatement.setString(1, cartridgeType);
- getSubscriptionsStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getSubscriptionsStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- List<CartridgeSubscription> cartridgeSubscriptions = new ArrayList<CartridgeSubscription>();
- try {
- while(resultSet.next()) {
- CartridgeSubscription cartridgeSubscription = populateCartridgeSubscription(resultSet);
- cartridgeSubscriptions.add(cartridgeSubscription);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement, resultSet);
- }
-
- return cartridgeSubscriptions;
- }
-
- @Override
- public Repository getRepository(int tenantId, String alias) throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.TENANT_ID=? AND S.CARTRIDGE_ALIAS=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID ";
-
- PreparedStatement getRepositoryStatement = null;
- try {
- getRepositoryStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getRepositoryStatement.setInt(1, tenantId);
- getRepositoryStatement.setString(2, alias);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getRepositoryStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- Repository repository = null;
- try {
- while(resultSet.next()) {
- repository = populateRepository(resultSet);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- }
-
- return repository;
- }
-
- private Repository populateRepository (ResultSet resultSet) throws SQLException {
-
- if(resultSet.getInt("REPOSITORY_ID") == -1) {
- return null;
- }
-
- Repository repository = new Repository();
- repository.setId(resultSet.getInt("REPOSITORY_ID"));
- repository.setUrl(resultSet.getString("URL"));
- repository.setUserName(resultSet.getString("USERNAME"));
- repository.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.getString("PASSWORD")));
- repository.setPrivateRepository(resultSet.getBoolean("IS_PRIVATE"));
-
- return repository;
- }
-
- @Override
- public Repository getRepository(String clusterDomain) throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.DOMAIN=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID ";
-
- PreparedStatement getRepositoryStatement = null;
- try {
- getRepositoryStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getRepositoryStatement.setString(1, clusterDomain);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getRepositoryStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- Repository repository = null;
- try {
- while(resultSet.next()) {
- repository = populateRepository(resultSet);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getRepositoryStatement, resultSet);
- }
-
- return repository;
- }
-
- @Override
- public DataCartridge getDataCartridgeSubscriptionInfo(int tenantId, String alias)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
- "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
-
- PreparedStatement getDataCartridgeSubscriptionInfoStatement = null;
- try {
- getDataCartridgeSubscriptionInfoStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getDataCartridgeSubscriptionInfoStatement.setString(1, alias);
- getDataCartridgeSubscriptionInfoStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getDataCartridgeSubscriptionInfoStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- DataCartridge dataCartridge = null;
- try {
- while (resultSet.next()) {
- dataCartridge = populateDataCartridgeInfo(resultSet);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getDataCartridgeSubscriptionInfoStatement, resultSet);
- }
-
- return dataCartridge;
- }
-
- private DataCartridge populateDataCartridgeInfo (ResultSet resultSet) throws SQLException {
-
- if(resultSet.getInt("DATA_CARTRIDGE_ID") == -1) {
- return null;
- }
-
- DataCartridge dataCartridge = new DataCartridge();
- dataCartridge.setId(resultSet.getInt("DATA_CARTRIDGE_ID"));
- dataCartridge.setDataCartridgeType(resultSet.getString("CARTRIDGE_TYPE"));
- dataCartridge.setHost(resultSet.getString("HOST"));
- dataCartridge.setUserName(resultSet.getString("ADMIN_USERNAME"));
- dataCartridge.setPassword(resultSet.getString("ADMIN_PASSWORD"));
-
- return dataCartridge;
- }
-
- @Override
- public boolean isAliasTaken(int tenantId, String alias) throws PersistenceManagerException {
-
- boolean isAliasTaken = false;
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
-
- PreparedStatement isAliasTakenStatement = null;
- try {
- isAliasTakenStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- isAliasTakenStatement.setString(1, alias);
- isAliasTakenStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = isAliasTakenStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- if(resultSet.next()) {
- log.info("Alias " + alias + " has been already used for tenant " + tenantId);
- isAliasTaken = true;
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, isAliasTakenStatement, resultSet);
- }
-
- return isAliasTaken;
- }
-
- @Override
- public boolean hasSubscribed(int tenantId, String cartridgeType) throws PersistenceManagerException {
-
- boolean hasSubscribed = false;
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_TYPE=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
-
- PreparedStatement hasSubscribedStatement = null;
- try {
- hasSubscribedStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- hasSubscribedStatement.setString(1, cartridgeType);
- hasSubscribedStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = hasSubscribedStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- if(resultSet.next()) {
- log.info("Tenant " + tenantId + " has already subscribed for the Cartridge Type " + cartridgeType);
- hasSubscribed = true;
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, hasSubscribedStatement, resultSet);
- }
-
- return hasSubscribed;
- }
-
- @Override
- public void updateDomianMapping(int tenantId, String cartridgeAlias, String newDomain)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- PreparedStatement updateDomainMappingStmt = null;
-
- String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET MAPPED_DOMAIN = ? " +
- "WHERE TENANT_ID = ? AND ALIAS = ?";
-
- try {
- updateDomainMappingStmt = connection.prepareStatement(insertDataCartridgeInfo);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateDomainMappingStmt.setString(1, newDomain);
- updateDomainMappingStmt.setInt(2, tenantId);
- updateDomainMappingStmt.setString(3, cartridgeAlias);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateDomainMappingStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, updateDomainMappingStmt);
- }
- }
-
- @Override
- public String getMappedDomain(int tenantId, String cartridgeAlias) throws PersistenceManagerException {
-
- String mappedDomain = null;
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT MAPPED_DOMAIN FROM SUBSCRIPTION S " +
- "WHERE S.TENANT_ID=? AND S.CARTRIDGE_ALIAS=? AND S.STATE != 'UNSUBSCRIBED'";
-
- PreparedStatement getMappedDomainStatement = null;
- try {
- getMappedDomainStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getMappedDomainStatement.setInt(1, tenantId);
- getMappedDomainStatement.setString(2, cartridgeAlias);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getMappedDomainStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- if(resultSet.next()) {
- mappedDomain = resultSet.getString("MAPPED_DOMAIN");
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getMappedDomainStatement, resultSet);
- }
-
- return mappedDomain;
- }
-
- @Override
- public Cluster getCluster(int tenantId, String cartridgeAlias) throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- String sqlQuery = "SELECT HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN,MGT_SUBDOMAIN,SERVICE_STATUS FROM SUBSCRIPTION S " +
- "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED'";
-
- PreparedStatement getClusterStatement = null;
- try {
- getClusterStatement = connection.prepareStatement(sqlQuery);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getClusterStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- getClusterStatement.setString(1, cartridgeAlias);
- getClusterStatement.setInt(2, tenantId);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getClusterStatement);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- ResultSet resultSet = null;
-
- try {
- resultSet = getClusterStatement.executeQuery();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- Cluster cluster = null;
- try {
- if(resultSet.next()) {
- cluster = populateCluster(resultSet);
- }
-
- } catch (SQLException e) {
- String errorMsg = "Failed to populate CartridgeSubscription instance";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, getClusterStatement, resultSet);
- }
-
- return cluster;
- }
-
- @Override
- public void updateSubscriptionStatus(int tenantId, String cartridgeAlias, String newStatus)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- PreparedStatement updateSubscriptionStatusStmt = null;
-
- String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET SUBSCRIPTION_STATUS = ? " +
- "WHERE TENANT_ID = ? AND ALIAS = ?";
-
- try {
- updateSubscriptionStatusStmt = connection.prepareStatement(insertDataCartridgeInfo);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateSubscriptionStatusStmt.setString(1, newStatus);
- updateSubscriptionStatusStmt.setInt(2, tenantId);
- updateSubscriptionStatusStmt.setString(3, cartridgeAlias);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateSubscriptionStatusStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, updateSubscriptionStatusStmt);
- }
-
- }
-
- @Override
- public void updateServiceStatus(int tenantId, String cartridgeAlias, String newStatus)
- throws PersistenceManagerException {
-
- Connection connection = null;
- try {
- connection = StratosDBUtils.getConnection();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to obtain a DB connection";
- log.error(errorMsg);
- StratosDBUtils.closeConnection(connection);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- PreparedStatement updateServiceStatusStmt = null;
-
- String insertDataCartridgeInfo = "UPDATE CARTRIDGE_SUBSCRIPTION SET SUBSCRIPTION_STATUS = ? " +
- "WHERE TENANT_ID = ? AND ALIAS = ?";
-
- try {
- updateServiceStatusStmt = connection.prepareStatement(insertDataCartridgeInfo);
-
- } catch (SQLException e) {
- String errorMsg = "Failed create a Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateServiceStatusStmt.setString(1, newStatus);
- updateServiceStatusStmt.setInt(2, tenantId);
- updateServiceStatusStmt.setString(3, cartridgeAlias);
-
- } catch (SQLException e) {
- String errorMsg = "Failed to add data to Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
- }
-
- try {
- updateServiceStatusStmt.executeUpdate();
-
- } catch (SQLException e) {
- String errorMsg = "Failed to execute the Prepared Statement for updating Domain Mapping";
- log.error(errorMsg);
- StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
- throw new PersistenceManagerException(errorMsg, e);
-
- } finally {
- StratosDBUtils.closeAllConnections(connection, updateServiceStatusStmt);
- }
- }
-
- private Cluster populateCluster (ResultSet resultSet) throws SQLException {
-
- Cluster cluster = new Cluster();
- cluster.setHostName(resultSet.getString("HOSTNAME"));
- cluster.setClusterDomain(resultSet.getString("DOMAIN"));
- cluster.setClusterSubDomain(resultSet.getString("SUBDOMAIN"));
- cluster.setMgtClusterDomain(resultSet.getString("MGT_DOMAIN"));
- cluster.setMgtClusterSubDomain(resultSet.getString("MGT_SUBDOMAIN"));
- cluster.setServiceStatus(resultSet.getString("SERVICE_STATUS"));
-
- return cluster;
- }
-
- @Override
- public void removeDomainMapping(int tenantId, String cartridgeAlias)
- throws PersistenceManagerException {
-
- updateDomianMapping(tenantId, cartridgeAlias, null);
- }
-
-
-}
+///*
+// * Licensed to the Apache Software Foundation (ASF) under one
+// * or more contributor license agreements. See the NOTICE file
+// * distributed with this work for additional information
+// * regarding copyright ownership. The ASF licenses this file
+// * to you under the Apache License, Version 2.0 (the
+// * "License"); you may not use this file except in compliance
+// * with the License. You may obtain a copy of the License at
+// *
+// * http://www.apache.org/licenses/LICENSE-2.0
+// *
+// * Unless required by applicable law or agreed to in writing,
+// * software distributed under the License is distributed on an
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// * KIND, either express or implied. See the License for the
+// * specific language governing permissions and limitations
+// * under the License.
+// */
+//
+//package org.apache.stratos.adc.mgt.persistence;
+//
+//import org.apache.commons.logging.Log;
+//import org.apache.commons.logging.LogFactory;
+//import org.apache.stratos.adc.mgt.client.CloudControllerServiceClient;
+//import org.apache.stratos.adc.mgt.dao.Cluster;
+//import org.apache.stratos.adc.mgt.dao.DataCartridge;
+//import org.apache.stratos.adc.mgt.exception.ADCException;
+//import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
+//import org.apache.stratos.adc.mgt.repository.Repository;
+//import org.apache.stratos.adc.mgt.subscriber.Subscriber;
+//import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+//import org.apache.stratos.adc.mgt.subscription.DataCartridgeSubscription;
+//import org.apache.stratos.adc.mgt.subscription.factory.CartridgeSubscriptionFactory;
+//import org.apache.stratos.adc.mgt.utils.CartridgeConstants;
+//import org.apache.stratos.adc.mgt.utils.RepoPasswordMgtUtil;
+//import org.apache.stratos.adc.mgt.utils.StratosDBUtils;
+//import org.apache.stratos.cloud.controller.pojo.CartridgeInfo;
+//import org.wso2.carbon.context.CarbonContext;
+//
+//import java.sql.*;
+//import java.util.ArrayList;
+//import java.util.List;
+//
+////import org.apache.stratos.adc.mgt.subscription.SingleTenantCartridgeSubscription;
+//
+//public class DatabaseBasedPersistenceManager extends PersistenceManager {
+//
+// private static final Log log = LogFactory.getLog(DatabaseBasedPersistenceManager.class);
+//
+// @Override
+// public void persistCartridgeSubscription(CartridgeSubscription cartridgeSubscription)
+// throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// int repositoryId = -1;
+// //persist Repository if available
+// if(cartridgeSubscription.getRepository() != null) {
+// repositoryId = persistRepository(connection, cartridgeSubscription.getRepository());
+// }
+//
+// int dataCartridgeInfoId = -1;
+// //persist Data Cartridge Subscription specific details if available
+// if(cartridgeSubscription.getCartridgeInfo().getProvider().equals(CartridgeConstants.DATA_CARTRIDGE_PROVIDER) &&
+// cartridgeSubscription instanceof DataCartridgeSubscription) {
+// DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription) cartridgeSubscription;
+// dataCartridgeInfoId = persistDataCartridgeInformation(connection, dataCartridgeSubscription.getHost(),
+// dataCartridgeSubscription.getUsername(), dataCartridgeSubscription.getPassword());
+// }
+//
+// PreparedStatement persistSubscriptionStmt = null;
+//
+// String insertSubscription = "INSERT INTO SUBSCRIPTION (CARTRIDGE_TYPE,CARTRIDGE_ALIAS,MAPPED_DOMAIN," +
+// "SUBSCRIPTION_STATUS,MULTITENANT,PROVIDER,AUTOSCALING_POLICY,HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN," +
+// "MGT_SUBDOMAIN,SERVICE_STATUS,DATA_CARTRIDGE_ID,REPOSITORY_ID)"
+// + " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
+//
+// try {
+// persistSubscriptionStmt = connection.prepareStatement(insertSubscription);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriptionStmt.setString(1, cartridgeSubscription.getType());
+// persistSubscriptionStmt.setString(2, cartridgeSubscription.getAlias());
+// persistSubscriptionStmt.setString(3, cartridgeSubscription.getMappedDomain());
+// persistSubscriptionStmt.setString(4, cartridgeSubscription.getSubscriptionStatus());
+// persistSubscriptionStmt.setBoolean(5, cartridgeSubscription.getCartridgeInfo().getMultiTenant());
+// persistSubscriptionStmt.setString(6, cartridgeSubscription.getCartridgeInfo().getProvider());
+// persistSubscriptionStmt.setString(7, cartridgeSubscription.getAutoscalingPolicyName());
+// persistSubscriptionStmt.setString(8, cartridgeSubscription.getHostName());
+// persistSubscriptionStmt.setString(9, cartridgeSubscription.getClusterDomain());
+// persistSubscriptionStmt.setString(10, cartridgeSubscription.getClusterSubDomain());
+// persistSubscriptionStmt.setString(11, cartridgeSubscription.getMgtClusterDomain());
+// persistSubscriptionStmt.setString(12, cartridgeSubscription.getMgtClusterSubDomain());
+// persistSubscriptionStmt.setString(13, "CLUSTER_CREATED");//TODO: fix properly
+// persistSubscriptionStmt.setInt(14, dataCartridgeInfoId);
+// persistSubscriptionStmt.setInt(15, repositoryId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriptionStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// connection.commit();
+//
+// } catch (SQLException e) {
+// try {
+// connection.rollback();
+//
+// } catch (SQLException e1) {
+// log.error("Failed to rollback", e);
+// }
+// String errorMsg = "Failed to commit the changes for persisting Subscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, persistSubscriptionStmt);
+// }
+// }
+//
+// private int persistRepository (Connection connection, Repository repository) throws PersistenceManagerException{
+//
+// PreparedStatement persistRepoStmt = null;
+// ResultSet resultSet = null;
+// int repoId = -1;
+//
+// String insertRepo = "INSERT INTO REPOSITORY (URL,USERNAME,PASSWORD,IS_PRIVATE)"
+// + " VALUES (?,?,?,?)";
+//
+// try {
+// persistRepoStmt = connection.prepareStatement(insertRepo, Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistRepoStmt.setString(1, repository.getUrl());
+// persistRepoStmt.setString(2, repository.getUserName());
+// persistRepoStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(repository.getPassword()));
+// persistRepoStmt.setBoolean(4, repository.isPrivateRepository());
+//
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistRepoStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistRepoStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// repoId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistRepoStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistRepoStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return repoId;
+// }
+//
+// /*private int persistCluster (Connection connection, Cluster cluster) throws PersistenceManagerException {
+//
+// PreparedStatement persistClusterStmt = null;
+// ResultSet resultSet = null;
+// int clusterId = -1;
+//
+// String insertCluster = "INSERT INTO CLUSTER (HOSTNAME,DOMAIN,SUBDOMAIN,MGT_DOMAIN,MGT_SUBDOMAIN,SERVICE_STATUS)"
+// + " VALUES (?,?,?,?,?,?,?)";
+//
+// try {
+// persistClusterStmt = connection.prepareStatement(insertCluster, Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException("Failed create a Prepared Statement for persisting Cluster", e);
+// }
+//
+// try {
+// persistClusterStmt.setString(1, cluster.getHostName());
+// persistClusterStmt.setString(2, cluster.getClusterDomain());
+// persistClusterStmt.setString(3, cluster.getClusterSubDomain());
+// persistClusterStmt.setString(4, cluster.getMgtClusterDomain());
+// persistClusterStmt.setString(5, cluster.getMgtClusterSubDomain());
+// persistClusterStmt.setString(6, "CREATED");//TODO:refactor
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Cluster";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistClusterStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Cluster";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistClusterStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// clusterId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Repository";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistClusterStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistClusterStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return clusterId;
+// } */
+//
+// private int persistDataCartridgeInformation (Connection connection, String host, String adminUserName,
+// String adminPassword) throws PersistenceManagerException {
+//
+// PreparedStatement persistDataCartridgeInformationStmt = null;
+// ResultSet resultSet = null;
+// int dataCartridgeInfoId = -1;
+//
+// String insertDataCartridgeInfo = "INSERT INTO DATA_CARTRIDGE (HOST,ADMIN_USERNAME,ADMIN_PASSWORD)"
+// + " VALUES (?,?,?)";
+//
+// try {
+// persistDataCartridgeInformationStmt = connection.prepareStatement(insertDataCartridgeInfo,
+// Statement.RETURN_GENERATED_KEYS);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistDataCartridgeInformationStmt.setString(1, host);
+// persistDataCartridgeInformationStmt.setString(2, adminUserName);
+// persistDataCartridgeInformationStmt.setString(3, RepoPasswordMgtUtil.encryptPassword(adminPassword));
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistDataCartridgeInformationStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Data Cartridge Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+// try {
+// resultSet = persistDataCartridgeInformationStmt.getGeneratedKeys();
+// if (resultSet.next()) {
+// dataCartridgeInfoId = resultSet.getInt(1);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to get the generated keys for the Result Set of persisting Data Cartridge " +
+// "Information";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistDataCartridgeInformationStmt, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistDataCartridgeInformationStmt);
+// StratosDBUtils.closeResultSet(resultSet);
+// }
+//
+// return dataCartridgeInfoId;
+// }
+//
+// /*private int persistSubscriber (Connection connection, Subscriber subscriber) throws PersistenceManagerException {
+//
+// PreparedStatement persistSubscriberStmt = null;
+//
+// String insertSubscriber = "INSERT INTO TENANT (TENANT_ID,USERNAME,PASSWORD) VALUES (?,?,?)";
+//
+// try {
+// persistSubscriberStmt = connection.prepareStatement(insertSubscriber);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriberStmt.setInt(1, subscriber.getTenantId());
+// persistSubscriberStmt.setString(2, subscriber.getAdminUserName());
+// persistSubscriberStmt.setString(3, subscriber.getTenantDomain());
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// persistSubscriberStmt.executeUpdate();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for persisting Subscriber";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, persistSubscriberStmt);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeStatement(persistSubscriberStmt);
+// }
+//
+// return subscriber.getTenantId();
+// }*/
+//
+// @Override
+// public void removeCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+// //TODO
+// }
+//
+// @Override
+// public CartridgeSubscription getCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.CARTRIDGE_ALIAS=? AND S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getSubscriptionStatement = null;
+// try {
+// getSubscriptionStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getSubscriptionStatement.setString(1, alias);
+// getSubscriptionStatement.setInt(2, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getSubscriptionStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// CartridgeSubscription cartridgeSubscription = null;
+// try {
+// while (resultSet.next()) {
+// cartridgeSubscription = populateCartridgeSubscription(resultSet);
+// }
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to populate CartridgeSubscription instance";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// throw new PersistenceManagerException(errorMsg, e);
+//
+// } finally {
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionStatement, resultSet);
+// }
+//
+// return cartridgeSubscription;
+// }
+//
+// private CartridgeSubscription populateCartridgeSubscription (ResultSet resultSet)
+// throws PersistenceManagerException, SQLException {
+//
+// String cartridgeType = resultSet.getString("CARTRIDGE_TYPE");
+//
+// CartridgeInfo cartridgeInfo = null;
+// try {
+// cartridgeInfo = CloudControllerServiceClient.getServiceClient().getCartridgeInfo(cartridgeType);
+//
+// } catch (Exception e) {
+// //Cannot happen, but can continue
+// String message = "Error getting Cartridge Definition for " + cartridgeType;
+// log.error(message, e);
+// }
+//
+// //If an error occurred while getting the CartridgeInfo instance, create an instance with a minimal data set
+// if(cartridgeInfo == null) {
+// cartridgeInfo = new CartridgeInfo();
+// cartridgeInfo.setMultiTenant(resultSet.getBoolean("MULTITENANT"));
+// cartridgeInfo.setProvider(resultSet.getString("PROVIDER"));
+// }
+//
+// CartridgeSubscription cartridgeSubscription = null;
+// try {
+// cartridgeSubscription = CartridgeSubscriptionFactory.getCartridgeSubscriptionInstance(cartridgeInfo);
+//
+// } catch (ADCException e) {
+// throw new PersistenceManagerException(e);
+// }
+//
+// /*Policy autoScalingPolicy = PolicyHolder.getInstance().getPolicy(resultSet.getString("AUTOSCALING_POLICY"));
+// if(autoScalingPolicy == null) {
+// //get the default AutoScaling policy
+// autoScalingPolicy = PolicyHolder.getInstance().getDefaultPolicy();
+// }*/
+//
+// //populate data
+// cartridgeSubscription.setSubscriptionId(resultSet.getInt("SUBSCRIPTION_ID"));
+// cartridgeSubscription.setType(cartridgeType);
+// cartridgeSubscription.setAlias(resultSet.getString("CARTRIDGE_ALIAS"));
+// cartridgeSubscription.setMappedDomain(resultSet.getString("MAPPED_DOMAIN"));
+// cartridgeSubscription.setSubscriptionStatus(resultSet.getString("SUBSCRIPTION_STATUS"));
+// cartridgeSubscription.setAutoscalingPolicyName(resultSet.getString("AUTOSCALING_POLICY"));
+//
+// //Repository related data
+// if (resultSet.getInt("REPOSITORY_ID") != -1) {
+// Repository repository = new Repository();
+// repository.setId(resultSet.getInt("REPOSITORY_ID"));
+// repository.setUrl(resultSet.getString("URL"));
+// repository.setUserName(resultSet.getString("USERNAME"));
+// repository.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.getString("PASSWORD")));
+// repository.setPrivateRepository(resultSet.getBoolean("IS_PRIVATE"));
+// cartridgeSubscription.setRepository(repository);
+// }
+//
+// //Cluster related data
+// Cluster cluster = new Cluster();
+// cluster.setId(resultSet.getInt("CLUSTER_ID"));
+// cluster.setHostName(resultSet.getString("HOSTNAME"));
+// cluster.setClusterDomain(resultSet.getString("DOMAIN"));
+// cluster.setClusterSubDomain(resultSet.getString("SUBDOMAIN"));
+// cluster.setMgtClusterDomain(resultSet.getString("MGT_DOMAIN"));
+// cluster.setMgtClusterSubDomain(resultSet.getString("MGT_SUBDOMAIN"));
+// cluster.setServiceStatus(resultSet.getString("SERVICE_STATUS"));
+// cartridgeSubscription.setCluster(cluster);
+//
+// //data cartridge specific information
+// //TODO: temporarily removed
+//// if (resultSet.getInt("DATA_CARTRIDGE_ID") != -1 && cartridgeSubscription instanceof
+//// SingleTenantCartridgeSubscription) {
+//// DataCartridgeSubscription dataCartridgeSubscription = (DataCartridgeSubscription)cartridgeSubscription;
+//// dataCartridgeSubscription.setHost(resultSet.getString("HOST"));
+//// dataCartridgeSubscription.setUsername(resultSet.getString("ADMIN_USERNAME"));
+//// dataCartridgeSubscription.setPassword(RepoPasswordMgtUtil.decryptPassword(resultSet.
+//// getString("ADMIN_PASSWORD")));
+//// }
+//
+// //Subscriber related data
+// CarbonContext carbonContext = CarbonContext.getThreadLocalCarbonContext();
+// Subscriber subscriber = new Subscriber(carbonContext.getUsername(), carbonContext.getTenantId(),
+// carbonContext.getTenantDomain());
+// cartridgeSubscription.setSubscriber(subscriber);
+//
+// return cartridgeSubscription;
+// }
+//
+// @Override
+// public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
+//
+// Connection connection = null;
+// try {
+// connection = StratosDBUtils.getConnection();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to obtain a DB connection";
+// log.error(errorMsg);
+// StratosDBUtils.closeConnection(connection);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// String sqlQuery = "SELECT * FROM SUBSCRIPTION S " +
+// "WHERE S.TENANT_ID=? AND S.STATE != 'UNSUBSCRIBED' " +
+// "inner join REPOSITORY R on S.REPOSITORY_ID=R.REPOSITORY_ID " +
+// "inner join DATA_CARTRIDGE D on S.DATA_CARTRIDGE_ID=D.DATA_CARTRIDGE_ID ";
+//
+// PreparedStatement getSubscriptionsStatement = null;
+// try {
+// getSubscriptionsStatement = connection.prepareStatement(sqlQuery);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed create a Prepared Statement for retreiving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// try {
+// getSubscriptionsStatement.setInt(1, tenantId);
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to add data to Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement);
+// throw new PersistenceManagerException(errorMsg, e);
+// }
+//
+// ResultSet resultSet = null;
+//
+// try {
+// resultSet = getSubscriptionsStatement.executeQuery();
+//
+// } catch (SQLException e) {
+// String errorMsg = "Failed to execute the Prepared Statement for retrieving CartridgeSubscription";
+// log.error(errorMsg);
+// StratosDBUtils.closeAllConnections(connection, getSubscriptionsStatement,
<TRUNCATED>
[5/5] git commit: registry based persistence
Posted by is...@apache.org.
registry based persistence
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/aebdb087
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/aebdb087
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/aebdb087
Branch: refs/heads/master
Commit: aebdb0879b017ab4b722a626521a46a22eaa4bff
Parents: 1c2f93c
Author: Isuru <is...@wso2.com>
Authored: Tue Dec 10 09:44:57 2013 +0530
Committer: Isuru <is...@wso2.com>
Committed: Tue Dec 10 09:44:57 2013 +0530
----------------------------------------------------------------------
.../ClusterIdToCartridgeSubscriptionMap.java | 70 ++++++++++
.../adc/mgt/lookup/LookupDataHolder.java | 116 +++++++++-------
...criptionAliasToCartridgeSubscriptionMap.java | 71 ++++++++++
.../adc/mgt/persistence/PersistenceManager.java | 22 ++-
.../RegistryBasedPersistenceManager.java | 102 ++++++++++++--
.../adc/mgt/registry/RegistryManager.java | 138 +++++++++++++++++++
.../adc/mgt/retriever/DataRetrievalManager.java | 89 +++++++-----
.../stratos/adc/mgt/utils/Deserializer.java | 52 +++++++
.../stratos/adc/mgt/utils/Serializer.java | 83 +++++++++++
9 files changed, 642 insertions(+), 101 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/ClusterIdToCartridgeSubscriptionMap.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/ClusterIdToCartridgeSubscriptionMap.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/ClusterIdToCartridgeSubscriptionMap.java
new file mode 100644
index 0000000..864ffb2
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/ClusterIdToCartridgeSubscriptionMap.java
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.lookup;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ClusterIdToCartridgeSubscriptionMap implements Serializable {
+
+ private static final Log log = LogFactory.getLog(ClusterIdToCartridgeSubscriptionMap.class);
+
+ private Map<String, CartridgeSubscription> clusterItToCartridgeSubscrptionMap;
+
+ public ClusterIdToCartridgeSubscriptionMap () {
+ clusterItToCartridgeSubscrptionMap = new HashMap<String, CartridgeSubscription>();
+ }
+
+ public Map<String, CartridgeSubscription> getSubscriptionAliasToCartridgeSubscriptionMap() {
+ return clusterItToCartridgeSubscrptionMap;
+ }
+
+ public void addSubscription(String clusterId, CartridgeSubscription cartridgeSubscription) {
+
+ if(clusterItToCartridgeSubscrptionMap.put(clusterId, cartridgeSubscription) != null) {
+ log.info("Overwrote the previous CartridgeSubscription value for cluster " + clusterId);
+ }
+ }
+
+ public boolean isEmpty () {
+ return clusterItToCartridgeSubscrptionMap.isEmpty();
+ }
+
+ public void removeSubscription (String clusterId) {
+
+ if(clusterItToCartridgeSubscrptionMap.remove(clusterId) == null) {
+ log.info("No CartridgeSubscription entry found for cluster " + clusterId);
+ }
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (String clusterId) {
+ return clusterItToCartridgeSubscrptionMap.get(clusterId);
+ }
+
+ public Collection<CartridgeSubscription> getCartridgeSubscriptions () {
+ return clusterItToCartridgeSubscrptionMap.values();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
index f283753..5e704db 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/LookupDataHolder.java
@@ -23,16 +23,20 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-import java.util.*;
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import java.util.concurrent.locks.ReentrantReadWriteLock;
-public class LookupDataHolder {
+public class LookupDataHolder implements Serializable {
private static final Log log = LogFactory.getLog(LookupDataHolder.class);
private Map<Integer, SubscriptionAliasToCartridgeSubscriptionMap> tenantIdToCartridgeSubscriptionCache;
- private Map<String, CartridgeSubscription> clusterItToCartridgeSubscrptionMatch;
+ //private Map<String, CartridgeSubscription> clusterItToCartridgeSubscrptionMap;
//private static LookupDataHolder lookupDataHolder;
+ private ClusterIdToCartridgeSubscriptionMap clusterIdToCartridgeSubscriptionMap;
//locks
private static volatile ReentrantReadWriteLock lock = new ReentrantReadWriteLock();
@@ -41,7 +45,8 @@ public class LookupDataHolder {
public LookupDataHolder () {
tenantIdToCartridgeSubscriptionCache = new HashMap<Integer, SubscriptionAliasToCartridgeSubscriptionMap>();
- clusterItToCartridgeSubscrptionMatch = new HashMap<String, CartridgeSubscription>();
+ //clusterItToCartridgeSubscrptionMap = new HashMap<String, CartridgeSubscription>();
+ clusterIdToCartridgeSubscriptionMap = new ClusterIdToCartridgeSubscriptionMap();
}
/*public static LookupDataHolder getInstance () {
@@ -77,10 +82,31 @@ public class LookupDataHolder {
aliasToSubscriptionMap.addSubscription(subscriptionAlias, cartridgeSubscription);
}
- if(clusterItToCartridgeSubscrptionMatch.put(cartridgeSubscription.getClusterDomain(), cartridgeSubscription)
- != null) {
- log.info("Overwrote the CartridgeSubscription value for cluster Id " +
- cartridgeSubscription.getClusterDomain());
+ clusterIdToCartridgeSubscriptionMap.addSubscription(cartridgeSubscription.getClusterDomain(), cartridgeSubscription);
+
+ } finally {
+ writeLock.unlock();
+ }
+ }
+
+ public void addCartridgeSubscriptions (int tenantId, SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap) {
+
+ }
+
+ private void addSubscriptions (int tenantId, SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap) {
+
+ writeLock.lock();
+
+ try {
+ if(tenantIdToCartridgeSubscriptionCache.put(tenantId, aliasToSubscriptionMap) != null) {
+ log.info("Existing SubscriptionAliasToCartridgeSubscriptionMap instance overwritten for tenant " +
+ tenantId);
+ }
+
+ Collection<CartridgeSubscription> cartridgeSubscriptions = aliasToSubscriptionMap.getCartridgeSubscriptions();
+ for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
+ clusterIdToCartridgeSubscriptionMap.addSubscription(cartridgeSubscription.getCluster().getClusterDomain(),
+ cartridgeSubscription);
}
} finally {
@@ -110,8 +136,37 @@ public class LookupDataHolder {
log.info("No SubscriptionAliasToCartridgeSubscriptionMap entry found for tenant Id " + tenantId);
}
- if(clusterItToCartridgeSubscrptionMatch.remove(clusterId) != null) {
- log.info("No CartridgeSubscription entry found for cluster Id " + clusterId);
+ clusterIdToCartridgeSubscriptionMap.removeSubscription(clusterId);
+
+ } finally {
+ writeLock.unlock();
+ }
+ }
+
+ public void removeCartridgeSubscriptions (int tenantId) {
+ removeSubscriptions(tenantId);
+ }
+
+ private void removeSubscriptions (int tenantId) {
+
+ writeLock.lock();
+
+ try {
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = tenantIdToCartridgeSubscriptionCache.
+ get(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ //remove the subscriptions referenced by cluster domain for this tenant
+ Collection<CartridgeSubscription> cartridgeSubscriptions = aliasToSubscriptionMap.getCartridgeSubscriptions();
+
+ for (CartridgeSubscription cartridgeSubscription : cartridgeSubscriptions) {
+ clusterIdToCartridgeSubscriptionMap.removeSubscription(cartridgeSubscription.getClusterDomain());
+ }
+ //remove the map for this tenant ID
+ tenantIdToCartridgeSubscriptionCache.remove(tenantId);
+
+ } else {
+ log.info("No SubscriptionAliasToCartridgeSubscriptionMap entry found for tenant Id " + tenantId);
}
} finally {
@@ -154,7 +209,7 @@ public class LookupDataHolder {
readLock.lock();
try {
- return clusterItToCartridgeSubscrptionMatch.get(clusterId);
+ return clusterIdToCartridgeSubscriptionMap.getCartridgeSubscription(clusterId);
} finally {
readLock.unlock();
@@ -196,43 +251,4 @@ public class LookupDataHolder {
readLock.unlock();
}
}
-
- private class SubscriptionAliasToCartridgeSubscriptionMap {
-
- private Map<String, CartridgeSubscription> subscriptionAliasToCartridgeSubscriptionMap;
-
- public SubscriptionAliasToCartridgeSubscriptionMap () {
- subscriptionAliasToCartridgeSubscriptionMap = new HashMap<String, CartridgeSubscription>();
- }
-
- public Map<String, CartridgeSubscription> getSubscriptionAliasToCartridgeSubscriptionMap() {
- return subscriptionAliasToCartridgeSubscriptionMap;
- }
-
- public void addSubscription(String subscriptionAlias, CartridgeSubscription cartridgeSubscription) {
-
- if(subscriptionAliasToCartridgeSubscriptionMap.put(subscriptionAlias, cartridgeSubscription) != null) {
- log.info("Overwrote the previous CartridgeSubscription value for subscription alias" + subscriptionAlias);
- }
- }
-
- public boolean isEmpty () {
- return subscriptionAliasToCartridgeSubscriptionMap.isEmpty();
- }
-
- public void removeSubscription (String subscriptionAlias) {
-
- if(subscriptionAliasToCartridgeSubscriptionMap.remove(subscriptionAlias) == null) {
- log.info("No CartridgeSubscription entry found for subscription alias " + subscriptionAlias);
- }
- }
-
- public CartridgeSubscription getCartridgeSubscription (String cartridgeSubscriptionAlias) {
- return subscriptionAliasToCartridgeSubscriptionMap.get(cartridgeSubscriptionAlias);
- }
-
- public Collection<CartridgeSubscription> getCartridgeSubscriptions () {
- return subscriptionAliasToCartridgeSubscriptionMap.values();
- }
- }
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionAliasToCartridgeSubscriptionMap.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionAliasToCartridgeSubscriptionMap.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionAliasToCartridgeSubscriptionMap.java
new file mode 100644
index 0000000..56e9d7d
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/lookup/SubscriptionAliasToCartridgeSubscriptionMap.java
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.lookup;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
+
+import java.io.Serializable;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+public class SubscriptionAliasToCartridgeSubscriptionMap implements Serializable {
+
+ private static final Log log = LogFactory.getLog(SubscriptionAliasToCartridgeSubscriptionMap.class);
+
+
+ private Map<String, CartridgeSubscription> subscriptionAliasToCartridgeSubscriptionMap;
+
+ public SubscriptionAliasToCartridgeSubscriptionMap () {
+ subscriptionAliasToCartridgeSubscriptionMap = new HashMap<String, CartridgeSubscription>();
+ }
+
+ public Map<String, CartridgeSubscription> getSubscriptionAliasToCartridgeSubscriptionMap() {
+ return subscriptionAliasToCartridgeSubscriptionMap;
+ }
+
+ public void addSubscription(String subscriptionAlias, CartridgeSubscription cartridgeSubscription) {
+
+ if(subscriptionAliasToCartridgeSubscriptionMap.put(subscriptionAlias, cartridgeSubscription) != null) {
+ log.info("Overwrote the previous CartridgeSubscription value for subscription alias" + subscriptionAlias);
+ }
+ }
+
+ public boolean isEmpty () {
+ return subscriptionAliasToCartridgeSubscriptionMap.isEmpty();
+ }
+
+ public void removeSubscription (String subscriptionAlias) {
+
+ if(subscriptionAliasToCartridgeSubscriptionMap.remove(subscriptionAlias) == null) {
+ log.info("No CartridgeSubscription entry found for subscription alias " + subscriptionAlias);
+ }
+ }
+
+ public CartridgeSubscription getCartridgeSubscription (String cartridgeSubscriptionAlias) {
+ return subscriptionAliasToCartridgeSubscriptionMap.get(cartridgeSubscriptionAlias);
+ }
+
+ public Collection<CartridgeSubscription> getCartridgeSubscriptions () {
+ return subscriptionAliasToCartridgeSubscriptionMap.values();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
index 1e8936a..b948e84 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/PersistenceManager.java
@@ -20,13 +20,25 @@
package org.apache.stratos.adc.mgt.persistence;
import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
-import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-
-import java.util.List;
+import org.apache.stratos.adc.mgt.lookup.ClusterIdToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.lookup.SubscriptionAliasToCartridgeSubscriptionMap;
public abstract class PersistenceManager {
- public abstract void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription)
+ public abstract void persistCartridgeSubscriptions (int tenantId, SubscriptionAliasToCartridgeSubscriptionMap
+ aliasToSubscriptionMap)
+ throws PersistenceManagerException;
+
+ public abstract SubscriptionAliasToCartridgeSubscriptionMap retrieveCartridgeSubscriptions (int tenantId)
+ throws PersistenceManagerException;
+
+ public abstract void persistCartridgeSubscriptions (String clusterId, ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap)
+ throws PersistenceManagerException;
+
+ public abstract ClusterIdToCartridgeSubscriptionMap retrieveCartridgeSubscriptions (String clusterId)
+ throws PersistenceManagerException;
+
+ /*public abstract void persistCartridgeSubscription (CartridgeSubscription cartridgeSubscription)
throws PersistenceManagerException;
public abstract void removeCartridgeSubscription (int tenantId, String alias)
@@ -41,7 +53,7 @@ public abstract class PersistenceManager {
public abstract CartridgeSubscription getCartridgeSubscription (String clusterDomain)
throws PersistenceManagerException;
- /*public abstract List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
+ public abstract List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId, String cartridgeType)
throws PersistenceManagerException;
public abstract Repository getRepository (int tenantId, String alias)
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
index e69585c..c796767 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/persistence/RegistryBasedPersistenceManager.java
@@ -19,35 +19,107 @@
package org.apache.stratos.adc.mgt.persistence;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.exception.ADCException;
import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
-import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
-
-import java.util.List;
+import org.apache.stratos.adc.mgt.lookup.ClusterIdToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.lookup.SubscriptionAliasToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.registry.RegistryManager;
+import org.apache.stratos.adc.mgt.utils.Deserializer;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
public class RegistryBasedPersistenceManager extends PersistenceManager {
- @Override
- public void persistCartridgeSubscription(CartridgeSubscription cartridgeSubscription) throws PersistenceManagerException {
- //To change body of implemented methods use File | Settings | File Templates.
- }
+ private static final Log log = LogFactory.getLog(RegistryBasedPersistenceManager.class);
@Override
- public void removeCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
- //To change body of implemented methods use File | Settings | File Templates.
+ public void persistCartridgeSubscriptions(int tenantId, SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap) throws PersistenceManagerException {
+
+ try {
+ RegistryManager.getInstance().persistAliastoSubscriptionMap(tenantId, aliasToSubscriptionMap);
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+
+ } catch (ADCException e) {
+ throw new PersistenceManagerException(e);
+ }
}
@Override
- public CartridgeSubscription getCartridgeSubscription(int tenantId, String alias) throws PersistenceManagerException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public SubscriptionAliasToCartridgeSubscriptionMap retrieveCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
+
+ Object aliasToSubscriptionMapObj;
+
+ try {
+ aliasToSubscriptionMapObj = RegistryManager.getInstance().getAliastoSubscriptionMap(tenantId);
+
+ } catch (ADCException e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (aliasToSubscriptionMapObj != null) {
+ try {
+ Object dataObj = Deserializer
+ .deserializeFromByteArray((byte[]) aliasToSubscriptionMapObj);
+ if(dataObj instanceof SubscriptionAliasToCartridgeSubscriptionMap) {
+ return (SubscriptionAliasToCartridgeSubscriptionMap) dataObj;
+ } else {
+ return null;
+ }
+
+ } catch (Exception e) {
+ String errorMsg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ log.warn(errorMsg, e);
+ }
+ }
+
+ return null;
}
@Override
- public List<CartridgeSubscription> getCartridgeSubscriptions(int tenantId) throws PersistenceManagerException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public void persistCartridgeSubscriptions(String clusterId, ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap) throws PersistenceManagerException {
+
+ try {
+ RegistryManager.getInstance().persistClusterIdToSubscriptionMap(clusterIdToSubscriptionMap);
+
+ } catch (RegistryException e) {
+ throw new PersistenceManagerException(e);
+
+ } catch (ADCException e) {
+ throw new PersistenceManagerException(e);
+ }
}
@Override
- public CartridgeSubscription getCartridgeSubscription(String clusterDomain) throws PersistenceManagerException {
- return null; //To change body of implemented methods use File | Settings | File Templates.
+ public ClusterIdToCartridgeSubscriptionMap retrieveCartridgeSubscriptions(String clusterId) throws PersistenceManagerException {
+
+ Object clusterIdToSubscriptionMapObj;
+
+ try {
+ clusterIdToSubscriptionMapObj = RegistryManager.getInstance().getClusterIdtoSubscriptionMap();
+
+ } catch (ADCException e) {
+ throw new PersistenceManagerException(e);
+ }
+
+ if (clusterIdToSubscriptionMapObj != null) {
+ try {
+ Object dataObj = Deserializer
+ .deserializeFromByteArray((byte[]) clusterIdToSubscriptionMapObj);
+ if(dataObj instanceof ClusterIdToCartridgeSubscriptionMap) {
+ return (ClusterIdToCartridgeSubscriptionMap) dataObj;
+ } else {
+ return null;
+ }
+
+ } catch (Exception e) {
+ String errorMsg = "Unable to retrieve data from Registry. Hence, any historical data will not get reflected.";
+ log.warn(errorMsg, e);
+ }
+ }
+
+ return null;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/registry/RegistryManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/registry/RegistryManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/registry/RegistryManager.java
new file mode 100644
index 0000000..da7fdec
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/registry/RegistryManager.java
@@ -0,0 +1,138 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.registry;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.adc.mgt.exception.ADCException;
+import org.apache.stratos.adc.mgt.internal.DataHolder;
+import org.apache.stratos.adc.mgt.lookup.ClusterIdToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.lookup.SubscriptionAliasToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.utils.Serializer;
+import org.wso2.carbon.registry.core.Registry;
+import org.wso2.carbon.registry.core.Resource;
+import org.wso2.carbon.registry.core.exceptions.RegistryException;
+import org.wso2.carbon.registry.core.exceptions.ResourceNotFoundException;
+
+public class RegistryManager {
+
+ private final static Log log = LogFactory.getLog(RegistryManager.class);
+ private final static String STRATOS_MANAGER_REOSURCE = "/stratos.manager";
+ private static Registry registryService;
+ private static RegistryManager registryManager;
+
+ public static RegistryManager getInstance() {
+
+ registryService = DataHolder.getRegistry();
+
+ if (registryManager == null) {
+ synchronized (RegistryManager.class) {
+ if (registryService == null) {
+ return registryManager;
+ }
+ registryManager = new RegistryManager();
+ }
+ }
+ return registryManager;
+ }
+
+ private RegistryManager() {
+ try {
+ if (!registryService.resourceExists(STRATOS_MANAGER_REOSURCE)) {
+ registryService.put(STRATOS_MANAGER_REOSURCE, registryService.newCollection());
+ }
+ } catch (RegistryException e) {
+ String errorMsg = "Failed to create the registry resource " + STRATOS_MANAGER_REOSURCE;
+ log.error(errorMsg, e);;
+ }
+ }
+
+ public void persistAliastoSubscriptionMap (int tenantId,
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap)
+ throws RegistryException, ADCException {
+
+ try {
+ registryService.beginTransaction();
+ Resource nodeResource = registryService.newResource();
+ nodeResource.setContent(Serializer.serializeAliasToSubscriptionMapToByteArray(aliasToSubscriptionMap));
+ registryService.put(STRATOS_MANAGER_REOSURCE + "/subscription/tenant" + Integer.toString(tenantId),
+ nodeResource);
+ registryService.commitTransaction();
+
+ } catch (Exception e) {
+ String errorMsg = "Failed to persist SubscriptionAliasToCartridgeSubscriptionMap in registry.";
+ registryService.rollbackTransaction();
+ log.error(errorMsg, e);
+ throw new ADCException(errorMsg, e);
+ }
+ }
+
+ public Object getAliastoSubscriptionMap (int tenantId) throws ADCException {
+
+ try {
+ Resource resource = registryService.get(STRATOS_MANAGER_REOSURCE + "/subscription/tenant" +
+ Integer.toString(tenantId));
+ return resource.getContent();
+
+ } catch (ResourceNotFoundException ignore) {
+ return null;
+
+ } catch (RegistryException e) {
+ String errorMsg = "Failed to retrieve SubscriptionAliasToCartridgeSubscriptionMap from registry.";
+ log.error(errorMsg, e);
+ throw new ADCException(errorMsg, e);
+ }
+ }
+
+ public void persistClusterIdToSubscriptionMap (ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap)
+ throws RegistryException, ADCException {
+
+ try {
+ registryService.beginTransaction();
+ Resource nodeResource = registryService.newResource();
+ nodeResource.setContent(Serializer.serializeClusterIdToSubscriptionMapToByteArray(clusterIdToSubscriptionMap));
+ registryService.put(STRATOS_MANAGER_REOSURCE + "/subscription/cluster",
+ nodeResource);
+ registryService.commitTransaction();
+
+ } catch (Exception e) {
+ String errorMsg = "Failed to persist ClusterIdToCartridgeSubscriptionMap in registry.";
+ registryService.rollbackTransaction();
+ log.error(errorMsg, e);
+ throw new ADCException(errorMsg, e);
+ }
+ }
+
+ public Object getClusterIdtoSubscriptionMap () throws ADCException {
+
+ try {
+ Resource resource = registryService.get(STRATOS_MANAGER_REOSURCE + "/subscription/cluster");
+ return resource.getContent();
+
+ } catch (ResourceNotFoundException ignore) {
+ return null;
+
+ } catch (RegistryException e) {
+ String errorMsg = "Failed to retrieve ClusterIdToCartridgeSubscriptionMap from registry.";
+ log.error(errorMsg, e);
+ throw new ADCException(errorMsg, e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
index 11093d3..27022c5 100644
--- a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/retriever/DataRetrievalManager.java
@@ -19,8 +19,11 @@
package org.apache.stratos.adc.mgt.retriever;
+import org.apache.stratos.adc.mgt.exception.ADCException;
import org.apache.stratos.adc.mgt.exception.PersistenceManagerException;
+import org.apache.stratos.adc.mgt.lookup.ClusterIdToCartridgeSubscriptionMap;
import org.apache.stratos.adc.mgt.lookup.LookupDataHolder;
+import org.apache.stratos.adc.mgt.lookup.SubscriptionAliasToCartridgeSubscriptionMap;
import org.apache.stratos.adc.mgt.persistence.PersistenceManager;
import org.apache.stratos.adc.mgt.subscription.CartridgeSubscription;
import org.jgroups.logging.Log;
@@ -46,46 +49,45 @@ public class DataRetrievalManager {
cartridgeSubscriptionUpdateThreadPool = Executors.newCachedThreadPool();
}
- public CartridgeSubscription getCartridgeSubscription (int tenantId, String subscriptionAlias)
- throws PersistenceManagerException {
+ public CartridgeSubscription getCartridgeSubscriptionByAlias (int tenantId, String subscriptionAlias)
+ throws PersistenceManagerException, ADCException {
CartridgeSubscription cartridgeSubscription = null;
if(lookupDataHolder != null) {
- //look in the local cache
- cartridgeSubscription = lookupDataHolder.getCartridgeSubscription(tenantId, subscriptionAlias);
+ cartridgeSubscription = lookupDataHolder.getCartridgeSubscription(subscriptionAlias);
}
- //if not found in the local cache, look in the Persistence Manager
- if (cartridgeSubscription == null) {
- persistenceManager.getCartridgeSubscription(tenantId, subscriptionAlias);
- } else {
- if(log.isDebugEnabled()) {
- log.debug("Cartridge subscription entry for tenant Id " + tenantId + ", subscription alias " +
- subscriptionAlias + " found in the local cache");
+ else {
+ //look in the persistence manager
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap =
+ persistenceManager.retrieveCartridgeSubscriptions(tenantId);
+
+ if(aliasToSubscriptionMap != null) {
+ cartridgeSubscription = aliasToSubscriptionMap.getCartridgeSubscription(subscriptionAlias);
+ populateLookupDataHolder(aliasToSubscriptionMap);
}
}
return cartridgeSubscription;
}
- public CartridgeSubscription getCartridgeSubscription (String clusterId)
- throws PersistenceManagerException {
+ public CartridgeSubscription getCartridgeSubscriptionByClusterId (String clusterId)
+ throws PersistenceManagerException, ADCException {
CartridgeSubscription cartridgeSubscription = null;
if(lookupDataHolder != null) {
- //look in the local cache
cartridgeSubscription = lookupDataHolder.getCartridgeSubscription(clusterId);
}
- //if not found in the local cache, look in the Persistence Manager
- if (cartridgeSubscription == null) {
- persistenceManager.getCartridgeSubscription(clusterId);
-
- } else {
- if(log.isDebugEnabled()) {
- log.debug("Cartridge subscription entry for cluster domain " + clusterId +
- " found in the local cache");
+ else {
+ //look in the persistence manager
+ ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap =
+ persistenceManager.retrieveCartridgeSubscriptions(clusterId);
+ if(clusterIdToSubscriptionMap != null) {
+ cartridgeSubscription = clusterIdToSubscriptionMap.getCartridgeSubscription(clusterId);
+ populateLookupDataHolder(clusterIdToSubscriptionMap);
}
+
}
return cartridgeSubscription;
@@ -101,7 +103,10 @@ public class DataRetrievalManager {
}
//if not found in the local cache, look in the Persistence Manager
if (cartridgeSubscriptionCollection == null) {
- persistenceManager.getCartridgeSubscriptions(tenantId);
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap = persistenceManager.
+ retrieveCartridgeSubscriptions(tenantId);
+ //populate the LookupDataHolder
+ populateLookupDataHolder(aliasToSubscriptionMap);
} else {
if(log.isDebugEnabled()) {
@@ -118,29 +123,51 @@ public class DataRetrievalManager {
return cartridgeSubscriptionList;
}
- public void putCartridgeSubscription (CartridgeSubscription cartridgeSubscription) {
+ private void populateLookupDataHolder (SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap) {
+
+ //populate the cache
+ Collection<CartridgeSubscription> cartridgeSubscriptions = aliasToSubscriptionMap.getCartridgeSubscriptions();
+ for (CartridgeSubscription subscription : cartridgeSubscriptions) {
+ lookupDataHolder.addCartridgeSubscription(subscription.getSubscriber().getTenantId(),
+ subscription.getAlias(),
+ subscription);
+ }
+ }
+
+ private void populateLookupDataHolder (ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap) {
- cartridgeSubscriptionUpdateThreadPool.submit(new CartridgeSubscriptionUpdater(cartridgeSubscription,
+ //populate the cache
+ Collection<CartridgeSubscription> cartridgeSubscriptions = clusterIdToSubscriptionMap.getCartridgeSubscriptions();
+ for (CartridgeSubscription subscription : cartridgeSubscriptions) {
+ lookupDataHolder.addCartridgeSubscription(subscription.getSubscriber().getTenantId(),
+ subscription.getAlias(),
+ subscription);
+ }
+ }
+
+ public void putCartridgeSubscriptions (SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap) {
+
+ cartridgeSubscriptionUpdateThreadPool.submit(new CartridgeSubscriptionUpdater(aliasToSubscriptionMap,
lookupDataHolder, persistenceManager));
}
private class CartridgeSubscriptionUpdater implements Runnable {
- CartridgeSubscription cartridgeSubscription;
+ SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap;
LookupDataHolder lookupDataHolder;
PersistenceManager persistenceManager;
- public CartridgeSubscriptionUpdater (CartridgeSubscription cartridgeSubscription, LookupDataHolder
- lookupDataHolder, PersistenceManager persistenceManager) {
+ public CartridgeSubscriptionUpdater (SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap,
+ LookupDataHolder lookupDataHolder, PersistenceManager persistenceManager) {
- this.cartridgeSubscription = cartridgeSubscription;
+ this.aliasToSubscriptionMap = aliasToSubscriptionMap;
this.lookupDataHolder = lookupDataHolder;
this.persistenceManager = persistenceManager;
}
public void run() {
- if(lookupDataHolder != null) {
+ /*if(lookupDataHolder != null) {
lookupDataHolder.addCartridgeSubscription(cartridgeSubscription.getSubscriber().getTenantId(),
cartridgeSubscription.getAlias(), cartridgeSubscription);
}
@@ -150,7 +177,7 @@ public class DataRetrievalManager {
} catch (PersistenceManagerException e) {
String errorMsg = "Error in persisting Cartridge Subscription instance";
log.error(errorMsg, e);
- }
+ }*/
}
}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Deserializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Deserializer.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Deserializer.java
new file mode 100644
index 0000000..95edaf1
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Deserializer.java
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.utils;
+
+import java.io.ByteArrayInputStream;
+import java.io.ObjectInput;
+import java.io.ObjectInputStream;
+
+public class Deserializer {
+
+
+ /**
+ * Deserialize a byte array and retrieve the object.
+ * @param bytes bytes to be deserialized
+ * @return the deserialized {@link Object}
+ * @throws Exception if the deserialization is failed.
+ */
+ public static Object deserializeFromByteArray(byte[] bytes) throws Exception {
+
+ ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
+ ObjectInput in = null;
+ try {
+ in = new ObjectInputStream(bis);
+ Object o = in.readObject();
+
+ return o;
+
+ } finally {
+ bis.close();
+ if (in != null) {
+ in.close();
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/aebdb087/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Serializer.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Serializer.java b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Serializer.java
new file mode 100644
index 0000000..b0b0b77
--- /dev/null
+++ b/components/org.apache.stratos.adc.mgt/src/main/java/org/apache/stratos/adc/mgt/utils/Serializer.java
@@ -0,0 +1,83 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.adc.mgt.utils;
+
+import org.apache.stratos.adc.mgt.lookup.ClusterIdToCartridgeSubscriptionMap;
+import org.apache.stratos.adc.mgt.lookup.SubscriptionAliasToCartridgeSubscriptionMap;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.ObjectOutput;
+import java.io.ObjectOutputStream;
+
+public class Serializer {
+
+ /**
+ * Serialize a SubscriptionAliasToCartridgeSubscriptionMap to a byte array.
+ * @param aliasToSubscriptionMap
+ * @return byte[]
+ * @throws java.io.IOException
+ */
+ public static byte[] serializeAliasToSubscriptionMapToByteArray (SubscriptionAliasToCartridgeSubscriptionMap aliasToSubscriptionMap)
+ throws IOException {
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutput out = null;
+ try {
+ out = new ObjectOutputStream(bos);
+ out.writeObject(aliasToSubscriptionMap);
+
+ return bos.toByteArray();
+
+ } finally {
+ if (out != null) {
+ out.close();
+ }
+ bos.close();
+ }
+
+ }
+
+ /**
+ * Serialize a ClusterIdToCartridgeSubscriptionMap to a byte array.
+ * @param clusterIdToSubscriptionMap
+ * @return byte[]
+ * @throws java.io.IOException
+ */
+ public static byte[] serializeClusterIdToSubscriptionMapToByteArray (ClusterIdToCartridgeSubscriptionMap clusterIdToSubscriptionMap)
+ throws IOException {
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ ObjectOutput out = null;
+ try {
+ out = new ObjectOutputStream(bos);
+ out.writeObject(clusterIdToSubscriptionMap);
+
+ return bos.toByteArray();
+
+ } finally {
+ if (out != null) {
+ out.close();
+ }
+ bos.close();
+ }
+
+ }
+}