This is an automated email from the git hooks/post-receive script. New commit to branch feature/3860_introduce_topiasqlbatchsupport in repository topia. See http://git.nuiton.org/topia.git commit 4c7bf7758c4c683188098085904b0fd12a20b84a Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Jan 4 13:36:34 2016 +0100 Introduce TopiaMetadataModelSupport and add this new support to TopiaApplicationContext --- .../topia/persistence/TopiaApplicationContext.java | 3 +- .../internal/AbstractTopiaApplicationContext.java | 12 +++++++ .../support/TopiaMetadataModelSupportImpl.java | 38 ++++++++++++++++++++++ .../support/TopiaMetadataModelSupport.java | 14 ++++++++ 4 files changed, 66 insertions(+), 1 deletion(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java index eac951b..588c3fb 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaApplicationContext.java @@ -26,6 +26,7 @@ package org.nuiton.topia.persistence; import com.google.common.collect.ImmutableSet; import org.nuiton.topia.persistence.support.TopiaListenableSupport; +import org.nuiton.topia.persistence.support.TopiaMetadataModelSupport; import org.nuiton.topia.persistence.support.TopiaServiceSupport; import java.io.Closeable; @@ -65,7 +66,7 @@ import java.util.List; * @since 3.0 */ public interface TopiaApplicationContext<K extends TopiaPersistenceContext> - extends TopiaListenableSupport, TopiaServiceSupport, Closeable { + extends TopiaListenableSupport, TopiaServiceSupport, TopiaMetadataModelSupport, Closeable { /** * Creates a new instance of XxxTopiaPersistenceContext (where <code>Xxx</code> is the project name). This is the 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 f0c7be8..6a02b0d 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 @@ -52,7 +52,10 @@ import org.nuiton.topia.persistence.event.TopiaSchemaListener; import org.nuiton.topia.persistence.event.TopiaTransactionListener; import org.nuiton.topia.persistence.event.TopiaTransactionVetoable; import org.nuiton.topia.persistence.internal.support.TopiaFiresSupport; +import org.nuiton.topia.persistence.internal.support.TopiaMetadataModelSupportImpl; import org.nuiton.topia.persistence.internal.support.TopiaServiceSupportImpl; +import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; +import org.nuiton.topia.persistence.support.TopiaMetadataModelSupport; import org.nuiton.topia.persistence.support.TopiaServiceSupport; import org.nuiton.topia.persistence.util.TopiaUtil; @@ -87,6 +90,8 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence protected TopiaServiceSupport topiaServiceSupport; + protected TopiaMetadataModelSupport topiaMetadataModelSupport; + protected HibernateProvider hibernateProvider; protected TopiaHibernateSessionRegistry sessionRegistry; @@ -127,6 +132,7 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence topiaFiresSupport = new TopiaFiresSupport(); sessionRegistry = new TopiaHibernateSessionRegistry(); + topiaMetadataModelSupport = new TopiaMetadataModelSupportImpl(this); // First initialize all the services initServices(); @@ -520,4 +526,10 @@ public abstract class AbstractTopiaApplicationContext<K extends TopiaPersistence public boolean isOpened() { return ! isClosed(); } + + @Override + public TopiaMetadataModel getMetadataModel() { + return topiaMetadataModelSupport.getMetadataModel(); + } + } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaMetadataModelSupportImpl.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaMetadataModelSupportImpl.java new file mode 100644 index 0000000..4fdd915 --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/support/TopiaMetadataModelSupportImpl.java @@ -0,0 +1,38 @@ +package org.nuiton.topia.persistence.internal.support; + +import org.nuiton.topia.persistence.TopiaApplicationContext; +import org.nuiton.topia.persistence.TopiaException; +import org.nuiton.topia.persistence.TopiaPersistenceContext; +import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; +import org.nuiton.topia.persistence.support.TopiaMetadataModelSupport; + +import java.io.IOException; + +/** + * Created on 04/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public class TopiaMetadataModelSupportImpl implements TopiaMetadataModelSupport { + + private final String metadataModelPath; + + protected TopiaMetadataModel metadataModel; + + public <K extends TopiaPersistenceContext> TopiaMetadataModelSupportImpl(TopiaApplicationContext topiaApplicationContext) { + this.metadataModelPath = String.format("/%s/%sTopiaMetadataModel.json", topiaApplicationContext.getClass().getPackage().getName().replace(".", "/"), topiaApplicationContext.getModelName()); + } + + @Override + public TopiaMetadataModel getMetadataModel() { + if (metadataModel == null) { + try { + metadataModel = TopiaMetadataModel.load(getClass().getResource(metadataModelPath)); + } catch (IOException e) { + throw new TopiaException(e); + } + } + return metadataModel; + } + +} diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaMetadataModelSupport.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaMetadataModelSupport.java new file mode 100644 index 0000000..bc148ed --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/support/TopiaMetadataModelSupport.java @@ -0,0 +1,14 @@ +package org.nuiton.topia.persistence.support; + +import org.nuiton.topia.persistence.metadata.TopiaMetadataModel; + +/** + * Created on 02/01/16. + * + * @author Tony Chemit - chemit@codelutin.com + */ +public interface TopiaMetadataModelSupport { + + TopiaMetadataModel getMetadataModel(); + +} -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.