You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by jb...@apache.org on 2012/04/16 08:01:13 UTC
svn commit: r1326496 - in /karaf/cellar/branches/cellar-2.2.x/hazelcast/src:
main/java/org/apache/karaf/cellar/hazelcast/factory/
main/resources/OSGI-INF/blueprint/
test/java/org/apache/karaf/cellar/hazelcast/factory/
Author: jbonofre
Date: Mon Apr 16 06:01:12 2012
New Revision: 1326496
URL: http://svn.apache.org/viewvc?rev=1326496&view=rev
Log:
[KARAF-1248] Update the config manager to support discovery services
Added:
karaf/cellar/branches/cellar-2.2.x/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java
Modified:
karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
Modified: karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java?rev=1326496&r1=1326495&r2=1326496&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java Mon Apr 16 06:01:12 2012
@@ -35,6 +35,8 @@ public class HazelcastConfigurationManag
private String xmlConfigLocation = System.getProperty("karaf.home") + "/etc/hazelcast.xml";
+ private Set<String> discoveredMemberSet = new LinkedHashSet<String>();
+
/**
* Builds a Hazelcast {@link com.hazelcast.config.Config}
*
@@ -43,7 +45,34 @@ public class HazelcastConfigurationManag
public Config getHazelcastConfig() {
System.setProperty("hazelcast.config", xmlConfigLocation);
Config config = new XmlConfigBuilder().build();
+ if (discoveredMemberSet != null) {
+ TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
+ tcpIpConfig.getMembers().addAll(discoveredMemberSet);
+ }
return config;
}
+ /**
+ * Update Hazelcast config with discovered members.
+ *
+ * @param properties the map containing the discovered members.
+ * @return true if the config has been updated, false else.
+ */
+ public boolean isUpdated(Map properties) {
+ Boolean updated = Boolean.FALSE;
+ if (properties != null) {
+ if (properties.containsKey(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME)) {
+ Set<String> newDiscoveredMemberSet = CellarUtils.createSetFromString((String) properties.get(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME));
+ if (!CellarUtils.collectionEquals(discoveredMemberSet, newDiscoveredMemberSet)) {
+ LOGGER.info("Hazelcast discoveredMemberSet has been changed from {} to {}", discoveredMemberSet, newDiscoveredMemberSet);
+ discoveredMemberSet = newDiscoveredMemberSet;
+ updated = Boolean.TRUE;
+ }
+ }
+ }
+ return updated;
+ }
+
+
+
}
Modified: karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java?rev=1326496&r1=1326495&r2=1326496&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java (original)
+++ karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java Mon Apr 16 06:01:12 2012
@@ -20,6 +20,7 @@ import org.osgi.framework.BundleContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.Map;
import java.util.concurrent.CountDownLatch;
/**
@@ -51,6 +52,10 @@ public class HazelcastServiceFactory {
}
}
+ public void update(Map properties) {
+ configurationManager.isUpdated(properties);
+ }
+
/**
* Returs a Hazelcast instance from service registry.
*
Modified: karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1326496&r1=1326495&r2=1326496&view=diff
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/cellar/branches/cellar-2.2.x/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml Mon Apr 16 06:01:12 2012
@@ -24,6 +24,8 @@
init-method="init" destroy-method="destroy">
<property name="combinedClassLoader" ref="combinedClassLoader"/>
<property name="bundleContext" ref="blueprintBundleContext"/>
+ <cm:managed-properties persistent-id="org.apache.karaf.cellar.discovery" update-strategy="component-managed"
+ update-method="update"/>
</bean>
<!-- Discovery Task -->
Added: karaf/cellar/branches/cellar-2.2.x/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java
URL: http://svn.apache.org/viewvc/karaf/cellar/branches/cellar-2.2.x/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java?rev=1326496&view=auto
==============================================================================
--- karaf/cellar/branches/cellar-2.2.x/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java (added)
+++ karaf/cellar/branches/cellar-2.2.x/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java Mon Apr 16 06:01:12 2012
@@ -0,0 +1,41 @@
+/*
+ * Licensed 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.karaf.cellar.hazelcast.factory;
+
+import org.apache.karaf.cellar.core.discovery.Discovery;
+import org.junit.Assert;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Properties;
+
+@RunWith(JUnit4.class)
+public class HazelcastConfigurationManagerTest {
+
+ @Test
+ public void testIsUpdatedWithNoProperties() {
+ HazelcastConfigurationManager cm = new HazelcastConfigurationManager();
+ Assert.assertFalse(cm.isUpdated(new Properties()));
+ }
+
+ @Test
+ public void testIsUpdatedWithEmptyTcpMembers() {
+ HazelcastConfigurationManager cm = new HazelcastConfigurationManager();
+ Properties p = new Properties();
+ p.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME ,"");
+ Assert.assertFalse(cm.isUpdated(p));
+ }
+
+}