From: Erik Brakkee Date: Sun, 4 Apr 2010 20:52:28 +0000 (+0000) Subject: Now using the new database support functionality. X-Git-Tag: wamblee-utils-0.7~629 X-Git-Url: http://wamblee.org/gitweb/?a=commitdiff_plain;h=194e49725ed5ac15346c5f5a1fc874876132bca5;p=utils Now using the new database support functionality. --- diff --git a/security/pom.xml b/security/pom.xml index 1e355722..e878f674 100644 --- a/security/pom.xml +++ b/security/pom.xml @@ -27,6 +27,12 @@ test-jar 0.2-SNAPSHOT + + org.wamblee + wamblee-support-test-enterprise + 0.2-SNAPSHOT + test + org.wamblee wamblee-system-spring diff --git a/security/src/test/resources/spring/test.org.wamblee.security.datasource.xml b/security/src/test/resources/spring/test.org.wamblee.security.datasource.xml index 5a75178e..d7183342 100644 --- a/security/src/test/resources/spring/test.org.wamblee.security.datasource.xml +++ b/security/src/test/resources/spring/test.org.wamblee.security.datasource.xml @@ -7,9 +7,11 @@ + ${database.url} diff --git a/support/general/src/test/java/org/wamblee/persistence/Database.java b/support/general/src/test/java/org/wamblee/persistence/Database.java deleted file mode 100644 index 5b0ae98c..00000000 --- a/support/general/src/test/java/org/wamblee/persistence/Database.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2005 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.persistence; - -import java.sql.Connection; -import java.sql.SQLException; - -/** - * Represents a database. - * - * @author Erik Brakkee - */ -public interface Database { - /** - * Starts a database. This call should not block and return as soon as the - * database has been started. - */ - void start(); - - /** - * Gets the Jdbc Url to connect to this database. - * - * @return Jdbc Url. - */ - String getJdbcUrl(); - - /** - * Gets the external Jdbc URL to connect to this database from other JVMs. - */ - String getExternalJdbcUrl(); - - /** - * Gets the driver class name used to connect to the database from another - * JVM. - * - * @return Driver class name. - */ - String getDriverClassName(); - - /** - * Gets the username to connect to the database. - * - * @return username. - */ - String getUsername(); - - /** - * Gets the password to connect to the database. - * - * @return password. - */ - String getPassword(); - - /** - * Creates a new database connection. It is the caller's responsibility to - * close this connection. - * - * @return Newly created database connection. - */ - Connection createConnection() throws SQLException; - - /** - * Stops a database. - */ - void stop(); -} diff --git a/support/general/src/test/java/org/wamblee/persistence/DerbyDatabase.java b/support/general/src/test/java/org/wamblee/persistence/DerbyDatabase.java deleted file mode 100644 index f8d09d2d..00000000 --- a/support/general/src/test/java/org/wamblee/persistence/DerbyDatabase.java +++ /dev/null @@ -1,298 +0,0 @@ -/* - * Copyright 2005 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.persistence; - -import java.io.File; -import java.io.PrintWriter; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.Properties; - -import junit.framework.TestCase; - -import org.apache.derby.drda.NetworkServerControl; -import org.apache.derby.jdbc.ClientDriver; -import org.apache.log4j.Logger; -import org.wamblee.io.FileSystemUtils; - -/** - * Derby database setup. The external JDBC url used to connect to a running - * instance is - * - *
- *     jdbc:derby:net://localhost:1527/testdb 
- * 
- * - * and the driver class is - * - *
- * com.ibm.db2.jcc.DB2Driver
- * 
- * - * The following jars will have to be used db2jcc.jar and - * db2jcc_license_c.jar. - */ -public class DerbyDatabase implements Database { - - /** - * Logger. - */ - private static final Logger LOGGER = Logger.getLogger(DerbyDatabase.class); - - /** - * Database user name. - */ - private static final String USERNAME = "sa"; - - /** - * Database password. - */ - private static final String PASSWORD = "123"; - - /** - * Poll interval for the checking the server status. - */ - private static final int POLL_INTERVAL = 100; - - /** - * Maximum time to wait until the server has started or stopped. - */ - private static final int MAX_WAIT_TIME = 10000; - - /** - * Database name to use. - */ - private static final String DATABASE_NAME = "testdb"; - - /** - * Path on the file system where derby files are stored. - */ - private static final String DATABASE_PATH = "target/db/persistence/derby"; - - /** - * Derby property required to set the file system path - * {@link #DATABASE_PATH}. - */ - private static final String SYSTEM_PATH_PROPERTY = "derby.system.home"; - - /** - * Constructs derby database class to allow creation of derby database - * instances. - */ - public DerbyDatabase() { - // Empty - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.persistence.Database#start() - */ - public void start() { - try { - // just in case a previous run was killed without the - // cleanup - cleanPersistentStorage(); - - // set database path. - Properties lProperties = System.getProperties(); - lProperties.put(SYSTEM_PATH_PROPERTY, DATABASE_PATH); - - Class.forName("org.apache.derby.jdbc.EmbeddedDriver").newInstance(); - - runDatabase(); - - waitUntilStartedOrStopped(true); - - // Force creation of the database. - Connection lConnection = createConnection(); - lConnection.close(); - } catch (Exception e) { - throw new RuntimeException("Problem starting database", e); - } - } - - /** - * Waits until the database server has started or stopped. - * - * @param aStarted - * If true, waits until the server is up, if false, waits until - * the server is down. - * @throws InterruptedException - */ - private void waitUntilStartedOrStopped(boolean aStarted) - throws InterruptedException { - long lWaited = 0; - - while (aStarted != isStarted()) { - Thread.sleep(POLL_INTERVAL); - lWaited += POLL_INTERVAL; - - if (lWaited > MAX_WAIT_TIME) { - throw new RuntimeException( - "Derby database did not start within " + MAX_WAIT_TIME - + "ms"); - } - } - } - - /** - * Checks if the database server has started or not. - * - * @return True if started, false otherwise. - */ - private boolean isStarted() { - try { - getControl().ping(); - - return true; - } catch (Exception e) { - return false; - } - } - - /** - * Gets the controller for the database server. - * - * @return Controller. - * @throws Exception - */ - private NetworkServerControl getControl() throws Exception { - return new NetworkServerControl(); - } - - /** - * Runs the database. - * - */ - private void runDatabase() { - try { - getControl().start(new PrintWriter(System.out)); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.persistence.Database#getJdbcUrl() - */ - public String getJdbcUrl() { - return getBaseJdbcUrl() - + ";create=true;retrieveMessagesFromServerOnGetMessage=true;"; - } - - private String getBaseJdbcUrl() { - return "jdbc:derby:" + DATABASE_NAME; - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.persistence.Database#getExternalJdbcUrl() - */ - public String getExternalJdbcUrl() { - return "jdbc:derby:net://localhost:1527/" + DATABASE_NAME; - } - - /** - * Shuts down the derby database and cleans up all created files. - * - */ - private void shutdownDerby() { - try { - DriverManager.getConnection("jdbc:derby:;shutdown=true"); - throw new RuntimeException("Derby did not shutdown, " - + " should always throw exception at shutdown"); - } catch (Exception e) { - LOGGER.info("Derby has been shut down."); - } - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.persistence.Database#getDriverClassName() - */ - public String getDriverClassName() { - return ClientDriver.class.getName(); - } - - /** - * Gets the user name. - */ - public String getUsername() { - return USERNAME; - } - - /** - * Gets the password. - * - * @return - */ - public String getPassword() { - return PASSWORD; - } - - /* - * (non-Javadoc) - * - * @see org.wamblee.persistence.Database#createConnection() - */ - public Connection createConnection() throws SQLException { - Connection c = DriverManager.getConnection(getJdbcUrl(), getUsername(), - getPassword()); - - return c; - } - - /** - * Stops the derby database and cleans up all derby files. - */ - public void stop() { - try { - // shutdown network server. - getControl().shutdown(); - waitUntilStartedOrStopped(false); - - // shutdown inmemory access. - shutdownDerby(); - cleanPersistentStorage(); - } catch (Exception e) { - LOGGER.warn("Problem stopping database", e); - } - } - - /** - * Cleans up persistent storage of Derby. - */ - private void cleanPersistentStorage() { - File lFile = new File(DATABASE_PATH); - - if (lFile.isFile()) { - TestCase.fail("A regular file by the name " + DATABASE_PATH - + " exists, clean this up first"); - } - - if (!lFile.isDirectory()) { - return; // no-op already cleanup up. - } - - FileSystemUtils.deleteDirRecursively(DATABASE_PATH); - } -} diff --git a/support/general/src/test/java/org/wamblee/persistence/OracleDatabase.java b/support/general/src/test/java/org/wamblee/persistence/OracleDatabase.java deleted file mode 100644 index 6b82c632..00000000 --- a/support/general/src/test/java/org/wamblee/persistence/OracleDatabase.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2005 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.persistence; - -import java.sql.Connection; -import java.sql.SQLException; - -public class OracleDatabase implements Database { - - public OracleDatabase() { - super(); - } - - public void start() { - System.out.println("Oracle must be started externally"); - } - - public String getJdbcUrl() { - return null; - } - - public String getExternalJdbcUrl() { - return null; - } - - public String getDriverClassName() { - return null; - } - - public String getUsername() { - return null; - } - - public String getPassword() { - return null; - } - - public Connection createConnection() throws SQLException { - return null; - } - - public void stop() { - System.out.println("Oracle must be stopped externally"); - } - -} diff --git a/support/general/src/test/java/org/wamblee/persistence/DatabaseStarter.java b/support/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseStarter.java similarity index 93% rename from support/general/src/test/java/org/wamblee/persistence/DatabaseStarter.java rename to support/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseStarter.java index c0bdcc2f..44294e35 100644 --- a/support/general/src/test/java/org/wamblee/persistence/DatabaseStarter.java +++ b/support/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseStarter.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.wamblee.persistence; +package org.wamblee.support.persistence; /** @@ -47,7 +47,7 @@ public class DatabaseStarter { } catch ( Exception e ) { e.printStackTrace( ); System.out - .println( "\nUsage: ant -Ddatabase=Derby|Hypersonic startdb" ); + .println( "\nUsage: ant dbClass "); } } @@ -88,8 +88,8 @@ public class DatabaseStarter { System.out.println( ); System.out.println("======================================================="); System.out.println( "Connection details:" ); - System.out.println( " Driver class: " - + lDatabase.getDriverClassName( ) ); + // System.out.println( " Driver class: " + // + lDatabase.getDriverClassName( ) ); System.out.println( " JDBC URL: " + lDatabase.getExternalJdbcUrl( ) ); System.out.println( " username: '" + lDatabase.getUsername( ) diff --git a/system/general/pom.xml b/system/general/pom.xml index 70546d7d..615f4c4e 100644 --- a/system/general/pom.xml +++ b/system/general/pom.xml @@ -1,6 +1,8 @@ - - + + org.wamblee wamblee-utils @@ -29,6 +31,12 @@ test-jar 0.2-SNAPSHOT
+ + org.wamblee + wamblee-support-test-enterprise + 0.2-SNAPSHOT + test + diff --git a/system/general/src/test/java/org/wamblee/system/components/DatabaseComponent.java b/system/general/src/test/java/org/wamblee/system/components/DatabaseComponent.java index 5ec58512..afcc581a 100644 --- a/system/general/src/test/java/org/wamblee/system/components/DatabaseComponent.java +++ b/system/general/src/test/java/org/wamblee/system/components/DatabaseComponent.java @@ -17,8 +17,8 @@ package org.wamblee.system.components; import java.util.Properties; -import org.wamblee.persistence.Database; -import org.wamblee.persistence.DerbyDatabase; +import org.wamblee.support.persistence.Database; +import org.wamblee.support.persistence.DerbyDatabase; import org.wamblee.system.components.ORMappingConfig.DatabaseType; import org.wamblee.system.core.AbstractComponent; import org.wamblee.system.core.DefaultProvidedInterface; @@ -47,7 +47,7 @@ public class DatabaseComponent extends AbstractComponent { } else { throw new IllegalArgumentException("Unknown database type " + _database); } - props.put("database.driver", _database.getDriverClassName()); + //props.put("database.driver", _database.getDriverClassName()); props.put("database.url", _database.getJdbcUrl()); props.put("database.username", _database.getUsername()); props.put("database.password", _database.getPassword()); diff --git a/system/general/src/test/java/org/wamblee/system/components/DatabaseComponentFactory.java b/system/general/src/test/java/org/wamblee/system/components/DatabaseComponentFactory.java index b8ca2596..4c100fcc 100644 --- a/system/general/src/test/java/org/wamblee/system/components/DatabaseComponentFactory.java +++ b/system/general/src/test/java/org/wamblee/system/components/DatabaseComponentFactory.java @@ -15,22 +15,15 @@ */ package org.wamblee.system.components; -import org.wamblee.persistence.DerbyDatabase; +import org.wamblee.support.persistence.DatabaseBuilder; import org.wamblee.system.container.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"))); - */ aContainer.addComponent(new DatabaseComponent("db", - new DerbyDatabase())); + DatabaseBuilder.getDatabase())); } catch (Exception e) { throw new RuntimeException("Could not add database configuration", e); diff --git a/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java b/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java index 96d72436..a8d53d46 100644 --- a/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java +++ b/system/spring/src/main/java/org/wamblee/system/spring/component/DatasourceComponent.java @@ -56,7 +56,6 @@ public class DatasourceComponent extends AbstractComponent { 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"));