This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit 50b2e13aa363f46b0b5cf6f168f9a6403c8f6e55 Author: Brendan Le Ny <bleny@codelutin.com> Date: Thu Dec 11 15:29:28 2014 +0100 Adding some entry method in Builder --- .../persistence/TopiaConfigurationBuilder.java | 23 ++++++++++++++++++++++ .../TopiaMisconfigurationException.java | 5 +++++ .../internal/AbstractTopiaApplicationContext.java | 3 +++ .../persistence/TopiaConfigurationBuilderTest.java | 17 ++++++++++++++++ 4 files changed, 48 insertions(+) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java index 9dfd18f..3209426 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaConfigurationBuilder.java @@ -1,7 +1,9 @@ package org.nuiton.topia.persistence; +import com.google.common.io.Files; import org.apache.commons.lang3.StringUtils; +import java.io.File; import java.util.Collections; import java.util.Map; @@ -21,6 +23,14 @@ public class TopiaConfigurationBuilder { if (topiaConfiguration.getJdbcConnectionPassword() == null) { throw new TopiaMisconfigurationException("you must provide JDBC connection password", topiaConfiguration); } + if (StringUtils.isBlank(topiaConfiguration.getJdbcDriverClassName())) { + throw new TopiaMisconfigurationException("you must provide JDBC connection driver", topiaConfiguration); + } + try { + Class.forName(topiaConfiguration.getJdbcDriverClassName()); + } catch (ClassNotFoundException e) { + throw new TopiaMisconfigurationException("unable to find JDBC driver class " + topiaConfiguration.getJdbcDriverClassName() + " in classpath", e, topiaConfiguration); + } if (topiaConfiguration.isConnectionPoolingEnabled()) { if (topiaConfiguration.getConnectionPoolMinSize() == null || topiaConfiguration.getConnectionPoolMaxSize() == null) { throw new TopiaMisconfigurationException("You must configure pool size if you want it to be enabled", topiaConfiguration); @@ -56,6 +66,19 @@ public class TopiaConfigurationBuilder { return forH2Database(jdbcConnectionUrl, "sa", ""); } + public static ConfigureConnectionPoolingStep forH2Database(File file) { + String jdbcConnectionUrl = "jdbc:h2:file:" + file.getAbsolutePath(); + return forH2Database(jdbcConnectionUrl); + } + + public static ConfigureConnectionPoolingStep forH2DatabaseInTempDirectory() { + return forH2Database(Files.createTempDir()); + } + + public static ConfigureConnectionPoolingStep forInMemoryH2Database() { + throw new UnsupportedOperationException(); + } + public static ConfigureConnectionPoolingStep forDatabase(String jdbcConnectionUrl, String jdbcConnectionUser, String jdbcConnectionPassword, String jdbcDriverClassName) { TopiaConfigurationBean topiaConfigurationBean = new TopiaConfigurationBean(); topiaConfigurationBean.setJdbcConnectionUrl(jdbcConnectionUrl); diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaMisconfigurationException.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaMisconfigurationException.java index 683b2ff..e717abf 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaMisconfigurationException.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaMisconfigurationException.java @@ -14,6 +14,11 @@ public class TopiaMisconfigurationException extends TopiaException { this.topiaConfiguration = topiaConfiguration; } + public TopiaMisconfigurationException(String message, Throwable cause, TopiaConfiguration topiaConfiguration) { + super(message, cause); + this.topiaConfiguration = topiaConfiguration; + } + public TopiaConfiguration getTopiaConfiguration() { return topiaConfiguration; } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java index d7be043..87da8ce 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaApplicationContext.java @@ -37,6 +37,7 @@ import org.nuiton.topia.persistence.PropertiesTopiaConfiguration; import org.nuiton.topia.persistence.TopiaApplicationContext; import org.nuiton.topia.persistence.TopiaApplicationContextCache; import org.nuiton.topia.persistence.TopiaConfiguration; +import org.nuiton.topia.persistence.TopiaConfigurationBuilder; import org.nuiton.topia.persistence.TopiaEntity; import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.TopiaIdFactory; @@ -120,6 +121,8 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence protected void init() { + TopiaConfigurationBuilder.check(configuration); + topiaFiresSupport = new TopiaFiresSupport(); sessionRegistry = new TopiaHibernateSessionRegistry(); diff --git a/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java b/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java new file mode 100644 index 0000000..75b79f6 --- /dev/null +++ b/topia-persistence/src/test/java/org/nuiton/topia/persistence/TopiaConfigurationBuilderTest.java @@ -0,0 +1,17 @@ +package org.nuiton.topia.persistence; + +import org.junit.Test; + +public class TopiaConfigurationBuilderTest { + + @Test + public void build() { + + TopiaConfiguration topiaConfiguration = + TopiaConfigurationBuilder.forH2DatabaseInTempDirectory() + .doNotUseConnectionPooling() + .useHiberateUpdate() + .build(); + + } +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.