X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=security%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fusermgt%2Fhibernate%2FExternalDatasourceComponent.java;h=55a2537c613d69c91305ad29dbe535f8187a5dd9;hb=807d64a6737a022bdfd34607b14758f01bf0d13d;hp=673aaceb6d5114f23ef4303fa7520b9224a1f936;hpb=392eabdb33253689a20fc67cb77a4d53366fd072;p=utils diff --git a/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java b/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java index 673aaceb..55a2537c 100644 --- a/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java +++ b/security/src/test/java/org/wamblee/usermgt/hibernate/ExternalDatasourceComponent.java @@ -23,35 +23,66 @@ import java.util.TreeMap; import javax.sql.DataSource; 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.ProvidedInterface; import org.wamblee.system.core.RequiredInterface; +import org.wamblee.system.core.Scope; 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 SpringComponent { +public class ExternalDatasourceComponent extends AbstractComponent { private static final String DATABASE_PROPERTIES = "properties/test.org.wamblee.security.database.properties"; - private static final String DATASOURCE_SPRING_CONFIG = "spring/test.org.wamblee.security.datasource.xml"; + + 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 { - super( - aName, - new String[] { DATASOURCE_SPRING_CONFIG }, - createProvidedMap(), new TreeMap()); - Properties props = new Properties(); - props.load(new ClassPathResource(DATABASE_PROPERTIES).getInputStream()); - - for (Object key: props.keySet()) { - System.out.println("Key " + key + " value " + props.getProperty((String)key)); - } - addProperties(props); + this(aName, loadProperties()); } - private static Map createProvidedMap() { - Map provided = new TreeMap(); - provided.put("dataSource", new DefaultProvidedInterface("datasource", - DataSource.class)); - return provided; + 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; + + addProvidedInterface(DATASOURCE); + addProvidedInterface(ORM_CONFIG); + } + + @Override + protected DataSource doStart(Scope aScope) { + DriverManagerDataSource ds = new DriverManagerDataSource( + _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")); + + ORMappingConfig config = new ORMappingConfig(true, type); + + addInterface(ORM_CONFIG, config, aScope); + + return ds; + } + + @Override + protected void doStop(DataSource aRuntime) { + // Empty. + } }