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;
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);
}
@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);