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:56:21 UTC
svn commit: r1326510 - in /karaf/cellar/trunk:
core/src/main/java/org/apache/karaf/cellar/core/discovery/
hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/
hazelcast/src/main/resources/OSGI-INF/blueprint/
hazelcast/src/test/java/org/ap...
Author: jbonofre
Date: Mon Apr 16 06:56:21 2012
New Revision: 1326510
URL: http://svn.apache.org/viewvc?rev=1326510&view=rev
Log:
[KARAF-1248] Remove the instance config file to use only hazelcast.xml file
Modified:
karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java
karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java
karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/Discovery.java Mon Apr 16 06:56:21 2012
@@ -16,7 +16,7 @@ package org.apache.karaf.cellar.core.dis
public class Discovery {
- public static final String PID = "org.apache.karaf.cellar.instance";
+ public static final String PID = "org.apache.karaf.cellar.discovery";
public static final String MEMBERS_PROPERTY_NAME = "tcpIpMembers";
public static final String DISCOVERED_MEMBERS_PROPERTY_NAME = "discoveredMembers";
Modified: karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java (original)
+++ karaf/cellar/trunk/core/src/main/java/org/apache/karaf/cellar/core/discovery/DiscoveryTask.java Mon Apr 16 06:56:21 2012
@@ -48,6 +48,7 @@ public class DiscoveryTask implements Ru
@Override
public void run() {
LOGGER.trace("CELLAR DISCOVERY: Starting the discovery task.");
+
if (configurationAdmin != null) {
Set<String> members = new LinkedHashSet<String>();
if (discoveryServices != null && !discoveryServices.isEmpty()) {
@@ -56,18 +57,18 @@ public class DiscoveryTask implements Ru
Set<String> discovered = service.discoverMembers();
members.addAll(discovered);
}
- try {
- Configuration configuration = configurationAdmin.getConfiguration(Discovery.PID);
- Dictionary properties = configuration.getProperties();
- String newMemberText = CellarUtils.createStringFromSet(members,true);
- String memberText = (String) properties.get(Discovery.MEMBERS_PROPERTY_NAME);
- if (newMemberText != null && !newMemberText.isEmpty() && !newMemberText.equals(memberText)) {
- properties.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME, newMemberText);
- configuration.update(properties);
+ try {
+ Configuration configuration = configurationAdmin.getConfiguration(Discovery.PID);
+ Dictionary properties = configuration.getProperties();
+ String newMemberText = CellarUtils.createStringFromSet(members, true);
+ String memberText = (String) properties.get(Discovery.MEMBERS_PROPERTY_NAME);
+ if (newMemberText != null && newMemberText.length() > 0 && !newMemberText.equals(memberText)) {
+ properties.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME, newMemberText);
+ configuration.update(properties);
+ }
+ } catch (IOException e) {
+ LOGGER.error("Failed to update member list", e);
}
- } catch (IOException e) {
- LOGGER.error("Failed to update member list", e);
- }
}
}
}
Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManager.java Mon Apr 16 06:56:21 2012
@@ -13,156 +13,27 @@
*/
package org.apache.karaf.cellar.hazelcast.factory;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedHashSet;
-import java.util.Map;
-import java.util.Set;
import com.hazelcast.config.Config;
-import com.hazelcast.config.GroupConfig;
-import com.hazelcast.config.MulticastConfig;
import com.hazelcast.config.TcpIpConfig;
import com.hazelcast.config.XmlConfigBuilder;
-import com.hazelcast.core.HazelcastInstance;
import org.apache.karaf.cellar.core.discovery.Discovery;
import org.apache.karaf.cellar.core.utils.CellarUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.LinkedHashSet;
+import java.util.Map;
+import java.util.Set;
+
public class HazelcastConfigurationManager {
private static final transient Logger LOGGER = LoggerFactory.getLogger(HazelcastServiceFactory.class);
- public static final String USERNAME="username";
- public static final String PASSWORD="password";
+ private String xmlConfigLocation = System.getProperty("karaf.home") + "/etc/hazelcast.xml";
- public static final String MULTICAST_ENABLED="multicastEnabled";
- public static final String MULTICAST_GROUP="multicastGroup";
- public static final String MULTICAST_PORT="multicastPort";
- public static final String MULTICAST_TIMEOUT_IN_SECONDS="multicastTimeoutSeconds";
-
- public static final String TCPIP_ENABLED="tcpIpEnabled";
- public static final String TCPIP_MEMBERS="tcpIpMembers";
-
- private String username = "cellar";
- private String password = "pass";
-
- private boolean multicastEnabled = MulticastConfig.DEFAULT_ENABLED;
- private String multicastGroup = MulticastConfig.DEFAULT_MULTICAST_GROUP;
- private int multicastPort = MulticastConfig.DEFAULT_MULTICAST_PORT;
- private int multicastTimeoutSeconds = MulticastConfig.DEFAULT_MULTICAST_TIMEOUT_SECONDS;
-
- private boolean tcpIpEnabled = false;
- private String tcpIpMembers = "";
- private Set<String> tcpIpMemberSet = new LinkedHashSet<String>();
private Set<String> discoveredMemberSet = new LinkedHashSet<String>();
- private String xmlConfigLocation = System.getProperty("karaf.home") + "/etc/hazelcast.xml";
-
/**
- * Creates or Updates Hazelcast Instance.
- *
- * @param properties
- */
- public boolean isUpdated(Map properties) {
- Boolean updated = Boolean.FALSE;
- //We need it to properly instantiate Hazelcast.
- if (properties != null) {
- if (properties.containsKey(USERNAME)) {
- String newUsername = (String) properties.get(USERNAME);
- if (username != null && newUsername != null && !username.endsWith(newUsername)) {
- LOGGER.info("Hazelcast username has been changed from {} to {}", username, newUsername);
- this.username = newUsername;
- updated = Boolean.TRUE;
- }
- }
-
- if (properties.containsKey(PASSWORD)) {
- String newPassword = (String) properties.get(PASSWORD);
- if (password != null && !password.equals(newPassword)) {
- LOGGER.info("Hazelcast password has been changed from {} to {}", password, newPassword);
- this.password = newPassword;
- updated = Boolean.TRUE;
- }
- }
-
- if (properties.containsKey(MULTICAST_ENABLED)) {
- Boolean newMulticastEnabled = Boolean.parseBoolean((String) properties.get(MULTICAST_ENABLED));
- if (multicastEnabled != newMulticastEnabled) {
- LOGGER.info("Hazelcast multicastEnabled has been changed from {} to {}", multicastEnabled, newMulticastEnabled);
- this.multicastEnabled = newMulticastEnabled;
- updated = Boolean.TRUE;
- }
- }
-
- if (properties.containsKey(MULTICAST_GROUP)) {
- String newMulticastGroup = (String) properties.get(MULTICAST_GROUP);
- if (multicastGroup != null && newMulticastGroup != null && !multicastGroup.endsWith(newMulticastGroup)) {
- LOGGER.info("Hazelcast multicastGroup has been changed from {} to {}", multicastGroup, newMulticastGroup);
- this.multicastGroup = newMulticastGroup;
- updated = Boolean.TRUE;
- }
-
- }
-
- if (properties.containsKey(MULTICAST_PORT)) {
- try {
- int newMulticastPort = Integer.parseInt((String) properties.get(MULTICAST_PORT));
- if (multicastPort != 0 && multicastPort != newMulticastPort) {
- LOGGER.info("Hazelcast multicastPort has been changed from {} to {}", multicastPort, newMulticastPort);
- this.multicastPort = newMulticastPort;
- updated = Boolean.TRUE;
- }
- } catch (NumberFormatException ex) {
- LOGGER.warn("Could not parse port number", ex);
- }
- }
-
- if (properties.containsKey(MULTICAST_TIMEOUT_IN_SECONDS)) {
- try {
- int newMulticastTimeoutSeconds = Integer.parseInt((String) properties.get(MULTICAST_TIMEOUT_IN_SECONDS));
- if (multicastTimeoutSeconds != 0 && multicastTimeoutSeconds != newMulticastTimeoutSeconds) {
- LOGGER.info("Hazelcast multicastTimeoutSeconds has been changed from {} to {}", multicastTimeoutSeconds, newMulticastTimeoutSeconds);
- this.multicastTimeoutSeconds = newMulticastTimeoutSeconds;
- updated = Boolean.TRUE;
- }
- } catch (NumberFormatException ex) {
- LOGGER.warn("Could not parse multicast timeout in seconds", ex);
- }
- }
-
- if (properties.containsKey(TCPIP_ENABLED)) {
- Boolean newTcpIpEnabled = Boolean.parseBoolean((String) properties.get(TCPIP_ENABLED));
- if (tcpIpEnabled != newTcpIpEnabled) {
- LOGGER.info("Hazelcast tcpIpEnabled has been changed from {} to {}", tcpIpEnabled, newTcpIpEnabled);
- this.tcpIpEnabled = newTcpIpEnabled;
- updated = Boolean.TRUE;
- }
- }
-
- if (properties.containsKey(TCPIP_MEMBERS)) {
- Set<String> newTcpIpMemberSet = CellarUtils.createSetFromString((String) properties.get(TCPIP_MEMBERS));
- if (!CellarUtils.collectionEquals(tcpIpMemberSet, newTcpIpMemberSet)) {
- LOGGER.info("Hazelcast tcpIpMemberSet has been changed from {} to {}", tcpIpMemberSet, newTcpIpMemberSet);
- tcpIpMemberSet = newTcpIpMemberSet;
- updated = Boolean.TRUE;
- }
- }
-
-
- 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;
- }
- /**
* Builds a Hazelcast {@link com.hazelcast.config.Config}
*
* @return
@@ -170,51 +41,31 @@ public class HazelcastConfigurationManag
public Config getHazelcastConfig() {
System.setProperty("hazelcast.config", xmlConfigLocation);
Config config = new XmlConfigBuilder().build();
- config.setGroupConfig(buildGroupConfig());
- config.getNetworkConfig().getJoin().setMulticastConfig(buildMulticastConfig());
- config.getNetworkConfig().getJoin().setTcpIpConfig(buildTcpIpConfig());
+ if (discoveredMemberSet != null) {
+ TcpIpConfig tcpIpConfig = config.getNetworkConfig().getJoin().getTcpIpConfig();
+ tcpIpConfig.getMembers().addAll(discoveredMemberSet);
+ }
return config;
}
/**
- * Builds a {@link com.hazelcast.config.GroupConfig}
+ * Updates Hazelcast Instance.
*
- * @return
- */
- public GroupConfig buildGroupConfig() {
- GroupConfig groupConfig = new GroupConfig();
- groupConfig.setName(username);
- groupConfig.setPassword(password);
- return groupConfig;
- }
-
- /**
- * Builds a {@link com.hazelcast.config.MulticastConfig}
- *
- * @return
- */
- public MulticastConfig buildMulticastConfig() {
- MulticastConfig multicastConfig = new MulticastConfig();
- multicastConfig.setEnabled(multicastEnabled);
- multicastConfig.setMulticastPort(multicastPort);
- multicastConfig.setMulticastGroup(multicastGroup);
- multicastConfig.setMulticastTimeoutSeconds(multicastTimeoutSeconds);
- return multicastConfig;
- }
-
- /**
- * Builds a {@link com.hazelcast.config.TcpIpConfig}.
- *
- * @return
+ * @param properties
*/
- public TcpIpConfig buildTcpIpConfig() {
- TcpIpConfig tcpIpConfig = new TcpIpConfig();
- tcpIpConfig.setEnabled(tcpIpEnabled);
- tcpIpConfig.setMembers(new ArrayList(tcpIpMemberSet));
- if(discoveredMemberSet != null && !discoveredMemberSet.isEmpty() && tcpIpConfig.getMembers() != null) {
- tcpIpConfig.getMembers().addAll(new ArrayList(discoveredMemberSet));
+ 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 tcpIpConfig;
+ return updated;
}
}
Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java (original)
+++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactory.java Mon Apr 16 06:56:21 2012
@@ -53,15 +53,7 @@ public class HazelcastServiceFactory {
}
public void update(Map properties) throws InterruptedException {
- LOGGER.info("Instance configuration updated. Checking if instance requires restarting.");
- if(configurationManager.isUpdated(properties)) {
- instanceLatch.await();
- Config updatedConfig = configurationManager.getHazelcastConfig();
- instance.getConfig().setNetworkConfig(updatedConfig.getNetworkConfig());
- instance.getConfig().setGroupConfig(updatedConfig.getGroupConfig());
- LOGGER.info("Restaring Hazelcast instance.");
- instance.getLifecycleService().restart();
- }
+ configurationManager.isUpdated(properties);
}
/**
Modified: karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original)
+++ karaf/cellar/trunk/hazelcast/src/main/resources/OSGI-INF/blueprint/blueprint.xml Mon Apr 16 06:56:21 2012
@@ -26,7 +26,7 @@
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.instance" update-strategy="component-managed"
+ <cm:managed-properties persistent-id="org.apache.karaf.cellar.discovery" update-strategy="component-managed"
update-method="update"/>
</bean>
Modified: karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java (original)
+++ karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastConfigurationManagerTest.java Mon Apr 16 06:56:21 2012
@@ -13,6 +13,7 @@
*/
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;
@@ -33,7 +34,7 @@ public class HazelcastConfigurationManag
public void testIsUpdatedWithEmptyTcpMembers() {
HazelcastConfigurationManager cm = new HazelcastConfigurationManager();
Properties p = new Properties();
- p.put(HazelcastConfigurationManager.TCPIP_MEMBERS,"");
+ p.put(Discovery.DISCOVERED_MEMBERS_PROPERTY_NAME ,"");
Assert.assertFalse(cm.isUpdated(p));
}
Modified: karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java
URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java?rev=1326510&r1=1326509&r2=1326510&view=diff
==============================================================================
--- karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java (original)
+++ karaf/cellar/trunk/hazelcast/src/test/java/org/apache/karaf/cellar/hazelcast/factory/HazelcastServiceFactoryTest.java Mon Apr 16 06:56:21 2012
@@ -44,16 +44,8 @@ public class HazelcastServiceFactoryTest
HazelcastServiceFactory factory = new HazelcastServiceFactory();
factory.init();
factory.getInstance();
- factory.update(null);
HazelcastInstance defaultInstance = Hazelcast.newHazelcastInstance(null);
- // define the username and password as in the hazelcast-default.xml provided by Hazelcast
- // without this, "cellar" instance is not in the same cluster as the Hazelcast default one
- Properties properties = new Properties();
- properties.put(HazelcastConfigurationManager.USERNAME, "dev");
- properties.put(HazelcastConfigurationManager.PASSWORD, "dev-pass");
- factory.update(properties);
-
HazelcastInstance factoryInstance = factory.getInstance();
Assert.assertEquals(true, factoryInstance.getCluster().getMembers().size() >= 2);
}