Author: ivol
Date: Tue Oct 19 13:26:28 2010
New Revision: 193
Log:
[AMDATU-104] Refactored CassandraDaemonServiceTracker
Added:
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceListener.java
- copied, changed from r191,
/trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceTracker.java
Removed:
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceTracker.java
Modified:
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/osgi/Activator.java
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/ColumnFamilyListenerServiceImpl.java
trunk/platform-bundles/cassandra-persistencemanager/src/main/java/org/amdatu/platform/cassandra/persistencemanager/service/CassandraPersistenceManagerFactoryImpl.java
Modified:
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
==============================================================================
---
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
(original)
+++
trunk/example-bundles/friends-gadget/src/main/java/org/amdatu/example/friends/gadget/osgi/service/FriendsGadgetServiceImpl.java
Tue Oct 19 13:26:28 2010
@@ -18,7 +18,6 @@
import static org.amdatu.example.friends.gadget.osgi.Activator.RESOURCE_ID;
-import java.io.IOException;
import java.net.URL;
import java.util.Dictionary;
@@ -32,6 +31,7 @@
import org.osgi.framework.BundleContext;
import org.osgi.service.cm.ConfigurationAdmin;
import org.osgi.service.cm.ConfigurationException;
+import org.osgi.service.cm.ManagedService;
import org.osgi.service.log.LogService;
/**
@@ -39,7 +39,7 @@
* the gadget XML).
* @author ivol
*/
-public class FriendsGadgetServiceImpl implements ResourceProvider {
+public class FriendsGadgetServiceImpl implements ResourceProvider,
ManagedService {
// The PID and configuration properties
public final static String PID = "org.amdatu.example.friends.gadget";
private final static String HOSTNAME = "hostname";
Modified:
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/osgi/Activator.java
==============================================================================
---
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/osgi/Activator.java
(original)
+++
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/osgi/Activator.java
Tue Oct 19 13:26:28 2010
@@ -16,6 +16,8 @@
*/
package org.amdatu.platform.cassandra.listener.osgi;
+import org.amdatu.platform.cassandra.application.CassandraDaemonService;
+import
org.amdatu.platform.cassandra.listener.service.CassandraDaemonServiceListener;
import
org.amdatu.platform.cassandra.listener.service.ColumnFamilyListenerServiceImpl;
import
org.amdatu.platform.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
import org.apache.felix.dm.DependencyActivatorBase;
@@ -24,7 +26,6 @@
import org.osgi.service.log.LogService;
import org.osgi.service.packageadmin.PackageAdmin;
-
/**
* This is the OSGi activator for this Cassandra listener bundle.
* @author ivol
@@ -42,6 +43,14 @@
.add(createServiceDependency().setService(LogService.class).setRequired(true))
.add(createServiceDependency().setService(PackageAdmin.class).setRequired(true))
.add(createServiceDependency().setService(CassandraPersistenceManagerFactory.class).setRequired(true)));
+
+ // Register the cassandra daemon service listener
+ manager.add(
+ createComponent()
+ .setImplementation(CassandraDaemonServiceListener.class)
+
.add(createServiceDependency().setService(LogService.class).setRequired(true))
+
.add(createServiceDependency().setService(CassandraDaemonService.class).setRequired(true))
+
.add(createServiceDependency().setService(CassandraPersistenceManagerFactory.class).setRequired(true)));
}
/**
Copied:
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceListener.java
(from r191,
/trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceTracker.java)
==============================================================================
---
/trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceTracker.java
(original)
+++
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/CassandraDaemonServiceListener.java
Tue Oct 19 13:26:28 2010
@@ -36,44 +36,17 @@
import org.osgi.framework.InvalidSyntaxException;
import org.osgi.framework.ServiceReference;
import org.osgi.service.log.LogService;
-import org.osgi.util.tracker.ServiceTracker;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
-public class CassandraDaemonServiceTracker extends ServiceTracker {
+public class CassandraDaemonServiceListener {
// Members initialized in the constructor
- private BundleContext m_bundleContext;
- private LogService m_logService;
- private DependencyManager m_dependencyManager;
- private CassandraPersistenceManagerFactory m_pmFactory;
-
- /**
- * Constructor.
- * @param bundleContext
- * @param logService
- * @param manager
- * @param factory
- */
- public CassandraDaemonServiceTracker(BundleContext bundleContext,
LogService logService, DependencyManager manager,
- CassandraPersistenceManagerFactory factory) {
- super(bundleContext, CassandraDaemonService.class.getName(), null);
- m_bundleContext = bundleContext;
- m_logService = logService;
- m_dependencyManager = manager;
- m_pmFactory = factory;
- }
-
- @Override
- public Object addingService(ServiceReference reference) {
- // When the Cassandra daemon service has come available, publish
ColumnFamilyAvailable
- // services for each ColumnFamily in the Cassandra configuration
- synchronized (reference) {
- startAvailableServices();
- }
- return m_bundleContext.getService(reference);
- }
+ private volatile BundleContext m_bundleContext;
+ private volatile LogService m_logService;
+ private volatile DependencyManager m_dependencyManager;
+ private volatile CassandraPersistenceManagerFactory m_pmFactory;
- private void startAvailableServices() {
+ public void start() {
synchronized (this) {
DOMDocumentHandler handler = new DOMDocumentHandler() {
public boolean handle(Document document) {
Modified:
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/ColumnFamilyListenerServiceImpl.java
==============================================================================
---
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/ColumnFamilyListenerServiceImpl.java
(original)
+++
trunk/platform-bundles/cassandra-listener/src/main/java/org/amdatu/platform/cassandra/listener/service/ColumnFamilyListenerServiceImpl.java
Tue Oct 19 13:26:28 2010
@@ -16,8 +16,6 @@
*/
package org.amdatu.platform.cassandra.listener.service;
-import
org.amdatu.platform.cassandra.persistencemanager.CassandraPersistenceManagerFactory;
-import org.apache.felix.dm.DependencyManager;
import org.osgi.framework.BundleContext;
import org.osgi.service.log.LogService;
import org.osgi.service.packageadmin.PackageAdmin;
@@ -37,12 +35,9 @@
private volatile BundleContext m_bundleContext;
private volatile LogService m_logService;
private volatile PackageAdmin m_packageAdmin;
- private volatile CassandraPersistenceManagerFactory m_pmFactory;
-
+
// The service trackers
private ColumnFamilyProviderServiceTracker m_columnFamilyTracker;
- private CassandraDaemonServiceTracker m_daemonTracker;
- private DependencyManager m_dependencyManager;
/**
* The init() method is invoked by the Felix dependency manager. It allows
us to initialize our service. In this
@@ -52,10 +47,6 @@
// Register a service tracker to track ColumnFamilyProviders that come
available or unavailable
m_columnFamilyTracker = new
ColumnFamilyProviderServiceTracker(m_bundleContext, m_logService,
m_packageAdmin);
m_columnFamilyTracker.open();
-
- // Register a service tracker to track ColumnFamilyProviders that come
available or unavailable
- m_daemonTracker = new CassandraDaemonServiceTracker(m_bundleContext,
m_logService, m_dependencyManager, m_pmFactory);
- m_daemonTracker.open();
}
/**
@@ -64,7 +55,6 @@
*/
public void destroy() {
m_columnFamilyTracker.close();
- m_daemonTracker.close();
}
}
Modified:
trunk/platform-bundles/cassandra-persistencemanager/src/main/java/org/amdatu/platform/cassandra/persistencemanager/service/CassandraPersistenceManagerFactoryImpl.java
==============================================================================
---
trunk/platform-bundles/cassandra-persistencemanager/src/main/java/org/amdatu/platform/cassandra/persistencemanager/service/CassandraPersistenceManagerFactoryImpl.java
(original)
+++
trunk/platform-bundles/cassandra-persistencemanager/src/main/java/org/amdatu/platform/cassandra/persistencemanager/service/CassandraPersistenceManagerFactoryImpl.java
Tue Oct 19 13:26:28 2010
@@ -34,10 +34,7 @@
// Instances injected by the Felix dependency manager
private volatile DependencyManager m_dependencyManager;
- /**
- * @see
CassandraPersistenceManagerFactory#createCassandraPersistenceManager(String)
- * {@inheritDoc}
- */
+
public void createCassandraPersistenceManager(String keyspaceId) {
Dictionary<String, String> serviceProperties = new Hashtable<String,
String>();
serviceProperties.put(CassandraPersistenceManager.KEYSPACE_AWARE_KEY,
keyspaceId);