From fe91899192f71a431ff850d646dd8701a83ae37f Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Thu, 15 May 2008 20:19:34 +0000 Subject: [PATCH] Property files are now being read by the property component so they can also be provided by another component (such as a database which is started). --- .../PersistentAuthorizationServiceTest.java | 6 ++- .../hibernate/DatabaseComponentFactory.java | 37 +++++++++++++++++++ ...omponent.java => DatasourceComponent.java} | 37 +++++++------------ .../HibernateUserAdministrationTest.java | 3 +- .../UserMgtRepositoryTestContainer.java | 18 +++++---- 5 files changed, 66 insertions(+), 35 deletions(-) create mode 100644 security/src/test/java/org/wamblee/usermgt/hibernate/DatabaseComponentFactory.java rename security/src/test/java/org/wamblee/usermgt/hibernate/{ExternalDatasourceComponent.java => DatasourceComponent.java} (66%) diff --git a/security/src/test/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationServiceTest.java b/security/src/test/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationServiceTest.java index 04ca2d37..af99ed83 100644 --- a/security/src/test/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationServiceTest.java +++ b/security/src/test/java/org/wamblee/security/authorization/hibernate/PersistentAuthorizationServiceTest.java @@ -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 index 00000000..d7f5f5e7 --- /dev/null +++ b/security/src/test/java/org/wamblee/usermgt/hibernate/DatabaseComponentFactory.java @@ -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); + } + } + +} diff --git a/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java b/security/src/test/java/org/wamblee/usermgt/hibernate/DatasourceComponent.java 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 55a2537c..0871d27b 100644 --- a/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java +++ b/security/src/test/java/org/wamblee/usermgt/hibernate/DatasourceComponent.java @@ -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 { +public class DatasourceComponent extends AbstractComponent { - 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 { @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); diff --git a/security/src/test/java/org/wamblee/usermgt/hibernate/HibernateUserAdministrationTest.java b/security/src/test/java/org/wamblee/usermgt/hibernate/HibernateUserAdministrationTest.java index 4706e75d..a0fd837c 100644 --- a/security/src/test/java/org/wamblee/usermgt/hibernate/HibernateUserAdministrationTest.java +++ b/security/src/test/java/org/wamblee/usermgt/hibernate/HibernateUserAdministrationTest.java @@ -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); diff --git a/security/src/test/java/org/wamblee/usermgt/hibernate/UserMgtRepositoryTestContainer.java b/security/src/test/java/org/wamblee/usermgt/hibernate/UserMgtRepositoryTestContainer.java index 325b3d92..d5824191 100644 --- a/security/src/test/java/org/wamblee/usermgt/hibernate/UserMgtRepositoryTestContainer.java +++ b/security/src/test/java/org/wamblee/usermgt/hibernate/UserMgtRepositoryTestContainer.java @@ -12,33 +12,35 @@ * 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); } - + } -- 2.31.1