Author: ivol37 at gmail.com
Date: Tue Feb  1 14:19:36 2011
New Revision: 742

Log:
[AMDATU-84] Fixed failing integration tests. FS useradmin store is now also 
tenant aware.

Modified:
   
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
   branches/amdatu-dispatcher/amdatu-core/tenantstore-fs/pom.xml
   
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
   
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
   branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/pom.xml
   
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
   
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
   branches/amdatu-dispatcher/integration-tests/pom.xml
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/ConfigProvider.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/FSTenantStorageProviderServiceTest.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
   
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminStoreTest.java

Modified: 
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
 (original)
+++ 
branches/amdatu-dispatcher/amdatu-core/tenant/src/main/java/org/amdatu/core/tenant/service/TenantManagementServiceImpl.java
 Tue Feb  1 14:19:36 2011
@@ -33,8 +33,10 @@
 import org.apache.felix.dm.DependencyManager;
 import org.osgi.service.cm.ConfigurationException;
 import org.osgi.service.cm.ManagedService;
+import org.osgi.service.log.LogService;
 
 public class TenantManagementServiceImpl implements TenantManagementService, 
ManagedService {
+       private volatile LogService m_logService;
     private volatile DependencyManager m_manager;
     private volatile TenantStorageProvider m_tenantStorageProvider;
 
@@ -49,12 +51,13 @@
     public void init() throws TenantException {
         // Loop over the tenants provisioned by config admin and add or update 
the tenants. We do not
         // remove existing tenants if they are not covered by an entry in 
config admin (yet).
+       m_logService.log(LogService.LOG_INFO, "Initializing 
TenantManagementService with tenants '" + m_tenants + "'.");
         if (m_tenants != null) {
             for (TenantEntity tenant : m_tenants) {
                 TenantEntity persTenant = getTenantById(tenant.getId());
                 if (persTenant == null) {
-                    // Tenant does not yet exist, create it
-                    persTenant = createTenant(tenant.getId(), 
tenant.getName());
+                    // Tenant does not yet exist, persist it, but without 
registering it as Tenant service yet
+                    persTenant = storeTenant(tenant.getId(), tenant.getName());
                 }
                 persTenant.setName(tenant.getName());
                 for (String propKey : tenant.getProperties().keySet()) {
@@ -62,6 +65,7 @@
                     persTenant.putProperty(propKey, propValue);
                 }
                 m_tenantStorageProvider.store(persTenant);
+                m_logService.log(LogService.LOG_INFO, "Tenant '" + 
tenant.getId() + "' added.");
             }
         }
     }
@@ -76,6 +80,7 @@
                 createTenantService(tenant);
             }
         }
+        m_logService.log(LogService.LOG_INFO, "TenantManagementService 
started.");
     }
 
     public List<TenantEntity> getTenants() throws TenantException {
@@ -113,6 +118,19 @@
             return tenant;
         }
     }
+    
+    // Does the same as createTenant, but without registration of the stored 
tenant as Tenant
+    // service. Invoked in the init() method since tenant services are 
registared in the start() method.
+    private TenantEntity storeTenant(String id, String name) throws 
TenantException {
+        synchronized (m_lock) {
+             if (getTenantById(id) != null) {
+                 throw new TenantException("Tenant with id '" + id + "' 
already exists");
+             }
+             TenantEntity tenant = new TenantEntity(id, name);
+             m_tenantStorageProvider.store(tenant);
+             return tenant;
+         }
+    }
 
     public void updateTenant(TenantEntity tenant) throws TenantException {
         synchronized (m_lock) {

Modified: branches/amdatu-dispatcher/amdatu-core/tenantstore-fs/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-core/tenantstore-fs/pom.xml       
(original)
+++ branches/amdatu-dispatcher/amdatu-core/tenantstore-fs/pom.xml       Tue Feb 
 1 14:19:36 2011
@@ -26,7 +26,7 @@
       <artifactId>fsstorage</artifactId>
       <version>${platform.version}</version>
       <scope>compile</scope>
-    </dependency>    
+    </dependency>
   </dependencies>
 
   <build>

Modified: 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
  (original)
+++ 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/osgi/Activator.java
  Tue Feb  1 14:19:36 2011
@@ -38,7 +38,7 @@
         // Create and register the Tenant UserAdmin decorator service
         //org.ops4j.pax.useradmin.storageprovider.type
         String filter = "(&(org.ops4j.pax.useradmin.storageprovider.type=*)(" 
+ Constants.OBJECTCLASS
-        + "=" + UserAdmin.class.getName() + "))";
+               + "=" + UserAdmin.class.getName() + "))";
         manager.add(
             createAspectService(UserAdmin.class, filter, 10, null)
             .setImplementation(TenantUserAdminDecorator.class)

Modified: 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
        (original)
+++ 
branches/amdatu-dispatcher/amdatu-core/tenantuseradmindecorator/src/main/java/org/amdatu/core/tenantuseradmindecorator/service/TenantUserAdminDecorator.java
        Tue Feb  1 14:19:36 2011
@@ -52,6 +52,7 @@
             properties.put(Tenant.SERVICE_PREFIX + "id", m_tenant.getId());
             properties.put(Tenant.SERVICE_PREFIX + "name", m_tenant.getName());
             component.setServiceProperties(properties);
+            m_logService.log(LogService.LOG_INFO, "Decorated UserAdmin for pid 
'" + pid + "' with tenant '" + m_tenant.getId() + "'");
         }
         catch (TenantException e) {
             m_logService.log(LogService.LOG_ERROR, "Could not decorate 
UserAdmin for pid '" + pid + "'");

Modified: branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/pom.xml    
(original)
+++ branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/pom.xml    Tue Feb 
 1 14:19:36 2011
@@ -25,6 +25,13 @@
       <artifactId>pax-useradmin-service</artifactId>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.amdatu.core</groupId>
+      <artifactId>tenant</artifactId>
+      <version>${platform.version}</version>
+      <scope>provided</scope>
+      <type>bundle</type>
+    </dependency>
   </dependencies>
 
   <build>

Modified: 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
      (original)
+++ 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/osgi/FSUserAdminStorageProviderActivator.java
      Tue Feb  1 14:19:36 2011
@@ -20,6 +20,7 @@
 import java.util.Dictionary;
 import java.util.Hashtable;
 
+import org.amdatu.core.tenant.Tenant;
 import org.amdatu.core.useradminstore.fs.service.FSUserAdminStorageProvider;
 import org.apache.felix.dm.DependencyActivatorBase;
 import org.apache.felix.dm.DependencyManager;
@@ -37,11 +38,12 @@
 
     @Override
     public void init(BundleContext context, DependencyManager manager) throws 
Exception {
+       // We register the FS tenant store as an adapter service for tenant, 
which makes it tenant aware.
+       // An instance of this store will be available for each tenant.
         Dictionary<String, Object> properties = new Hashtable<String, 
Object>();
-        properties.put(UserAdminConstants.STORAGEPROVIDER_TYPE, "FS");
         properties.put(Constants.SERVICE_RANKING, 0);
         manager.add(
-            createComponent()
+            createAdapterService(Tenant.class, null)
             .setImplementation(new FSUserAdminStorageProvider())
             .setInterface(StorageProvider.class.getName(), properties)
             
.add(createConfigurationDependency().setPid(FSUserAdminStorageProvider.CONFIGURATION_PID))

Modified: 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
==============================================================================
--- 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
    (original)
+++ 
branches/amdatu-dispatcher/amdatu-core/useradminstore-fs/src/main/java/org/amdatu/core/useradminstore/fs/service/FSUserAdminStorageProvider.java
    Tue Feb  1 14:19:36 2011
@@ -12,10 +12,13 @@
 import java.util.Map;
 import java.util.Set;
 
+import org.amdatu.core.tenant.Tenant;
 import org.amdatu.core.useradminstore.fs.internal.FSGroup;
 import org.amdatu.core.useradminstore.fs.internal.FSRole;
 import org.amdatu.core.useradminstore.fs.internal.FSRoleStorage;
 import org.amdatu.core.useradminstore.fs.internal.FSUser;
+import org.apache.felix.dm.Component;
+import org.ops4j.pax.useradmin.service.UserAdminConstants;
 import org.ops4j.pax.useradmin.service.spi.StorageException;
 import org.ops4j.pax.useradmin.service.spi.StorageProvider;
 import org.ops4j.pax.useradmin.service.spi.UserAdminFactory;
@@ -38,7 +41,11 @@
     public final static String DATA_DIRECTORY = "datadir";
 
     private volatile LogService m_logService;
+    private volatile Tenant m_tenant;
+    private volatile Component m_component;
+    
     private FSRoleStorage m_storage;
+    private String m_dataDirectoryName;
 
     public FSUserAdminStorageProvider() throws StorageException {
     }
@@ -46,30 +53,37 @@
     public FSRoleStorage getFSStorage() {
         return m_storage;
     }
+    
+    @SuppressWarnings("unchecked")
+       public void init() throws StorageException {
+        // Postfix tenantid to the data directory, making it tenant specific
+        m_dataDirectoryName += "/" + m_tenant.getId();
+        
+        Dictionary properties = m_component.getServiceProperties();
+        properties.put(UserAdminConstants.STORAGEPROVIDER_TYPE, "FS_" + 
m_tenant.getId());
+        properties.put(Tenant.SERVICE_PREFIX + "id", m_tenant.getId());
+        m_component.setServiceProperties(properties);
+        
+       File dataDirectory = new File(m_dataDirectoryName);
+        setDataDirectory(dataDirectory);
+    }
 
     public synchronized void start() throws StorageException {
         if (m_logService != null)
-            m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider started");
+            m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider started for tenant '" + m_tenant.getId() + "'");
     }
 
     public synchronized void stop() {
         if (m_logService != null)
-            m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider stopped");
+            m_logService.log(LogService.LOG_INFO, "Filesystem UserAdmin 
storage provider stopped for tenant '" + m_tenant.getId() + "'");
     }
 
     public synchronized void updated(Dictionary<String, Object> dictionary) 
throws ConfigurationException {
         if (dictionary != null) {
-            String dataDirectoryName = (String) dictionary.get(DATA_DIRECTORY);
-            if (dataDirectoryName == null || "".equals(dataDirectoryName)) {
+               m_dataDirectoryName = (String) dictionary.get(DATA_DIRECTORY);
+            if (m_dataDirectoryName == null || "".equals(m_dataDirectoryName)) 
{
                 throw new ConfigurationException(DATA_DIRECTORY, "Missing 
mandatory data directory configuration");
             }
-            File dataDirectory = new File(dataDirectoryName);
-            try {
-                setDataDirectory(dataDirectory);
-            }
-            catch (StorageException e) {
-                throw new ConfigurationException(DATA_DIRECTORY, 
e.getMessage());
-            }
         }
     }
 

Modified: branches/amdatu-dispatcher/integration-tests/pom.xml
==============================================================================
--- branches/amdatu-dispatcher/integration-tests/pom.xml        (original)
+++ branches/amdatu-dispatcher/integration-tests/pom.xml        Tue Feb  1 
14:19:36 2011
@@ -88,6 +88,13 @@
     </dependency>
     <dependency>
       <groupId>org.amdatu.core</groupId>
+      <artifactId>tenantuseradmindecorator</artifactId>
+      <version>${platform.version}</version>
+      <scope>test</scope>
+      <type>bundle</type>
+    </dependency>
+    <dependency>
+      <groupId>org.amdatu.core</groupId>
       <artifactId>tenantstore-fs</artifactId>
       <version>${platform.version}</version>
       <scope>test</scope>

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/ConfigProvider.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/ConfigProvider.java
     (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/ConfigProvider.java
     Tue Feb  1 14:19:36 2011
@@ -27,6 +27,7 @@
 import org.amdatu.authorization.login.service.LoginService;
 import org.amdatu.cassandra.application.CassandraConfigurationService;
 import org.amdatu.core.config.templates.ConfigTemplateManager;
+import org.amdatu.core.tenant.TenantManagementService;
 import org.amdatu.core.tenant.TenantStorageProvider;
 import org.amdatu.opensocial.shindig.ShindigService;
 import org.osgi.service.cm.Configuration;
@@ -61,6 +62,15 @@
         config.update(properties);
     }
 
+    public void addTenantConfig(ConfigurationAdmin configAdmin) throws 
IOException {
+        Configuration config = 
configAdmin.getConfiguration(TenantManagementService.PID, null);
+        Properties properties = new Properties();
+        properties.put("tenant1.id", "Default");
+        properties.put("tenant1.name", "Default tenant");
+        properties.put("tenant1.properties.hostname", "localhost");
+        config.update(properties);
+    }
+    
     public void addCassandraConfig(ConfigurationAdmin configAdmin) throws 
IOException {
         Configuration config = 
configAdmin.getConfiguration(CassandraConfigurationService.PID, null);
         Properties properties = new Properties();

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
        (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/IntegrationTestBase.java
        Tue Feb  1 14:19:36 2011
@@ -324,6 +324,10 @@
     protected static MavenArtifactProvisionOption amdatuTenantService() {
         return 
mavenBundle().groupId("org.amdatu.core").artifactId("tenant").versionAsInProject();
     }
+    
+    protected static MavenArtifactProvisionOption 
amdatuTenantUserAdminDecoratorService() {
+        return 
mavenBundle().groupId("org.amdatu.core").artifactId("tenantuseradmindecorator").versionAsInProject();
+    }
 
     protected static MavenArtifactProvisionOption amdatuTenantStoreFSService() 
{
         return 
mavenBundle().groupId("org.amdatu.core").artifactId("tenantstore-fs").versionAsInProject();

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
      (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/OAuthTestBase.java
      Tue Feb  1 14:19:36 2011
@@ -70,6 +70,8 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
+        configProvider.addFSTenantStoreConfig(m_configAdmin);
         configProvider.addFelixHttpServiceConfig(m_configAdmin);
         configProvider.addOAuthConfig(m_configAdmin);
         configProvider.addLogConfig(m_configAdmin);
@@ -108,6 +110,9 @@
 
     protected Option provisionBundles() {
         return provision(
+                       amdatuTenantStoreFSService(),
+               amdatuTenantService(),
+               amdatuTenantUserAdminDecoratorService(),
             felixHttpServiceJetty(),
             felixHttpServiceWhiteboard(),
             slingMime(),

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
       (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/base/RESTTestBase.java
       Tue Feb  1 14:19:36 2011
@@ -61,6 +61,9 @@
     protected Option[] getProvisionedBundles() {
         return new Option[]{
             provision(
+                       amdatuTenantStoreFSService(),
+                amdatuTenantService(),
+                amdatuTenantUserAdminDecoratorService(),
                 felixHttpServiceJetty(),
                 felixHttpServiceWhiteboard(),
                 amdatuHttpContext(),
@@ -93,6 +96,8 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
+        configProvider.addFSTenantStoreConfig(m_configAdmin);
         configProvider.addFelixHttpServiceConfig(m_configAdmin);
         addConfig(configProvider, m_configAdmin);
         m_logService.log(LogService.LOG_DEBUG, "HttpService config set to " + 
ConfigProvider.HOSTNAME + ":" + ConfigProvider.PORTNR);

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/FSTenantStorageProviderServiceTest.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/FSTenantStorageProviderServiceTest.java
        (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/FSTenantStorageProviderServiceTest.java
        Tue Feb  1 14:19:36 2011
@@ -83,6 +83,7 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
         configProvider.addFSTenantStoreConfig(m_configAdmin);
     }
 

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
       (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/GadgetManagementServiceTest.java
       Tue Feb  1 14:19:36 2011
@@ -71,6 +71,9 @@
 
     protected Option provisionBundles() {
         return provision(
+            amdatuTenantStoreFSService(),
+            amdatuTenantService(),
+            amdatuTenantUserAdminDecoratorService(),
             amdatuConfigTemplateManager(), // Required for placeholders in 
cassandra.yaml
             amdatuCassandraApplication(),
             amdatuCassandraListener(),
@@ -97,6 +100,8 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
+        configProvider.addFSTenantStoreConfig(m_configAdmin);
         configProvider.addCassandraConfig(m_configAdmin);
         configProvider.addTemplateConfig(m_configAdmin);
         configProvider.addShindigConfig(m_configAdmin);

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
       (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/TenantManagementServiceTest.java
       Tue Feb  1 14:19:36 2011
@@ -79,20 +79,12 @@
 
     public Component[] getDependencies(DependencyManager manager) {
         Component testComponent = manager.createComponent()
-        .setImplementation(this)
-        .add(manager.createServiceDependency()
-            .setService(TenantManagementService.class)
-            .setRequired(true))
-            .add(manager.createServiceDependency()
-                .setService(ConfigurationAdmin.class)
-                .setRequired(true))
-                // this dependency is necessary to prevent a shutdown before 
all bundles are started
-                .add(manager.createServiceDependency()
-                    .setService(CassandraPersistenceManager.class)
-                    .setRequired(true))
-                    .add(manager.createServiceDependency()
-                        .setService(Tenant.class)
-                        .setCallbacks("tenantAdded", "tenantRemoved"));
+               .setImplementation(this)
+               
.add(manager.createServiceDependency().setService(TenantManagementService.class).setRequired(true))
+            
.add(manager.createServiceDependency().setService(ConfigurationAdmin.class).setRequired(true))
+            // this dependency is necessary to prevent a shutdown before all 
bundles are started
+            
.add(manager.createServiceDependency().setService(CassandraPersistenceManager.class).setRequired(true))
+            
.add(manager.createServiceDependency().setService(Tenant.class).setCallbacks("tenantAdded",
 "tenantRemoved"));
 
         Properties props = new Properties();
         props.put(Constants.SERVICE_RANKING, 1);
@@ -111,6 +103,7 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
         configProvider.addCassandraConfig(m_configAdmin);
         configProvider.addTemplateConfig(m_configAdmin);
     }

Modified: 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminStoreTest.java
==============================================================================
--- 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminStoreTest.java
        (original)
+++ 
branches/amdatu-dispatcher/integration-tests/src/test/java/org/amdatu/test/integration/tests/UserAdminStoreTest.java
        Tue Feb  1 14:19:36 2011
@@ -60,6 +60,9 @@
 
     protected Option provisionBundles() {
         return provision(
+            amdatuTenantService(),
+            amdatuTenantStoreFSService(),
+            amdatuTenantUserAdminDecoratorService(),
             javaxServlet(), // Required if the httpservice is not deployed
             amdatuConfigTemplateManager(), // Required for placeholders in 
cassandra.yaml
             amdatuHttpContext(), // needed by cassandra useradmin store
@@ -91,6 +94,8 @@
 
         // Add cassandra and templates configs
         ConfigProvider configProvider = new ConfigProvider();
+        configProvider.addTenantConfig(m_configAdmin);
+        configProvider.addFSTenantStoreConfig(m_configAdmin);
         configProvider.addCassandraConfig(m_configAdmin);
         configProvider.addTemplateConfig(m_configAdmin);
 

Reply via email to