Property files are now being read by the property component
authorerik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Thu, 15 May 2008 20:19:34 +0000 (20:19 +0000)
committererik <erik@77661180-640e-0410-b3a8-9f9b13e6d0e0>
Thu, 15 May 2008 20:19:34 +0000 (20:19 +0000)
so they can also be provided by another component (such as a database
which is started).

security/src/test/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationServiceTest.java
security/src/test/java/org/wamblee/usermgt/hibernate/DatabaseComponentFactory.java [new file with mode: 0644]
security/src/test/java/org/wamblee/usermgt/hibernate/DatasourceComponent.java [moved from security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java with 66% similarity]
security/src/test/java/org/wamblee/usermgt/hibernate/HibernateUserAdministrationTest.java
security/src/test/java/org/wamblee/usermgt/hibernate/UserMgtRepositoryTestContainer.java

index 04ca2d37a2ddb8d70869ee5d8bc8658076fdc636..af99ed8392d758d5a1d9b27b0bb45de8d8498917 100644 (file)
@@ -30,7 +30,8 @@ import org.wamblee.system.core.Scope;
 import org.wamblee.system.spring.component.DatabaseTesterComponent;
 import org.wamblee.usermgt.UserAccessor;
 import org.wamblee.usermgt.hibernate.AuthorizationComponent;
-import org.wamblee.usermgt.hibernate.ExternalDatasourceComponent;
+import org.wamblee.usermgt.hibernate.DatabaseComponentFactory;
+import org.wamblee.usermgt.hibernate.DatasourceComponent;
 import org.wamblee.usermgt.hibernate.HibernateUserAdministrationTest;
 import org.wamblee.usermgt.hibernate.UserAdministrationComponent;
 
@@ -64,7 +65,8 @@ public class PersistentAuthorizationServiceTest extends
     protected void setUp() throws Exception {
 
         _container = new DefaultContainer("top");
-        _container.addComponent(new ExternalDatasourceComponent("datasource"));
+        DatabaseComponentFactory.addDatabaseConfig(_container);
+        _container.addComponent(new DatasourceComponent("datasource"));
         _container.addComponent("userAccessor", TestUserAccessor.class);
         _container.addComponent(new AuthorizationComponent("authorization",
                 true));
diff --git a/security/src/test/java/org/wamblee/usermgt/hibernate/DatabaseComponentFactory.java b/security/src/test/java/org/wamblee/usermgt/hibernate/DatabaseComponentFactory.java
new file mode 100644 (file)
index 0000000..d7f5f5e
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2008 the original author or authors.
+ * 
+ * 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.
+ */
+package org.wamblee.usermgt.hibernate;
+
+import org.wamblee.io.ClassPathResource;
+import org.wamblee.system.components.PropertyComponent;
+import org.wamblee.system.core.Container;
+
+public class DatabaseComponentFactory {
+
+    public static void addDatabaseConfig(Container aContainer) {
+        try {
+            aContainer
+                    .addComponent(new PropertyComponent(
+                            "dbProps",
+                            new ClassPathResource(
+                                    "properties/test.org.wamblee.security.database.properties")));
+        } catch (Exception e) {
+            throw new RuntimeException("Could not add database configuration",
+                    e);
+        }
+    }
+
+}
similarity index 66%
rename from security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java
rename to security/src/test/java/org/wamblee/usermgt/hibernate/DatasourceComponent.java
index 55a2537c613d69c91305ad29dbe535f8187a5dd9..0871d27b2ab88a645942704db0b0947dd7851e16 100644 (file)
@@ -26,6 +26,7 @@ import org.springframework.core.io.ClassPathResource;
 import org.springframework.jdbc.datasource.DriverManagerDataSource;
 import org.wamblee.system.core.AbstractComponent;
 import org.wamblee.system.core.DefaultProvidedInterface;
+import org.wamblee.system.core.DefaultRequiredInterface;
 import org.wamblee.system.core.ProvidedInterface;
 import org.wamblee.system.core.RequiredInterface;
 import org.wamblee.system.core.Scope;
@@ -33,32 +34,18 @@ import org.wamblee.system.spring.SpringComponent;
 import org.wamblee.system.spring.component.ORMappingConfig;
 import org.wamblee.system.spring.component.ORMappingConfig.DatabaseType;
 
-public class ExternalDatasourceComponent extends AbstractComponent<DataSource> {
+public class DatasourceComponent extends AbstractComponent<DataSource> {
 
-    private static final String DATABASE_PROPERTIES = "properties/test.org.wamblee.security.database.properties";
-   
+    private static RequiredInterface PROPS = new DefaultRequiredInterface("dbprops", Properties.class);
     private static ProvidedInterface DATASOURCE =  new DefaultProvidedInterface("datasource",
             DataSource.class);
     private static ProvidedInterface ORM_CONFIG = new DefaultProvidedInterface("ormconfig",
             ORMappingConfig.class);
-
-    private Properties _dbProps;
    
-    public ExternalDatasourceComponent(String aName) throws IOException {
-        this(aName, loadProperties());
-    }
-
-    private static Properties loadProperties() throws IOException {
-        Properties dbProps = new Properties();
-        dbProps.load(new ClassPathResource(DATABASE_PROPERTIES)
-                .getInputStream());
-        return dbProps;
-    }
-    
-    public ExternalDatasourceComponent(String aName, Properties aProps) throws IOException {
-        super(aName);
-        _dbProps = aProps;
+    public DatasourceComponent(String aName) throws IOException {
+        super(aName); 
         
+        addRequiredInterface(PROPS);
         addProvidedInterface(DATASOURCE);
         addProvidedInterface(ORM_CONFIG);
     }
@@ -66,13 +53,15 @@ public class ExternalDatasourceComponent extends AbstractComponent<DataSource> {
 
     @Override
     protected DataSource doStart(Scope aScope) {
+        Properties dbProps = aScope.getInterfaceImplementation(
+                PROPS.getProvider(), Properties.class);
         DriverManagerDataSource ds = new DriverManagerDataSource(
-                _dbProps.getProperty("database.driver"),
-                _dbProps.getProperty("database.url"), 
-                _dbProps.getProperty("database.username"),
-                _dbProps.getProperty("database.password"));
+                dbProps.getProperty("database.driver"),
+                dbProps.getProperty("database.url"), 
+                dbProps.getProperty("database.username"),
+                dbProps.getProperty("database.password"));
        addInterface(DATASOURCE, ds, aScope);
-       DatabaseType type = DatabaseType.valueOf(_dbProps.getProperty("database.type"));
+       DatabaseType type = DatabaseType.valueOf(dbProps.getProperty("database.type"));
        
        ORMappingConfig config = new ORMappingConfig(true, type);
        
index 4706e75d6e7604d171057f8ff351672a860a9902..a0fd837c10e689ee369eb235490df107ce7908a7 100644 (file)
@@ -58,7 +58,8 @@ public class HibernateUserAdministrationTest extends UserAdministrationImplTest
     protected void setUp() throws Exception {
         
         _container = new DefaultContainer("top");
-        _container.addComponent(new ExternalDatasourceComponent("datasource"));
+        DatabaseComponentFactory.addDatabaseConfig(_container);
+        _container.addComponent(new DatasourceComponent("datasource"));
         _container.addComponent(new UserAdministrationComponent("admin", true));
         
         _container.addComponent("databaseTester", DatabaseTesterComponent.class);
index 325b3d920c8bc9e24beae07e453e4203ff393973..d582419132352dd7036e3fca5bc995c6a8c1e42a 100644 (file)
  * 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.
- */ 
+ */
 package org.wamblee.usermgt.hibernate;
 
 import java.io.IOException;
 
+import org.wamblee.io.ClassPathResource;
 import org.wamblee.system.adapters.DefaultContainer;
+import org.wamblee.system.components.PropertyComponent;
 import org.wamblee.system.spring.component.DatabaseTesterComponent;
 import org.wamblee.system.spring.component.HibernateComponent;
 import org.wamblee.usermgt.UserGroupRepositoryComponent;
 
 /**
  * 
- * Test container for repository tests of user management.  
+ * Test container for repository tests of user management.
  * 
  * @author Erik Brakkee
  */
 public class UserMgtRepositoryTestContainer extends DefaultContainer {
 
-    public UserMgtRepositoryTestContainer(String aName) throws IOException { 
-        super(aName); 
-        addComponent(new ExternalDatasourceComponent("datasource"));
-        addComponent("mappingFiles",
-                new UsermgtHibernateMappingFiles());
+    public UserMgtRepositoryTestContainer(String aName) throws IOException {
+        super(aName);
+        DatabaseComponentFactory.addDatabaseConfig(this);
+        addComponent(new DatasourceComponent("datasource"));
+        addComponent("mappingFiles", new UsermgtHibernateMappingFiles());
         addComponent(new HibernateComponent("hibernate"));
         addComponent(new UserGroupRepositoryComponent("usersgroups"));
         addComponent("databaseTester", DatabaseTesterComponent.class);
 
     }
-    
+
 }