You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by im...@apache.org on 2014/12/02 02:53:00 UTC
[1/2] stratos git commit: Fixing distributed lock object
serialization issue and adding unit tests for verifying clustered mode
Repository: stratos
Updated Branches:
refs/heads/master e29ce9d3e -> fdb84e7c1
Fixing distributed lock object serialization issue and adding unit tests for verifying clustered mode
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/a2b64fa9
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/a2b64fa9
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/a2b64fa9
Branch: refs/heads/master
Commit: a2b64fa9421e71f007fbb8712bd066342cbb24a7
Parents: e29ce9d
Author: Imesh Gunaratne <im...@apache.org>
Authored: Mon Dec 1 21:04:12 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Tue Dec 2 07:20:42 2014 +0530
----------------------------------------------------------------------
.../clustering/DistributedObjectProvider.java | 24 ++++++---
.../test/DistributedObjectProviderTest.java | 57 ++++++++++++++++++--
2 files changed, 69 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/a2b64fa9/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
index 428d3da..328f67d 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
@@ -58,6 +58,10 @@ public class DistributedObjectProvider implements Serializable {
}
private void releaseDistributedLock(ILock lock) {
+ if(lock == null) {
+ return;
+ }
+
if (log.isDebugEnabled()) {
log.debug(String.format("Releasing distributed lock for %s...", lock.getKey()));
}
@@ -105,8 +109,9 @@ public class DistributedObjectProvider implements Serializable {
if(clustered) {
ILock lock = null;
try {
- lock = acquireDistributedLock(map);
- ((IMap)map).set(key, value);
+ IMap imap = (IMap) map;
+ lock = acquireDistributedLock(imap.getName());
+ imap.set(key, value);
} finally {
releaseDistributedLock(lock);
}
@@ -124,8 +129,9 @@ public class DistributedObjectProvider implements Serializable {
if(clustered) {
ILock lock = null;
try {
- lock = acquireDistributedLock(map);
- ((IMap)map).delete(key);
+ IMap imap = (IMap) map;
+ lock = acquireDistributedLock(imap.getName());
+ imap.delete(key);
} finally {
releaseDistributedLock(lock);
}
@@ -143,8 +149,9 @@ public class DistributedObjectProvider implements Serializable {
if(clustered) {
ILock lock = null;
try {
- lock = acquireDistributedLock(list);
- ((IList)list).add(value);
+ IList ilist = (IList) list;
+ lock = acquireDistributedLock(ilist.getName());
+ ilist.add(value);
} finally {
releaseDistributedLock(lock);
}
@@ -162,8 +169,9 @@ public class DistributedObjectProvider implements Serializable {
if(clustered) {
ILock lock = null;
try {
- lock = acquireDistributedLock(list);
- ((IList)list).remove(value);
+ IList ilist = (IList) list;
+ lock = acquireDistributedLock(ilist.getName());
+ ilist.remove(value);
} finally {
releaseDistributedLock(lock);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/a2b64fa9/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java b/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
index 048680d..9d31923 100644
--- a/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
+++ b/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
@@ -19,7 +19,10 @@
package org.apache.stratos.common.test;
+import com.hazelcast.core.Hazelcast;
+import com.hazelcast.core.HazelcastInstance;
import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.junit.BeforeClass;
import org.junit.Test;
import java.util.List;
@@ -30,13 +33,32 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+/**
+ * Distributed object provider unit tests.
+ */
public class DistributedObjectProviderTest {
+ private static HazelcastInstance hazelcastInstance;
+
+ @BeforeClass
+ public static void setUpClass() {
+ hazelcastInstance = Hazelcast.newHazelcastInstance();
+ }
+
@Test
public void testPutToMapLocal() {
DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
- Map<String, String> map = provider.getMap("MAP1");
+ testPutToMap(provider);
+ }
+
+ @Test
+ public void testPutToMapDistributed() {
+ DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ testPutToMap(provider);
+ }
+ private void testPutToMap(DistributedObjectProvider provider) {
+ Map<String, String> map = provider.getMap("MAP1");
provider.putToMap(map, "key1", "value1");
assertEquals(map.get("key1"), "value1");
}
@@ -44,8 +66,17 @@ public class DistributedObjectProviderTest {
@Test
public void testRemoveFromMapLocal() {
DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
- Map<String, String> map = provider.getMap("MAP1");
+ testRemoveFromMap(provider);
+ }
+
+ @Test
+ public void testRemoveFromMapDistributed() {
+ DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ testRemoveFromMap(provider);
+ }
+ private void testRemoveFromMap(DistributedObjectProvider provider) {
+ Map<String, String> map = provider.getMap("MAP1");
provider.putToMap(map, "key1", "value1");
assertEquals(map.get("key1"), "value1");
provider.removeFromMap(map, "key1");
@@ -55,8 +86,17 @@ public class DistributedObjectProviderTest {
@Test
public void testAddToListLocal() {
DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
- List list = provider.getList("LIST1");
+ testAddToList(provider);
+ }
+
+ @Test
+ public void testAddToListDistributed() {
+ DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ testAddToList(provider);
+ }
+ private void testAddToList(DistributedObjectProvider provider) {
+ List list = provider.getList("LIST1");
String value1 = "value1";
provider.addToList(list, value1);
assertTrue(list.contains(value1));
@@ -65,8 +105,17 @@ public class DistributedObjectProviderTest {
@Test
public void testRemoveFromListLocal() {
DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
- List list = provider.getList("LIST1");
+ testRemovalFromList(provider);
+ }
+ @Test
+ public void testRemoveFromListDistributed() {
+ DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ testRemovalFromList(provider);
+ }
+
+ private void testRemovalFromList(DistributedObjectProvider provider) {
+ List list = provider.getList("LIST1");
String value1 = "value1";
provider.addToList(list, value1);
assertTrue(list.contains(value1));
[2/2] stratos git commit: Converting distributed object provider to
an osgi service
Posted by im...@apache.org.
Converting distributed object provider to an osgi service
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/fdb84e7c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/fdb84e7c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/fdb84e7c
Branch: refs/heads/master
Commit: fdb84e7c13d6d4e994185d8b84d0f65c97497864
Parents: a2b64fa
Author: Imesh Gunaratne <im...@apache.org>
Authored: Tue Dec 2 07:08:45 2014 +0530
Committer: Imesh Gunaratne <im...@apache.org>
Committed: Tue Dec 2 07:21:14 2014 +0530
----------------------------------------------------------------------
.../context/CloudControllerContext.java | 5 +-
.../CloudControllerServiceComponent.java | 26 +--
.../internal/ServiceReferenceHolder.java | 22 +-
.../axiom/CloudControllerContextTest.java | 3 +
.../clustering/DistributedObjectProvider.java | 158 +--------------
.../HazelcastDistributedObjectProvider.java | 199 +++++++++++++++++++
.../internal/CloudCommonServiceComponent.java | 139 -------------
.../common/internal/ServiceReferenceHolder.java | 78 ++++++++
.../internal/StratosCommonServiceComponent.java | 135 +++++++++++++
.../common/services/PackageInfoService.java | 14 +-
.../stratos/common/util/CloudServicesUtil.java | 10 +-
.../apache/stratos/common/util/CommonUtil.java | 7 +-
.../test/DistributedObjectProviderTest.java | 35 ++--
13 files changed, 477 insertions(+), 354 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
index 969c3c0..eeee5d5 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/context/CloudControllerContext.java
@@ -130,9 +130,8 @@ public class CloudControllerContext implements Serializable {
clustered = true;
}
- // Initialize distributed object handler
- distributedObjectProvider = new DistributedObjectProvider(isClustered(),
- ServiceReferenceHolder.getInstance().getHazelcastInstance());
+ // Initialize distributed object provider
+ distributedObjectProvider = ServiceReferenceHolder.getInstance().getDistributedObjectProvider();
// Initialize objects
clusterIdToMemberContextListMap = distributedObjectProvider.getMap(CC_CLUSTER_ID_TO_MEMBER_CTX);
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
index 7337813..7f2c150 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/CloudControllerServiceComponent.java
@@ -33,6 +33,7 @@ import org.apache.stratos.cloud.controller.services.CloudControllerService;
import org.apache.stratos.cloud.controller.services.impl.CloudControllerServiceImpl;
import org.apache.stratos.cloud.controller.messaging.publisher.TopologySynchronizerTaskScheduler;
import org.apache.stratos.cloud.controller.messaging.receiver.instance.status.InstanceStatusTopicReceiver;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
import org.apache.stratos.messaging.broker.publish.EventPublisherPool;
import org.apache.stratos.messaging.util.Util;
import org.osgi.framework.BundleContext;
@@ -48,10 +49,8 @@ import org.wso2.carbon.utils.ConfigurationContextService;
* Registering Cloud Controller Service.
*
* @scr.component name="org.apache.stratos.cloud.controller" immediate="true"
- * @scr.reference name="hazelcast.instance.service" interface="com.hazelcast.core.HazelcastInstance"
- * cardinality="0..1"policy="dynamic" bind="setHazelcastInstance" unbind="unsetHazelcastInstance"
- * @scr.reference name="distributedMapProvider" interface="org.wso2.carbon.caching.impl.DistributedMapProvider"
- * cardinality="0..1" policy="dynamic" bind="setDistributedMapProvider" unbind="unsetDistributedMapProvider"
+ * @scr.reference name="distributedObjectProvider" interface="org.apache.stratos.common.clustering.DistributedObjectProvider"
+ * cardinality="1..1" policy="dynamic" bind="setDistributedObjectProvider" unbind="unsetDistributedObjectProvider"
* @scr.reference name="ntask.component" interface="org.wso2.carbon.ntask.core.service.TaskService"
* cardinality="1..1" policy="dynamic" bind="setTaskService" unbind="unsetTaskService"
* @scr.reference name="registry.service" interface="org.wso2.carbon.registry.core.service.RegistryService"
@@ -133,8 +132,7 @@ public class CloudControllerServiceComponent {
try {
UserRegistry registry = registryService.getGovernanceSystemRegistry();
- ServiceReferenceHolder.getInstance()
- .setRegistry(registry);
+ ServiceReferenceHolder.getInstance().setRegistry(registry);
} catch (RegistryException e) {
String msg = "Failed when retrieving Governance System Registry.";
log.error(msg, e);
@@ -158,20 +156,12 @@ public class CloudControllerServiceComponent {
ServiceReferenceHolder.getInstance().setAxisConfiguration(null);
}
- protected void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
- ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ protected void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedObjectProvider(distributedObjectProvider);
}
- protected void unsetHazelcastInstance(HazelcastInstance hazelcastInstance) {
- ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
- }
-
- protected void setDistributedMapProvider(DistributedMapProvider mapProvider) {
- ServiceReferenceHolder.getInstance().setDistributedMapProvider(mapProvider);
- }
-
- protected void unsetDistributedMapProvider(DistributedMapProvider mapProvider) {
- ServiceReferenceHolder.getInstance().setDistributedMapProvider(null);
+ protected void unsetDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedObjectProvider(null);
}
protected void deactivate(ComponentContext ctx) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/ServiceReferenceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/ServiceReferenceHolder.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/ServiceReferenceHolder.java
index 609e1a9..9ac0a19 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/ServiceReferenceHolder.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/internal/ServiceReferenceHolder.java
@@ -18,9 +18,8 @@
*/
package org.apache.stratos.cloud.controller.internal;
-import com.hazelcast.core.HazelcastInstance;
import org.apache.axis2.engine.AxisConfiguration;
-import org.wso2.carbon.caching.impl.DistributedMapProvider;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
import org.wso2.carbon.ntask.core.service.TaskService;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.session.UserRegistry;
@@ -34,8 +33,7 @@ public class ServiceReferenceHolder {
private TaskService taskService;
private Registry registry;
private AxisConfiguration axisConfiguration;
- private DistributedMapProvider distributedMapProvider;
- private HazelcastInstance hazelcastInstance;
+ private DistributedObjectProvider distributedObjectProvider;
private ServiceReferenceHolder() {
}
@@ -71,19 +69,11 @@ public class ServiceReferenceHolder {
return registry;
}
- public void setDistributedMapProvider(DistributedMapProvider distributedMapProvider) {
- this.distributedMapProvider = distributedMapProvider;
+ public void setDistributedObjectProvider(DistributedObjectProvider distributedObjectProvider) {
+ this.distributedObjectProvider = distributedObjectProvider;
}
- public DistributedMapProvider getDistributedMapProvider() {
- return distributedMapProvider;
- }
-
- public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
- this.hazelcastInstance = hazelcastInstance;
- }
-
- public HazelcastInstance getHazelcastInstance() {
- return hazelcastInstance;
+ public DistributedObjectProvider getDistributedObjectProvider() {
+ return distributedObjectProvider;
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/CloudControllerContextTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/CloudControllerContextTest.java b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/CloudControllerContextTest.java
index cb1aaee..cc7919a 100644
--- a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/CloudControllerContextTest.java
+++ b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/cartridge/autoscaler/service/axiom/CloudControllerContextTest.java
@@ -23,6 +23,7 @@ import org.apache.stratos.cloud.controller.context.CloudControllerContext;
import org.apache.stratos.cloud.controller.domain.MemberContext;
import junit.framework.TestCase;
import org.apache.stratos.cloud.controller.internal.ServiceReferenceHolder;
+import org.apache.stratos.common.clustering.impl.HazelcastDistributedObjectProvider;
public class CloudControllerContextTest extends TestCase {
@@ -37,6 +38,8 @@ public class CloudControllerContextTest extends TestCase {
public final void testMemberContextOperations() throws Exception {
AxisConfiguration axisConfiguration = new AxisConfiguration();
axisConfiguration.setClusteringAgent(null);
+
+ ServiceReferenceHolder.getInstance().setDistributedObjectProvider(new HazelcastDistributedObjectProvider());
ServiceReferenceHolder.getInstance().setAxisConfiguration(axisConfiguration);
CloudControllerContext context = CloudControllerContext.getInstance();
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
index 328f67d..c9fa5ec 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/DistributedObjectProvider.java
@@ -19,164 +19,22 @@
package org.apache.stratos.common.clustering;
-import com.hazelcast.core.HazelcastInstance;
-import com.hazelcast.core.IList;
-import com.hazelcast.core.ILock;
-import com.hazelcast.core.IMap;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import java.io.Serializable;
-import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
/**
- * Provides objects to be managed in distributed and non-distributed environments.
+ * Distributed object provider service interface.
*/
-public class DistributedObjectProvider implements Serializable {
- private static final Log log = LogFactory.getLog(DistributedObjectProvider.class);
-
- private final boolean clustered;
- private final HazelcastInstance hazelcastInstance;
-
- public DistributedObjectProvider(boolean clustered, HazelcastInstance hazelcastInstance) {
- this.clustered = clustered;
- this.hazelcastInstance = hazelcastInstance;
- }
-
- private com.hazelcast.core.ILock acquireDistributedLock(Object object) {
- if (log.isDebugEnabled()) {
- log.debug(String.format("Acquiring distributed lock for %s...", object.getClass().getSimpleName()));
- }
- ILock lock = hazelcastInstance.getLock(object);
- if (log.isDebugEnabled()) {
- log.debug(String.format("Distributed lock acquired for %s", object.getClass().getSimpleName()));
- }
- return lock;
- }
-
- private void releaseDistributedLock(ILock lock) {
- if(lock == null) {
- return;
- }
-
- if (log.isDebugEnabled()) {
- log.debug(String.format("Releasing distributed lock for %s...", lock.getKey()));
- }
- lock.forceUnlock();
- if (log.isDebugEnabled()) {
- log.debug(String.format("Distributed lock released for %s", lock.getKey()));
- }
- }
-
- /**
- * If clustering is enabled returns a distributed map object, otherwise returns a
- * concurrent local map object.
- * @param key
- * @return
- */
- public Map getMap(String key) {
- if(clustered) {
- return hazelcastInstance.getMap(key);
- } else {
- return new ConcurrentHashMap<Object, Object>();
- }
- }
+public interface DistributedObjectProvider {
+ Map getMap(String key);
- /**
- * If clustering is enabled returns a distributed list, otherwise returns
- * a local array list.
- * @param name
- * @return
- */
- public List getList(String name) {
- if(clustered) {
- return hazelcastInstance.getList(name);
- } else {
- return new ArrayList();
- }
- }
+ List getList(String name);
- /**
- * Put a key value pair to a map, if clustered use a distributed lock.
- * @param map
- * @param key
- * @param value
- */
- public void putToMap(Map map, Object key, Object value) {
- if(clustered) {
- ILock lock = null;
- try {
- IMap imap = (IMap) map;
- lock = acquireDistributedLock(imap.getName());
- imap.set(key, value);
- } finally {
- releaseDistributedLock(lock);
- }
- } else {
- map.put(key, value);
- }
- }
+ void putToMap(Map map, Object key, Object value);
- /**
- * Remove an object from a map, if clustered use a distributed lock.
- * @param map
- * @param key
- */
- public void removeFromMap(Map map, Object key) {
- if(clustered) {
- ILock lock = null;
- try {
- IMap imap = (IMap) map;
- lock = acquireDistributedLock(imap.getName());
- imap.delete(key);
- } finally {
- releaseDistributedLock(lock);
- }
- } else {
- map.remove(key);
- }
- }
+ void removeFromMap(Map map, Object key);
- /**
- * Add an object to a list, if clustered use a distributed lock.
- * @param list
- * @param value
- */
- public void addToList(List list, Object value) {
- if(clustered) {
- ILock lock = null;
- try {
- IList ilist = (IList) list;
- lock = acquireDistributedLock(ilist.getName());
- ilist.add(value);
- } finally {
- releaseDistributedLock(lock);
- }
- } else {
- list.add(value);
- }
- }
+ void addToList(List list, Object value);
- /**
- * Remove an object from a list, if clustered use a distributed lock.
- * @param list
- * @param value
- */
- public void removeFromList(List list, Object value) {
- if(clustered) {
- ILock lock = null;
- try {
- IList ilist = (IList) list;
- lock = acquireDistributedLock(ilist.getName());
- ilist.remove(value);
- } finally {
- releaseDistributedLock(lock);
- }
- } else {
- list.remove(value);
- }
- }
+ void removeFromList(List list, Object value);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/impl/HazelcastDistributedObjectProvider.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/impl/HazelcastDistributedObjectProvider.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/impl/HazelcastDistributedObjectProvider.java
new file mode 100644
index 0000000..55d765e
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/clustering/impl/HazelcastDistributedObjectProvider.java
@@ -0,0 +1,199 @@
+/*
+ * 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.common.clustering.impl;
+
+import com.hazelcast.core.HazelcastInstance;
+import com.hazelcast.core.IList;
+import com.hazelcast.core.ILock;
+import com.hazelcast.core.IMap;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.apache.stratos.common.internal.ServiceReferenceHolder;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * Provides objects to be managed in distributed and non-distributed environments.
+ */
+public class HazelcastDistributedObjectProvider implements DistributedObjectProvider {
+ private static final Log log = LogFactory.getLog(HazelcastDistributedObjectProvider.class);
+
+ public HazelcastDistributedObjectProvider() {
+ }
+
+ private boolean isClustered() {
+ AxisConfiguration axisConfiguration = ServiceReferenceHolder.getInstance().getAxisConfiguration();
+ return ((axisConfiguration != null) && (axisConfiguration.getClusteringAgent() != null)
+ && (getHazelcastInstance() != null));
+ }
+
+ private HazelcastInstance getHazelcastInstance() {
+ return ServiceReferenceHolder.getInstance().getHazelcastInstance();
+ }
+
+ private com.hazelcast.core.ILock acquireDistributedLock(Object object) {
+ if((!isClustered()) || (object == null)) {
+ return null;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Acquiring distributed lock for %s...", object.getClass().getSimpleName()));
+ }
+ ILock lock = getHazelcastInstance().getLock(object);
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Distributed lock acquired for %s", object.getClass().getSimpleName()));
+ }
+ return lock;
+ }
+
+ private void releaseDistributedLock(ILock lock) {
+ if(lock == null) {
+ return;
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Releasing distributed lock for %s...", lock.getKey()));
+ }
+ lock.forceUnlock();
+ if (log.isDebugEnabled()) {
+ log.debug(String.format("Distributed lock released for %s", lock.getKey()));
+ }
+ }
+
+ /**
+ * If clustering is enabled returns a distributed map object, otherwise returns a
+ * concurrent local map object.
+ * @param key
+ * @return
+ */
+ @Override
+ public Map getMap(String key) {
+ if(isClustered()) {
+ return getHazelcastInstance().getMap(key);
+ } else {
+ return new ConcurrentHashMap<Object, Object>();
+ }
+ }
+
+ /**
+ * If clustering is enabled returns a distributed list, otherwise returns
+ * a local array list.
+ * @param name
+ * @return
+ */
+ @Override
+ public List getList(String name) {
+ if(isClustered()) {
+ return getHazelcastInstance().getList(name);
+ } else {
+ return new ArrayList();
+ }
+ }
+
+ /**
+ * Put a key value pair to a map, if clustered use a distributed lock.
+ * @param map
+ * @param key
+ * @param value
+ */
+ @Override
+ public void putToMap(Map map, Object key, Object value) {
+ if(isClustered()) {
+ ILock lock = null;
+ try {
+ IMap imap = (IMap) map;
+ lock = acquireDistributedLock(imap.getName());
+ imap.set(key, value);
+ } finally {
+ releaseDistributedLock(lock);
+ }
+ } else {
+ map.put(key, value);
+ }
+ }
+
+ /**
+ * Remove an object from a map, if clustered use a distributed lock.
+ * @param map
+ * @param key
+ */
+ @Override
+ public void removeFromMap(Map map, Object key) {
+ if(isClustered()) {
+ ILock lock = null;
+ try {
+ IMap imap = (IMap) map;
+ lock = acquireDistributedLock(imap.getName());
+ imap.delete(key);
+ } finally {
+ releaseDistributedLock(lock);
+ }
+ } else {
+ map.remove(key);
+ }
+ }
+
+ /**
+ * Add an object to a list, if clustered use a distributed lock.
+ * @param list
+ * @param value
+ */
+ @Override
+ public void addToList(List list, Object value) {
+ if(isClustered()) {
+ ILock lock = null;
+ try {
+ IList ilist = (IList) list;
+ lock = acquireDistributedLock(ilist.getName());
+ ilist.add(value);
+ } finally {
+ releaseDistributedLock(lock);
+ }
+ } else {
+ list.add(value);
+ }
+ }
+
+ /**
+ * Remove an object from a list, if clustered use a distributed lock.
+ * @param list
+ * @param value
+ */
+ @Override
+ public void removeFromList(List list, Object value) {
+ if(isClustered()) {
+ ILock lock = null;
+ try {
+ IList ilist = (IList) list;
+ lock = acquireDistributedLock(ilist.getName());
+ ilist.remove(value);
+ } finally {
+ releaseDistributedLock(lock);
+ }
+ } else {
+ list.remove(value);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/CloudCommonServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/CloudCommonServiceComponent.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/CloudCommonServiceComponent.java
deleted file mode 100644
index 2400631..0000000
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/CloudCommonServiceComponent.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * 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.common.internal;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.stratos.common.packages.PackageInfoHolder;
-import org.apache.stratos.common.util.CommonUtil;
-import org.apache.stratos.common.util.StratosConfiguration;
-import org.osgi.framework.BundleContext;
-import org.osgi.service.component.ComponentContext;
-import org.wso2.carbon.registry.core.exceptions.RegistryException;
-import org.wso2.carbon.registry.core.service.RegistryService;
-import org.wso2.carbon.registry.core.session.UserRegistry;
-import org.wso2.carbon.user.core.service.RealmService;
-import org.wso2.carbon.user.core.tenant.TenantManager;
-
-/**
- * @scr.component name="apache.stratos.common" immediate="true"
- * @scr.reference name="registry.service"
- * interface="org.wso2.carbon.registry.core.service.RegistryService"
- * cardinality="1..1" policy="dynamic" bind="setRegistryService"
- * unbind="unsetRegistryService"
- * @scr.reference name="user.realmservice.default"
- * interface="org.wso2.carbon.user.core.service.RealmService"
- * cardinality="1..1" policy="dynamic" bind="setRealmService"
- * unbind="unsetRealmService"
- */
-public class CloudCommonServiceComponent {
-
- private static Log log = LogFactory.getLog(CloudCommonServiceComponent.class);
-
- private static BundleContext bundleContext;
- private static RealmService realmService;
- private static RegistryService registryService;
- private static PackageInfoHolder packageInfos;
-
- protected void activate(ComponentContext context) {
- try {
- bundleContext = context.getBundleContext();
- if (CommonUtil.getStratosConfig() == null) {
- StratosConfiguration stratosConfig = CommonUtil.loadStratosConfiguration();
- CommonUtil.setStratosConfig(stratosConfig);
- }
-
- // Loading the EULA
- if (CommonUtil.getEula() == null) {
- String eula = CommonUtil.loadTermsOfUsage();
- CommonUtil.setEula(eula);
- }
-
- //packageInfos = new PackageInfoHolder();
- //context.getBundleContext().registerService(
- // PackageInfoHolder.class.getName(), packageInfos, null);
-
- //Register manager configuration OSGI service
- try {
- StratosConfiguration stratosConfiguration = CommonUtil.loadStratosConfiguration();
- bundleContext.registerService(StratosConfiguration.class.getName(), stratosConfiguration, null);
- if (log.isDebugEnabled()) {
- log.debug("******* Cloud Common Service bundle is activated ******* ");
- }
- } catch (Exception ex) {
- String msg = "An error occurred while initializing Cloud Common Service as an OSGi Service";
- log.error(msg, ex);
- }
- } catch (Throwable e) {
- log.error("Error in activating Cloud Common Service Component" + e.toString());
- }
- }
-
- protected void deactivate(ComponentContext context) {
- log.debug("******* Tenant Core bundle is deactivated ******* ");
- }
-
- protected void setRegistryService(RegistryService registryService) {
- CloudCommonServiceComponent.registryService = registryService;
- }
-
- protected void unsetRegistryService(RegistryService registryService) {
- setRegistryService(null);
- }
-
- protected void setRealmService(RealmService realmService) {
- CloudCommonServiceComponent.realmService = realmService;
- }
-
- protected void unsetRealmService(RealmService realmService) {
- setRealmService(null);
- }
-
- public static BundleContext getBundleContext() {
- return bundleContext;
- }
-
- public static RegistryService getRegistryService() {
- return registryService;
- }
-
-
- public static RealmService getRealmService() {
- return realmService;
- }
-
- public static TenantManager getTenantManager() {
- return realmService.getTenantManager();
- }
-
- public static UserRegistry getGovernanceSystemRegistry(int tenantId) throws RegistryException {
- return registryService.getGovernanceSystemRegistry(tenantId);
- }
-
- public static UserRegistry getConfigSystemRegistry(int tenantId) throws RegistryException {
- return registryService.getConfigSystemRegistry(tenantId);
- }
-
- public static PackageInfoHolder getPackageInfos() {
- return packageInfos;
- }
-
-
-
-}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ServiceReferenceHolder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ServiceReferenceHolder.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ServiceReferenceHolder.java
new file mode 100644
index 0000000..7308f82
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/ServiceReferenceHolder.java
@@ -0,0 +1,78 @@
+package org.apache.stratos.common.internal;
+
+import com.hazelcast.core.HazelcastInstance;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.wso2.carbon.caching.impl.DistributedMapProvider;
+import org.wso2.carbon.registry.core.service.RegistryService;
+import org.wso2.carbon.user.core.service.RealmService;
+
+/**
+ * Created by imesh on 12/1/14.
+ */
+public class ServiceReferenceHolder {
+
+ private static final Log log = LogFactory.getLog(ServiceReferenceHolder.class);
+ private static volatile ServiceReferenceHolder instance;
+ private HazelcastInstance hazelcastInstance;
+ private DistributedMapProvider distributedMapProvider;
+ private RealmService realmService;
+ private RegistryService registryService;
+ private AxisConfiguration axisConfiguration;
+
+ private ServiceReferenceHolder() {
+ }
+
+ public static ServiceReferenceHolder getInstance() {
+ if (instance == null) {
+ synchronized (ServiceReferenceHolder.class) {
+ if (instance == null) {
+ instance = new ServiceReferenceHolder();
+ }
+ }
+ }
+ return instance;
+ }
+
+ public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ this.hazelcastInstance = hazelcastInstance;
+ }
+
+ public HazelcastInstance getHazelcastInstance() {
+ return hazelcastInstance;
+ }
+
+
+ public void setDistributedMapProvider(DistributedMapProvider distributedMapProvider) {
+ this.distributedMapProvider = distributedMapProvider;
+ }
+
+ public DistributedMapProvider getDistributedMapProvider() {
+ return distributedMapProvider;
+ }
+
+ public void setRealmService(RealmService realmService) {
+ this.realmService = realmService;
+ }
+
+ public RealmService getRealmService() {
+ return realmService;
+ }
+
+ public void setRegistryService(RegistryService registryService) {
+ this.registryService = registryService;
+ }
+
+ public RegistryService getRegistryService() {
+ return registryService;
+ }
+
+ public void setAxisConfiguration(AxisConfiguration axisConfiguration) {
+ this.axisConfiguration = axisConfiguration;
+ }
+
+ public AxisConfiguration getAxisConfiguration() {
+ return axisConfiguration;
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
new file mode 100644
index 0000000..2ea1cd7
--- /dev/null
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/internal/StratosCommonServiceComponent.java
@@ -0,0 +1,135 @@
+/*
+ * 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.common.internal;
+
+import com.hazelcast.core.HazelcastInstance;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.apache.stratos.common.clustering.impl.HazelcastDistributedObjectProvider;
+import org.apache.stratos.common.util.CommonUtil;
+import org.apache.stratos.common.util.StratosConfiguration;
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.ComponentContext;
+import org.wso2.carbon.caching.impl.DistributedMapProvider;
+import org.wso2.carbon.registry.core.service.RegistryService;
+import org.wso2.carbon.user.core.service.RealmService;
+import org.wso2.carbon.utils.ConfigurationContextService;
+
+/**
+ * @scr.component name="apache.stratos.common" immediate="true"
+ * @scr.reference name="hazelcast.instance.service" interface="com.hazelcast.core.HazelcastInstance"
+ * cardinality="0..1"policy="dynamic" bind="setHazelcastInstance" unbind="unsetHazelcastInstance"
+ * @scr.reference name="distributedMapProvider" interface="org.wso2.carbon.caching.impl.DistributedMapProvider"
+ * cardinality="0..1" policy="dynamic" bind="setDistributedMapProvider" unbind="unsetDistributedMapProvider"
+ * @scr.reference name="registry.service"
+ * interface="org.wso2.carbon.registry.core.service.RegistryService"
+ * cardinality="1..1" policy="dynamic" bind="setRegistryService"
+ * unbind="unsetRegistryService"
+ * @scr.reference name="user.realmservice.default"
+ * interface="org.wso2.carbon.user.core.service.RealmService"
+ * cardinality="1..1" policy="dynamic" bind="setRealmService"
+ * unbind="unsetRealmService"
+ * @scr.reference name="configuration.context.service" interface="org.wso2.carbon.utils.ConfigurationContextService"
+ * cardinality="1..1" policy="dynamic" bind="setConfigurationContextService" unbind="unsetConfigurationContextService"
+
+ */
+public class StratosCommonServiceComponent {
+
+ private static Log log = LogFactory.getLog(StratosCommonServiceComponent.class);
+
+ protected void activate(ComponentContext context) {
+ try {
+ BundleContext bundleContext = context.getBundleContext();
+ if (CommonUtil.getStratosConfig() == null) {
+ StratosConfiguration stratosConfig = CommonUtil.loadStratosConfiguration();
+ CommonUtil.setStratosConfig(stratosConfig);
+ }
+
+ // Loading the EULA
+ if (CommonUtil.getEula() == null) {
+ String eula = CommonUtil.loadTermsOfUsage();
+ CommonUtil.setEula(eula);
+ }
+
+ // Register distributed object provider service
+ DistributedObjectProvider distributedObjectProvider = new HazelcastDistributedObjectProvider();
+ bundleContext.registerService(DistributedObjectProvider.class, distributedObjectProvider, null);
+
+ // Register manager configuration OSGI service
+ try {
+ StratosConfiguration stratosConfiguration = CommonUtil.loadStratosConfiguration();
+ bundleContext.registerService(StratosConfiguration.class.getName(), stratosConfiguration, null);
+ } catch (Exception ex) {
+ String msg = "An error occurred while registering stratos configuration service";
+ log.error(msg, ex);
+ }
+
+ if (log.isInfoEnabled()) {
+ log.info("Stratos common service bundle is activated");
+ }
+ } catch (Throwable e) {
+ log.error("Error in activating stratos common service component" + e.toString());
+ }
+ }
+
+ protected void deactivate(ComponentContext context) {
+ log.debug("Stratos common service is deactivated");
+ }
+
+ protected void setRegistryService(RegistryService registryService) {
+ ServiceReferenceHolder.getInstance().setRegistryService(registryService);
+ }
+
+ protected void unsetRegistryService(RegistryService registryService) {
+ setRegistryService(null);
+ }
+
+ protected void setRealmService(RealmService realmService) {
+ ServiceReferenceHolder.getInstance().setRealmService(realmService);
+ }
+
+ protected void unsetRealmService(RealmService realmService) {
+ ServiceReferenceHolder.getInstance().setRealmService(null);
+ }
+
+ public void setHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ }
+
+ public void unsetHazelcastInstance(HazelcastInstance hazelcastInstance) {
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ }
+
+ protected void setDistributedMapProvider(DistributedMapProvider mapProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedMapProvider(mapProvider);
+ }
+
+ protected void unsetDistributedMapProvider(DistributedMapProvider mapProvider) {
+ ServiceReferenceHolder.getInstance().setDistributedMapProvider(null);
+ }
+
+ protected void setConfigurationContextService(ConfigurationContextService cfgCtxService) {
+ ServiceReferenceHolder.getInstance().setAxisConfiguration(cfgCtxService.getServerConfigContext().getAxisConfiguration());
+ }
+
+ protected void unsetConfigurationContextService(ConfigurationContextService cfgCtxService) {
+ ServiceReferenceHolder.getInstance().setAxisConfiguration(null);
+ }
+}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/PackageInfoService.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/PackageInfoService.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/PackageInfoService.java
index 6ace99f..82c0e86 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/PackageInfoService.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/services/PackageInfoService.java
@@ -18,7 +18,7 @@
*/
package org.apache.stratos.common.services;
-import org.apache.stratos.common.internal.CloudCommonServiceComponent;
+import org.apache.stratos.common.internal.StratosCommonServiceComponent;
import org.apache.stratos.common.packages.PackageInfo;
import java.util.List;
@@ -26,10 +26,10 @@ import java.util.List;
public class PackageInfoService {
- public PackageInfo[] getPackageInfos() throws Exception {
- List<PackageInfo> list = CloudCommonServiceComponent.getPackageInfos().
- getMultitenancyPackages();
- PackageInfo[] packageInfos = list.toArray(new PackageInfo[list.size()]);
- return packageInfos;
- }
+// public PackageInfo[] getPackageInfos() throws Exception {
+// List<PackageInfo> list = StratosCommonServiceComponent.getPackageInfos().
+// getMultitenancyPackages();
+// PackageInfo[] packageInfos = list.toArray(new PackageInfo[list.size()]);
+// return packageInfos;
+// }
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CloudServicesUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CloudServicesUtil.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CloudServicesUtil.java
index 4108973..dc51039 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CloudServicesUtil.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CloudServicesUtil.java
@@ -27,7 +27,7 @@ import org.apache.stratos.common.config.CloudServiceConfig;
import org.apache.stratos.common.config.CloudServicesDescConfig;
import org.apache.stratos.common.config.PermissionConfig;
import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.common.internal.CloudCommonServiceComponent;
+import org.apache.stratos.common.internal.ServiceReferenceHolder;
import org.wso2.carbon.registry.core.Collection;
import org.wso2.carbon.registry.core.RegistryConstants;
import org.wso2.carbon.registry.core.Resource;
@@ -115,9 +115,9 @@ public class CloudServicesUtil {
}
UserRegistry govRegistry =
- CloudCommonServiceComponent.getGovernanceSystemRegistry(
+ ServiceReferenceHolder.getInstance().getRegistryService().getGovernanceSystemRegistry(
MultitenantConstants.SUPER_TENANT_ID);
- UserRegistry configRegistry = CloudCommonServiceComponent.getConfigSystemRegistry(tenantId);
+ UserRegistry configRegistry = ServiceReferenceHolder.getInstance().getRegistryService().getConfigSystemRegistry(tenantId);
String cloudServiceInfoPath = StratosConstants.CLOUD_SERVICE_INFO_STORE_PATH +
RegistryConstants.PATH_SEPARATOR + tenantId +
RegistryConstants.PATH_SEPARATOR + cloudServiceName;
@@ -153,8 +153,8 @@ public class CloudServicesUtil {
public static boolean isCloudServiceActive(String cloudServiceName,
int tenantId) throws Exception {
- UserRegistry govRegistry = CloudCommonServiceComponent.getGovernanceSystemRegistry(
- MultitenantConstants.SUPER_TENANT_ID);
+ UserRegistry govRegistry = ServiceReferenceHolder.getInstance().getRegistryService().getGovernanceSystemRegistry(
+ MultitenantConstants.SUPER_TENANT_ID);
return isCloudServiceActive(cloudServiceName, tenantId, govRegistry);
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommonUtil.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommonUtil.java b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommonUtil.java
index bac8f64..9f806f1 100644
--- a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommonUtil.java
+++ b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/util/CommonUtil.java
@@ -23,7 +23,8 @@ import org.apache.axiom.om.impl.builder.StAXOMBuilder;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.stratos.common.constants.StratosConstants;
-import org.apache.stratos.common.internal.CloudCommonServiceComponent;
+import org.apache.stratos.common.internal.ServiceReferenceHolder;
+import org.apache.stratos.common.internal.StratosCommonServiceComponent;
import org.wso2.carbon.CarbonConstants;
import org.wso2.carbon.registry.core.ActionConstants;
import org.wso2.carbon.registry.core.RegistryConstants;
@@ -504,7 +505,7 @@ public class CommonUtil {
log.debug("Unable to locate the stratos configurations file. "
+ "Default Settings will be used.");
}
- return config; // return the default configuratiosn, if the file not found.
+ return config; // return the default configuration, if the file not found.
}
@@ -587,7 +588,7 @@ public class CommonUtil {
*/
public static boolean isDomainNameAvailable(String tenantDomain) throws Exception {
- TenantManager tenantManager = CloudCommonServiceComponent.getTenantManager();
+ TenantManager tenantManager = ServiceReferenceHolder.getInstance().getRealmService().getTenantManager();
// The registry reserved words are checked first.
if (tenantDomain.equals("atom") || tenantDomain.equals("registry")
|| tenantDomain.equals("resource")) {
http://git-wip-us.apache.org/repos/asf/stratos/blob/fdb84e7c/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java b/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
index 9d31923..afb0c83 100644
--- a/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
+++ b/components/org.apache.stratos.common/src/test/java/org/apache/stratos/common/test/DistributedObjectProviderTest.java
@@ -21,7 +21,8 @@ package org.apache.stratos.common.test;
import com.hazelcast.core.Hazelcast;
import com.hazelcast.core.HazelcastInstance;
-import org.apache.stratos.common.clustering.DistributedObjectProvider;
+import org.apache.stratos.common.clustering.impl.HazelcastDistributedObjectProvider;
+import org.apache.stratos.common.internal.ServiceReferenceHolder;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -47,17 +48,19 @@ public class DistributedObjectProviderTest {
@Test
public void testPutToMapLocal() {
- DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testPutToMap(provider);
}
@Test
public void testPutToMapDistributed() {
- DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testPutToMap(provider);
}
- private void testPutToMap(DistributedObjectProvider provider) {
+ private void testPutToMap(HazelcastDistributedObjectProvider provider) {
Map<String, String> map = provider.getMap("MAP1");
provider.putToMap(map, "key1", "value1");
assertEquals(map.get("key1"), "value1");
@@ -65,17 +68,19 @@ public class DistributedObjectProviderTest {
@Test
public void testRemoveFromMapLocal() {
- DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testRemoveFromMap(provider);
}
@Test
public void testRemoveFromMapDistributed() {
- DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testRemoveFromMap(provider);
}
- private void testRemoveFromMap(DistributedObjectProvider provider) {
+ private void testRemoveFromMap(HazelcastDistributedObjectProvider provider) {
Map<String, String> map = provider.getMap("MAP1");
provider.putToMap(map, "key1", "value1");
assertEquals(map.get("key1"), "value1");
@@ -85,17 +90,19 @@ public class DistributedObjectProviderTest {
@Test
public void testAddToListLocal() {
- DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testAddToList(provider);
}
@Test
public void testAddToListDistributed() {
- DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testAddToList(provider);
}
- private void testAddToList(DistributedObjectProvider provider) {
+ private void testAddToList(HazelcastDistributedObjectProvider provider) {
List list = provider.getList("LIST1");
String value1 = "value1";
provider.addToList(list, value1);
@@ -104,17 +111,19 @@ public class DistributedObjectProviderTest {
@Test
public void testRemoveFromListLocal() {
- DistributedObjectProvider provider = new DistributedObjectProvider(false, null);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(null);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testRemovalFromList(provider);
}
@Test
public void testRemoveFromListDistributed() {
- DistributedObjectProvider provider = new DistributedObjectProvider(true, hazelcastInstance);
+ ServiceReferenceHolder.getInstance().setHazelcastInstance(hazelcastInstance);
+ HazelcastDistributedObjectProvider provider = new HazelcastDistributedObjectProvider();
testRemovalFromList(provider);
}
- private void testRemovalFromList(DistributedObjectProvider provider) {
+ private void testRemovalFromList(HazelcastDistributedObjectProvider provider) {
List list = provider.getList("LIST1");
String value1 = "value1";
provider.addToList(list, value1);