Author: [email protected]
Date: Tue Oct  4 16:28:52 2011
New Revision: 1441

Log:
[AMDATUCASSANDRA-102] Refactored dynamic service dependencies to add them to 
the dm all at once (using a list)

Modified:
   
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
   
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
   
trunk/amdatu-cassandra/cassandra-store-nonce/src/main/java/org/amdatu/cassandra/store/nonce/service/CassandraNonceStorageProviderImpl.java
   
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java

Modified: 
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
 (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-consumer/src/main/java/org/amdatu/cassandra/store/consumer/service/CassandraConsumerStorageProviderImpl.java
 Tue Oct  4 16:28:52 2011
@@ -36,6 +36,7 @@
 import org.amdatu.core.tenant.Tenant;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.codehaus.jackson.map.ObjectMapper;
@@ -48,17 +49,16 @@
  * consumer store stores available Service Consumers used by oAuth; they 
represent a particular application
  * that invokes an oAuth protected REST service. For oAuth to allow or 
disallow that invocation it authenticates
  * the Service Consumer that invoked the request by looking up the provided 
credentials in this store.
- * 
+ *
  * @author ivol
  */
 public class CassandraConsumerStorageProviderImpl implements 
OAuthServiceConsumerRegistry {
     // Service dependencies, injected by the dependency manager
     private volatile CassandraPersistenceManager m_pm;
     private volatile LogService m_logService;
-    private volatile Component m_component;
     private volatile DependencyManager m_dependencyManager;
     private volatile Tenant m_tenant;
-    
+
     // Column names
     private static final String NAME = "name";
     private static final String SECRET = "secret";
@@ -74,7 +74,7 @@
 
     /**
      * Constructor used by the Unit test.
-     * 
+     *
      * @param pm
      * @param logService
      */
@@ -82,23 +82,27 @@
         m_pm = pm;
         m_logService = logService;
     }
-    
+
     public void init(final Component component) {
-        // Add tenant specific service dependencies      
+        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
+
+        // Add tenant specific service dependencies
         String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY 
+ "=" + m_tenant.getId() + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(CassandraPersistenceManager.class, ksFilter)
             .setRequired(true)
             .setInstanceBound(true));
 
         String cfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" + 
ConsumerColumnFamilyProvider.CF_CONSUMER + ")";
         String cfAvailableFilter =  "(&" + ksFilter + cfFilter + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(ColumnFamilyAvailable.class, cfAvailableFilter)
             .setRequired(true)
             .setInstanceBound(true));
+        
+        component.add(dependencies);
     }
-    
+
     public void start() {
         m_logService.log(LogService.LOG_INFO,
             "Service '" + getClass().getName() + "' started for tenant '" + 
m_tenant.getId() + "'");
@@ -251,7 +255,7 @@
      * This method is used internally to convert a Map<String, String> to a 
single JSON String, such that it can be
      * persisted in Cassandra as String value. This way all columns in this 
ColumnFamily are stored as String which makes
      * using the CassandraPersistenceManager a lot easier.
-     * 
+     *
      * @return JSON expression
      */
     private String mapToString(Map<String, String> map) {

Modified: 
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
       (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-gadget/src/main/java/org/amdatu/cassandra/store/gadget/service/CassandraGadgetStorageProviderImpl.java
       Tue Oct  4 16:28:52 2011
@@ -18,6 +18,7 @@
 import static 
org.amdatu.cassandra.store.gadget.service.GadgetColumnFamilyProvider.CF_GADGET;
 import static 
org.amdatu.cassandra.store.gadget.service.GadgetColumnFamilyProvider.CF_GADGETCATEGORY;
 
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
@@ -34,6 +35,7 @@
 import org.amdatu.opensocial.gadgetmanagement.GadgetStorageProvider;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
 import org.osgi.service.log.LogService;
 
 /**
@@ -62,9 +64,8 @@
     private volatile LogService m_logService;
     private volatile DependencyManager m_dependencyManager;
     private volatile Tenant m_tenant;
-    private volatile Component m_component;
     
-    // Tenant aware service depdendencies
+    // Tenant aware service dependencies
     private volatile CassandraPersistenceManager m_pm;
    
     // Locks
@@ -90,10 +91,12 @@
     }
 
     public void init(final Component component) {
+        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
+        
         // Add tenant specific service dependencies      
         // The CassandraPersistenceManager for the keyspace with the same id 
as our tenant
         String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY 
+ "=" + m_tenant.getId() + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(CassandraPersistenceManager.class, ksFilter)
             .setRequired(true)
             .setInstanceBound(true));
@@ -101,7 +104,7 @@
         // The ColumnFamilyAvailable for the Gadget CF
         String gadgetCfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" 
+ GadgetColumnFamilyProvider.CF_GADGET + ")";
         String gadgetCfAvailableFilter =  "(&" + ksFilter + gadgetCfFilter + 
")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(ColumnFamilyAvailable.class, gadgetCfAvailableFilter)
             .setRequired(true)
             .setInstanceBound(true));
@@ -109,10 +112,12 @@
         // The ColumnFamilyAvailable for the Gadget category CF
         String categoryCfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + 
"=" + GadgetColumnFamilyProvider.CF_GADGETCATEGORY + ")";
         String categoryCfAvailableFilter =  "(&" + ksFilter + categoryCfFilter 
+ ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(ColumnFamilyAvailable.class, categoryCfAvailableFilter)
             .setRequired(true)
             .setInstanceBound(true));
+        
+        component.add(dependencies);
     }
     
     public void start() {

Modified: 
trunk/amdatu-cassandra/cassandra-store-nonce/src/main/java/org/amdatu/cassandra/store/nonce/service/CassandraNonceStorageProviderImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-nonce/src/main/java/org/amdatu/cassandra/store/nonce/service/CassandraNonceStorageProviderImpl.java
  (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-nonce/src/main/java/org/amdatu/cassandra/store/nonce/service/CassandraNonceStorageProviderImpl.java
  Tue Oct  4 16:28:52 2011
@@ -15,12 +15,16 @@
  */
 package org.amdatu.cassandra.store.nonce.service;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.amdatu.auth.oauth.server.OAuthNonceStorageProvider;
 import org.amdatu.cassandra.listener.ColumnFamilyAvailable;
 import org.amdatu.cassandra.persistencemanager.CassandraPersistenceManager;
 import org.amdatu.core.tenant.Tenant;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
 import org.osgi.service.log.LogService;
 
 /**
@@ -69,19 +73,23 @@
     }
     
     public void init() {
+        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
+        
         // Add tenant specific service dependencies      
         String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY 
+ "=" + m_tenant.getId() + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(CassandraPersistenceManager.class, ksFilter)
             .setRequired(true)
             .setInstanceBound(true));
 
         String cfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" + 
NonceColumnFamilyProvider.CF_NONCE + ")";
         String cfAvailableFilter =  "(&" + ksFilter + cfFilter + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(ColumnFamilyAvailable.class, cfAvailableFilter)
             .setRequired(true)
             .setInstanceBound(true));        
+        
+        m_component.add(dependencies);
     }
     
     public void start() {

Modified: 
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
==============================================================================
--- 
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
  (original)
+++ 
trunk/amdatu-cassandra/cassandra-store-token/src/main/java/org/amdatu/cassandra/store/token/service/CassandraTokenStorageProviderImpl.java
  Tue Oct  4 16:28:52 2011
@@ -18,6 +18,7 @@
 import static 
org.amdatu.cassandra.store.token.service.TokenColumnFamilyProvider.CF_TOKEN;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -31,6 +32,7 @@
 import org.amdatu.core.tenant.Tenant;
 import org.apache.felix.dm.Component;
 import org.apache.felix.dm.DependencyManager;
+import org.apache.felix.dm.ServiceDependency;
 import org.codehaus.jackson.JsonParseException;
 import org.codehaus.jackson.map.JsonMappingException;
 import org.codehaus.jackson.map.ObjectMapper;
@@ -45,7 +47,6 @@
  */
 public class CassandraTokenStorageProviderImpl implements TokenStorageProvider 
{
     // Tenant unaware service dependencies, injected by the dependency manager
-    private volatile Component m_component;
     private volatile DependencyManager m_dependencyManager;
     private volatile Tenant m_tenant;
     private volatile LogService m_logService;
@@ -76,19 +77,23 @@
     }
 
     public void init(final Component component) {
+        List<ServiceDependency> dependencies = new 
ArrayList<ServiceDependency>();
+        
         // Add tenant specific service dependencies
         String ksFilter = "(" + CassandraPersistenceManager.KEYSPACE_AWARE_KEY 
+ "=" + m_tenant.getId() + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(CassandraPersistenceManager.class, ksFilter)
             .setRequired(true)
             .setInstanceBound(true));
 
         String cfFilter = "(" + ColumnFamilyAvailable.FILTER_NAME + "=" + 
TokenColumnFamilyProvider.CF_TOKEN + ")";
         String cfAvailableFilter = "(&" + ksFilter + cfFilter + ")";
-        m_component.add(m_dependencyManager.createServiceDependency()
+        dependencies.add(m_dependencyManager.createServiceDependency()
             .setService(ColumnFamilyAvailable.class, cfAvailableFilter)
             .setRequired(true)
             .setInstanceBound(true));
+        
+        component.add(dependencies);
     }
 
     public void start() {
_______________________________________________
Amdatu-commits mailing list
[email protected]
http://lists.amdatu.org/mailman/listinfo/amdatu-commits

Reply via email to