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));
+    }
+
+}