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

Reply via email to