import org.wamblee.system.core.ProvidedInterface;
import org.wamblee.system.core.Scope;
import org.wamblee.system.spring.component.HibernateComponent;
+import org.wamblee.system.spring.component.ORMappingConfig;
import org.wamblee.usermgt.UserAccessor;
import org.wamblee.usermgt.UserAdministration;
import org.wamblee.usermgt.UserGroupRepositoryComponent;
addRequiredInterface(new DefaultRequiredInterface("datasource", DataSource.class));
addRequiredInterface(new DefaultRequiredInterface("userAccessor",
UserAccessor.class));
+ addRequiredInterface(new DefaultRequiredInterface("ormconfig", ORMappingConfig.class));
if (aExposeInternals) {
addProvidedInterface(TRANSACTION_MGR);
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<DataSource> {
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<RequiredInterface, String>());
- 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<String, ProvidedInterface> createProvidedMap() {
- Map<String, ProvidedInterface> provided = new TreeMap<String, ProvidedInterface>();
- 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.
+ }
}