Modified: karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java (original) +++ karaf/cellar/trunk/hazelcast/src/main/java/org/apache/karaf/cellar/hazelcast/TopicConsumer.java Fri Aug 26 20:52:08 2011 @@ -42,21 +42,14 @@ public class TopicConsumer<E extends Eve * Initialization method. */ public void init() { - if (topic != null) { - topic.addMessageListener(this); - } else { - topic = instance.getTopic(Constants.TOPIC); - topic.addMessageListener(this); - } + start(); } /** * Destruction method. */ public void destroy() { - if (topic != null) { - topic.removeMessageListener(this); - } + stop(); } /** @@ -67,7 +60,25 @@ public class TopicConsumer<E extends Eve public void consume(E event) { //Check if event has a specified destination. if ((event.getDestination() == null || event.getDestination().contains(node)) && (eventSwitch.getStatus().equals(SwitchStatus.ON) || event.getForce())) { - dispatcher.dispatch(event); + dispatcher.dispatch(event); + } + } + + @Override + public void start() { + if (topic != null) { + topic.addMessageListener(this); + } else { + topic = instance.getTopic(Constants.TOPIC); + topic.addMessageListener(this); + } + + } + + @Override + public void stop() { + if (topic != null) { + topic.removeMessageListener(this); } }
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=1162249&r1=1162248&r2=1162249&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 Fri Aug 26 20:52:08 2011 @@ -44,6 +44,21 @@ public class HazelcastServiceFactory imp private static final transient Logger LOGGER = LoggerFactory.getLogger(HazelcastServiceFactory.class); + public static final String USERNAME="username"; + public static final String PASSWORD="password"; + + + 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 = GroupConfig.DEFAULT_GROUP_NAME; private String password = GroupConfig.DEFAULT_GROUP_PASSWORD; @@ -94,49 +109,70 @@ public class HazelcastServiceFactory imp //We need it to properly instantiate Hazelcast. Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); if (properties != null) { - String newUsername = (String) properties.get("username"); - if (username != null && newUsername != null && !username.endsWith(newUsername)) { - this.username = newUsername; - updated = Boolean.TRUE; + if (properties.containsKey(USERNAME)) { + String newUsername = (String) properties.get(USERNAME); + if (username != null && newUsername != null && !username.endsWith(newUsername)) { + this.username = newUsername; + updated = Boolean.TRUE; + } } - String newPassword = (String) properties.get("password"); - if (password != null && !password.equals(newPassword)) { - this.password = newPassword; - updated = Boolean.TRUE; + if (properties.containsKey(PASSWORD)) { + String newPassword = (String) properties.get(PASSWORD); + if (password != null && !password.equals(newPassword)) { + this.password = newPassword; + updated = Boolean.TRUE; + } } - Boolean newMulticastEnabled = Boolean.parseBoolean((String) properties.get("multicastEnabled")); + Boolean newMulticastEnabled = Boolean.parseBoolean((String) properties.get(MULTICAST_ENABLED)); if (multicastEnabled != newMulticastEnabled) { this.multicastEnabled = newMulticastEnabled; updated = Boolean.TRUE; } - String newMulticastGroup = (String) properties.get("multicastGroup"); - if (multicastGroup != null && newMulticastGroup != null && !multicastGroup.endsWith(newMulticastGroup)) { - this.multicastGroup = newMulticastGroup; - updated = Boolean.TRUE; + if (properties.containsKey(MULTICAST_GROUP)) { + String newMulticastGroup = (String) properties.get(MULTICAST_GROUP); + if (multicastGroup != null && newMulticastGroup != null && !multicastGroup.endsWith(newMulticastGroup)) { + this.multicastGroup = newMulticastGroup; + updated = Boolean.TRUE; + } + } - int newMulticastPort = Integer.parseInt((String) properties.get("multicastPort")); - if (multicastPort != 0 && multicastPort != newMulticastPort) { - this.multicastPort = newMulticastPort; - updated = Boolean.TRUE; + if (properties.containsKey(MULTICAST_PORT)) { + try { + int newMulticastPort = Integer.parseInt((String) properties.get(MULTICAST_PORT)); + if (multicastPort != 0 && multicastPort != newMulticastPort) { + this.multicastPort = newMulticastPort; + updated = Boolean.TRUE; + } + } catch (NumberFormatException ex) { + LOGGER.warn("Could not parse port number", ex); + } } - int newMulticastTimeoutSeconds = Integer.parseInt((String) properties.get("multicastTimeoutSeconds")); - if (multicastTimeoutSeconds != 0 && multicastTimeoutSeconds != newMulticastTimeoutSeconds) { - this.multicastTimeoutSeconds = newMulticastTimeoutSeconds; - updated = Boolean.TRUE; + if (properties.containsKey(MULTICAST_TIMEOUT_IN_SECONDS)) { + try { + int newMulticastTimeoutSeconds = Integer.parseInt((String) properties.get(MULTICAST_TIMEOUT_IN_SECONDS)); + if (multicastTimeoutSeconds != 0 && multicastTimeoutSeconds != newMulticastTimeoutSeconds) { + this.multicastTimeoutSeconds = newMulticastTimeoutSeconds; + updated = Boolean.TRUE; + } + } catch (NumberFormatException ex) { + LOGGER.warn("Could not parse multicast timeout in seconds", ex); + } } - Boolean newTcpIpEnabled = Boolean.parseBoolean((String) properties.get("tcpIpEnabled")); - if (tcpIpEnabled != newTcpIpEnabled) { - this.tcpIpEnabled = newTcpIpEnabled; - updated = Boolean.TRUE; + if (properties.containsKey(TCPIP_ENABLED)) { + Boolean newTcpIpEnabled = Boolean.parseBoolean((String) properties.get(TCPIP_ENABLED)); + if (tcpIpEnabled != newTcpIpEnabled) { + this.tcpIpEnabled = newTcpIpEnabled; + updated = Boolean.TRUE; + } } - Set<String> newTcpIpMemberSet = createSetFromString((String) properties.get("tcpIpMembers")); + Set<String> newTcpIpMemberSet = createSetFromString((String) properties.get(TCPIP_MEMBERS)); if (tcpIpMemberSet != null && newTcpIpMemberSet != null && !collectionEquals(tcpIpMemberSet, newTcpIpMemberSet)) { tcpIpMemberSet = newTcpIpMemberSet; updated = Boolean.TRUE; @@ -313,7 +349,9 @@ public class HazelcastServiceFactory imp } public void setUsername(String username) { - this.username = username; + if (username != null) { + this.username = username; + } } public String getPassword() { @@ -321,7 +359,9 @@ public class HazelcastServiceFactory imp } public void setPassword(String password) { - this.password = password; + if (password != null) { + this.password = password; + } } public boolean isMulticastEnabled() { Modified: karaf/cellar/trunk/hazelcast/src/main/resources/META-INF/spring/beans.xml URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/hazelcast/src/main/resources/META-INF/spring/beans.xml?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/hazelcast/src/main/resources/META-INF/spring/beans.xml (original) +++ karaf/cellar/trunk/hazelcast/src/main/resources/META-INF/spring/beans.xml Fri Aug 26 20:52:08 2011 @@ -53,13 +53,19 @@ <property name="configurationAdmin" ref="configurationAdmin"/> </bean> - <!-- Cluster Manager --> + <!-- Group Manager --> <bean id="groupManager" class="org.apache.karaf.cellar.hazelcast.HazelcastGroupManager" init-method="init"> <property name="instance" ref="hazelcast"/> - <property name="dispatcher" ref="dispatcher"/> <property name="configurationAdmin" ref="configurationAdmin"/> + <property name="eventTransportFactory" ref="eventTransportFactory"/> </bean> + <bean id="eventTransportFactory" class="org.apache.karaf.cellar.hazelcast.HazelcastEventTransportFactory"> + <property name="dispatcher" ref="dispatcher"/> + <property name="instance" ref="hazelcast"/> + </bean> + + <!-- Hazelcast Cluster and Node --> <bean id="node" factory-bean="clusterManager" factory-method="getNode"/> @@ -142,6 +148,7 @@ <osgi:service ref="clusterManager" interface="org.apache.karaf.cellar.core.ClusterManager"/> <osgi:service ref="groupManager" interface="org.apache.karaf.cellar.core.GroupManager"/> + <osgi:service ref="eventTransportFactory" interface="org.apache.karaf.cellar.core.event.EventTransportFactory"/> <osgi:service ref="executionContext" interface="org.apache.karaf.cellar.core.command.ExecutionContext"/> <osgi:service ref="commandStore" interface="org.apache.karaf.cellar.core.command.CommandStore"/> Modified: karaf/cellar/trunk/management/pom.xml URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/pom.xml?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/management/pom.xml (original) +++ karaf/cellar/trunk/management/pom.xml Fri Aug 26 20:52:08 2011 @@ -1,4 +1,18 @@ <?xml version="1.0" encoding="UTF-8"?> +<!-- + ~ 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. + --> + <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!-- Modified: karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java (original) +++ karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarFeaturesMBeanImpl.java Fri Aug 26 20:52:08 2011 @@ -18,6 +18,7 @@ import org.apache.karaf.cellar.core.Conf import org.apache.karaf.cellar.core.Group; import org.apache.karaf.cellar.core.GroupManager; import org.apache.karaf.cellar.core.event.EventProducer; +import org.apache.karaf.cellar.core.event.EventTransportFactory; import org.apache.karaf.cellar.features.Constants; import org.apache.karaf.cellar.features.FeatureInfo; import org.apache.karaf.cellar.features.RemoteFeaturesEvent; @@ -35,6 +36,7 @@ import java.util.Map; public class CellarFeaturesMBeanImpl extends StandardMBean implements CellarFeaturesMBean { private ClusterManager clusterManager; + private EventTransportFactory eventTransportFactory; private GroupManager groupManager; public ClusterManager getClusterManager() { @@ -53,13 +55,21 @@ public class CellarFeaturesMBeanImpl ext this.groupManager = groupManager; } + public EventTransportFactory getEventTransportFactory() { + return eventTransportFactory; + } + + public void setEventTransportFactory(EventTransportFactory eventTransportFactory) { + this.eventTransportFactory = eventTransportFactory; + } + public CellarFeaturesMBeanImpl() throws NotCompliantMBeanException { super(CellarFeaturesMBean.class); } public void install(String groupName, String name, String version) throws Exception { Group group = groupManager.findGroupByName(groupName); - EventProducer producer = clusterManager.getEventProducer(groupName); + EventProducer producer = eventTransportFactory.getEventProducer(groupName,true); RemoteFeaturesEvent event = new RemoteFeaturesEvent(name, version, FeatureEvent.EventType.FeatureInstalled); event.setForce(true); event.setSourceGroup(group); @@ -72,7 +82,7 @@ public class CellarFeaturesMBeanImpl ext public void uninstall(String groupName, String name, String version) throws Exception { Group group = groupManager.findGroupByName(groupName); - EventProducer producer = clusterManager.getEventProducer(groupName); + EventProducer producer = eventTransportFactory.getEventProducer(groupName,true); RemoteFeaturesEvent event = new RemoteFeaturesEvent(name, version, FeatureEvent.EventType.FeatureUninstalled); event.setForce(true); event.setSourceGroup(group); Modified: karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarMBeanImpl.java URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarMBeanImpl.java?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarMBeanImpl.java (original) +++ karaf/cellar/trunk/management/src/main/java/org/apache/karaf/cellar/management/internal/CellarMBeanImpl.java Fri Aug 26 20:52:08 2011 @@ -3,6 +3,20 @@ * 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. + */ + +/* + * 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 Modified: karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original) +++ karaf/cellar/trunk/management/src/main/resources/OSGI-INF/blueprint/blueprint.xml Fri Aug 26 20:52:08 2011 @@ -17,6 +17,7 @@ <!-- Reference to the Cellar services --> <reference id="clusterManager" interface="org.apache.karaf.cellar.core.ClusterManager"/> <reference id="groupManager" interface="org.apache.karaf.cellar.core.GroupManager"/> + <reference id="eventTransportFactory" interface="org.apache.karaf.cellar.core.event.EventTransportFactory"/> <reference id="executionContext" interface="org.apache.karaf.cellar.core.command.ExecutionContext"/> <reference id="mbeanServer" interface="javax.management.MBeanServer"> @@ -39,6 +40,7 @@ <bean id="cellarFeaturesMBean" class="org.apache.karaf.cellar.management.internal.CellarFeaturesMBeanImpl"> <property name="clusterManager" ref="clusterManager"/> + <property name="eventTransportFactory" ref="eventTransportFactory"/> <property name="groupManager" ref="groupManager"/> </bean> Modified: karaf/cellar/trunk/pom.xml URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/pom.xml?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/pom.xml (original) +++ karaf/cellar/trunk/pom.xml Fri Aug 26 20:52:08 2011 @@ -37,15 +37,17 @@ <easymock.version>2.4</easymock.version> <felix.configadmin.version>1.2.8</felix.configadmin.version> <felix.webconsole.version>3.1.8</felix.webconsole.version> + <hazelcast.version>1.9.3</hazelcast.version> + <jclouds.version>1.0.0</jclouds.version> + <joda-time.version>1.6.2</joda-time.version> + <junit.version>4.7</junit.version> <junit.bundle.version>4.7_3</junit.bundle.version> <karaf.version>3.0.0-SNAPSHOT</karaf.version> - <hazelcast.version>1.9.3</hazelcast.version> <osgi.version>4.2.0</osgi.version> + <pax.url.version>1.3.4</pax.url.version> <servlet.api.version>2.5</servlet.api.version> <slf4j.version>1.6.1</slf4j.version> <spring.osgi.version>1.2.1</spring.osgi.version> - <jclouds.version>1.0.0</jclouds.version> - <joda-time.version>1.6.2</joda-time.version> </properties> <modules> @@ -53,6 +55,7 @@ <module>config</module> <module>features</module> <module>bundle</module> + <module>dosgi</module> <module>shell</module> <module>hazelcast</module> <module>utils</module> @@ -155,12 +158,12 @@ <artifactId>org.apache.karaf.cellar.utils</artifactId> <version>${project.version}</version> </dependency> - - <!-- Easymock --> <dependency> - <groupId>org.easymock</groupId> - <artifactId>easymock</artifactId> - <version>${easymock.version}</version> + <groupId>org.apache.karaf.cellar</groupId> + <artifactId>apache-karaf-cellar</artifactId> + <version>${project.version}</version> + <type>xml</type> + <classifier>features</classifier> </dependency> <!-- Felix --> @@ -199,6 +202,12 @@ <version>${karaf.version}</version> </dependency> + <dependency> + <groupId>org.apache.karaf.tooling</groupId> + <artifactId>org.apache.karaf.tooling.testing</artifactId> + <version>${karaf.version}</version> + </dependency> + <!-- OSGi --> <dependency> <groupId>org.osgi</groupId> @@ -265,6 +274,25 @@ <version>${joda-time.version}</version> </dependency> + <dependency> + <groupId>org.ops4j.pax.url</groupId> + <artifactId>pax-url-mvn</artifactId> + <version>${pax.url.version}</version> + </dependency> + + <!-- Testing --> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>${junit.version}</version> + </dependency> + + <!-- Easymock --> + <dependency> + <groupId>org.easymock</groupId> + <artifactId>easymock</artifactId> + <version>${easymock.version}</version> + </dependency> </dependencies> </dependencyManagement> @@ -448,6 +476,22 @@ </execution> </executions> </plugin> + <!-- generate dependencies versions --> + <plugin> + <groupId>org.apache.servicemix.tooling</groupId> + <artifactId>depends-maven-plugin</artifactId> + <version>1.1</version> + <inherited>true</inherited> + <executions> + <execution> + <id>generate-depends-file</id> + <goals> + <goal>generate-depends-file</goal> + </goals> + <phase>compile</phase> + </execution> + </executions> + </plugin> </plugins> </build> Modified: karaf/cellar/trunk/utils/src/main/resources/OSGI-INF/blueprint/blueprint.xml URL: http://svn.apache.org/viewvc/karaf/cellar/trunk/utils/src/main/resources/OSGI-INF/blueprint/blueprint.xml?rev=1162249&r1=1162248&r2=1162249&view=diff ============================================================================== --- karaf/cellar/trunk/utils/src/main/resources/OSGI-INF/blueprint/blueprint.xml (original) +++ karaf/cellar/trunk/utils/src/main/resources/OSGI-INF/blueprint/blueprint.xml Fri Aug 26 20:52:08 2011 @@ -27,10 +27,10 @@ <!-- OSGi Services & References --> <service ref="pingHandler" interface="org.apache.karaf.cellar.core.event.EventHandler"/> <service ref="pongHandler" interface="org.apache.karaf.cellar.core.event.EventHandler"/> - <reference id="clusterManager" interface="org.apache.karaf.cellar.core.ClusterManager"/> - <reference id="eventProducer" interface="org.apache.karaf.cellar.core.event.EventProducer"/> + + <reference id="clusterManager" interface="org.apache.karaf.cellar.core.ClusterManager" availability="optional"/> + <reference id="commandStore" interface="org.apache.karaf.cellar.core.command.CommandStore" availability="optional"/> + <reference id="producer" interface="org.apache.karaf.cellar.core.event.EventProducer" filter="(!(type = group))" availability="optional"/> <reference id="configurationAdmin" interface="org.osgi.service.cm.ConfigurationAdmin"/> - <reference id="commandStore" interface="org.apache.karaf.cellar.core.command.CommandStore"/> - <reference id="producer" interface="org.apache.karaf.cellar.core.event.EventProducer"/> </blueprint>
