You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2017/10/27 07:37:26 UTC

[1/3] polygene-java git commit: Unifying the clean up of SQL tests, as they caused a lot of problems. Removed a "throws Exception" in AbstractPolygeneBaseTest.tearDown(), which is effectively breaking test compatibility, but I think worth it in the long

Repository: polygene-java
Updated Branches:
  refs/heads/develop f6a5b3384 -> db90b19ca


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java
index f3c4b93..bb6f4a9 100644
--- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java
+++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java
@@ -22,16 +22,10 @@ import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
 import java.io.Writer;
-import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
 import javax.sql.DataSource;
-import liquibase.Contexts;
-import liquibase.Liquibase;
-import liquibase.database.Database;
-import liquibase.database.ObjectQuotingStrategy;
-import liquibase.exception.LiquibaseException;
 import org.apache.polygene.api.configuration.Configuration;
 import org.apache.polygene.api.entity.EntityDescriptor;
 import org.apache.polygene.api.entity.EntityReference;
@@ -40,25 +34,27 @@ import org.apache.polygene.api.injection.scope.This;
 import org.apache.polygene.api.injection.scope.Uses;
 import org.apache.polygene.api.service.ServiceActivation;
 import org.apache.polygene.api.service.ServiceDescriptor;
-import org.apache.polygene.library.sql.liquibase.LiquibaseService;
 import org.apache.polygene.serialization.javaxjson.JavaxJsonFactories;
 import org.apache.polygene.spi.entitystore.EntityNotFoundException;
 import org.apache.polygene.spi.entitystore.helpers.JSONKeys;
 import org.apache.polygene.spi.entitystore.helpers.MapEntityStore;
+import org.jooq.ConnectionProvider;
 import org.jooq.DSLContext;
 import org.jooq.Field;
 import org.jooq.Query;
 import org.jooq.Record;
 import org.jooq.SQLDialect;
-import org.jooq.Schema;
 import org.jooq.Table;
+import org.jooq.TransactionProvider;
 import org.jooq.conf.Settings;
 import org.jooq.impl.DSL;
+import org.jooq.impl.DataSourceConnectionProvider;
+import org.jooq.impl.DefaultConfiguration;
+import org.jooq.impl.ThreadLocalTransactionProvider;
 
 public class SQLEntityStoreMixin
     implements ServiceActivation, MapEntityStore
 {
-    private static final String TABLE_NAME_LIQUIBASE_PARAMETER = "es-sql.table";
     private static final String IDENTITY_COLUMN_NAME = "ENTITY_IDENTITY";
     private static final String VERSION_COLUMN_NAME = "ENTITY_VERSION";
     private static final String STATE_COLUMN_NAME = "ENTITY_STATE";
@@ -67,9 +63,6 @@ public class SQLEntityStoreMixin
     private DataSource dataSource;
 
     @Service
-    private LiquibaseService liquibaseService;
-
-    @Service
     private JavaxJsonFactories jsonFactories;
 
     @Uses
@@ -78,7 +71,6 @@ public class SQLEntityStoreMixin
     @This
     private Configuration<SQLEntityStoreConfiguration> configuration;
 
-    private Schema schema;
     private Table<Record> table;
     private Field<String> identityColumn;
     private Field<String> versionColumn;
@@ -86,7 +78,8 @@ public class SQLEntityStoreMixin
     private DSLContext dsl;
 
     @Override
-    public void activateService() throws Exception
+    public void activateService()
+        throws Exception
     {
         configuration.refresh();
         SQLEntityStoreConfiguration config = configuration.get();
@@ -94,66 +87,36 @@ public class SQLEntityStoreMixin
         // Prepare jooq DSL
         SQLDialect dialect = descriptor.metaInfo( SQLDialect.class );
         Settings settings = descriptor.metaInfo( Settings.class );
-        String schemaName = config.schemaName().get();
         String tableName = config.entityTableName().get();
-        schema = DSL.schema( DSL.name( schemaName ) );
-        table = DSL.table(
-            dialect.equals( SQLDialect.SQLITE )
-            ? DSL.name( tableName )
-            : DSL.name( schema.getName(), tableName )
-        );
+        ConnectionProvider connectionProvider = new DataSourceConnectionProvider( dataSource );
+        TransactionProvider transactionProvider = new ThreadLocalTransactionProvider( connectionProvider, false );
+        org.jooq.Configuration configuration = new DefaultConfiguration()
+            .set( dialect )
+            .set( connectionProvider )
+            .set( transactionProvider )
+            .set( settings );
+        dsl = DSL.using( configuration );
+        table = DSL.table( DSL.name( tableName ) );
         identityColumn = DSL.field( DSL.name( IDENTITY_COLUMN_NAME ), String.class );
         versionColumn = DSL.field( DSL.name( VERSION_COLUMN_NAME ), String.class );
         stateColumn = DSL.field( DSL.name( STATE_COLUMN_NAME ), String.class );
-        dsl = DSL.using( dataSource, dialect, settings );
 
-        // Eventually create schema and apply Liquibase changelog
         if( config.createIfMissing().get() )
         {
-            if( !dialect.equals( SQLDialect.SQLITE )
-                && dsl.meta().getSchemas().stream().noneMatch( s -> schema.getName().equalsIgnoreCase( s.getName() ) ) )
-            {
-                dsl.createSchema( schema ).execute();
-            }
-
-            applyLiquibaseChangelog( dialect );
-        }
-    }
-
-    private void applyLiquibaseChangelog( SQLDialect dialect ) throws SQLException, LiquibaseException
-    {
-        Liquibase liquibase = liquibaseService.newConnectedLiquibase();
-        Database db = liquibase.getDatabase();
-        db.setObjectQuotingStrategy( ObjectQuotingStrategy.QUOTE_ALL_OBJECTS );
-        try
-        {
-            if( !dialect.equals( SQLDialect.SQLITE ) )
-            {
-                if( db.supportsSchemas() )
-                {
-                    db.setDefaultSchemaName( schema.getName() );
-                    db.setLiquibaseSchemaName( schema.getName() );
-                }
-                if( db.supportsCatalogs() )
-                {
-                    db.setDefaultCatalogName( schema.getName() );
-                    db.setLiquibaseCatalogName( schema.getName() );
-                }
-            }
-            liquibase.getChangeLogParameters().set( TABLE_NAME_LIQUIBASE_PARAMETER, table.getName() );
-            liquibase.update( new Contexts() );
-        }
-        finally
-        {
-            db.close();
+            dsl.transaction( t -> dsl.createTableIfNotExists( table )
+                                     .column( identityColumn )
+                                     .column( versionColumn )
+                                     .column( stateColumn )
+                                     .constraint( DSL.primaryKey( identityColumn ) )
+                                     .execute() );
         }
     }
 
     @Override
-    public void passivateService() throws Exception
+    public void passivateService()
+        throws Exception
     {
         dsl = null;
-        schema = null;
         table = null;
         identityColumn = null;
         versionColumn = null;
@@ -182,7 +145,8 @@ public class SQLEntityStoreMixin
     }
 
     @Override
-    public void applyChanges( MapChanges changes ) throws Exception
+    public void applyChanges( MapChanges changes )
+        throws Exception
     {
         List<Query> operations = new ArrayList<>();
         changes.visitMap( new MapChanger()
@@ -193,7 +157,8 @@ public class SQLEntityStoreMixin
                 return new StringWriter( 1000 )
                 {
                     @Override
-                    public void close() throws IOException
+                    public void close()
+                        throws IOException
                     {
                         super.close();
                         String state = toString();
@@ -204,7 +169,7 @@ public class SQLEntityStoreMixin
                             dsl.insertInto( table )
                                .columns( identityColumn, versionColumn, stateColumn )
                                .values( ref.identity().toString(), version, state )
-                        );
+                                      );
                     }
                 };
             }
@@ -215,7 +180,8 @@ public class SQLEntityStoreMixin
                 return new StringWriter( 1000 )
                 {
                     @Override
-                    public void close() throws IOException
+                    public void close()
+                        throws IOException
                     {
                         super.close();
                         String state = toString();
@@ -225,7 +191,7 @@ public class SQLEntityStoreMixin
                                .set( stateColumn, state )
                                .where( identityColumn.equal( mapChange.reference().identity().toString() ) )
                                .and( versionColumn.equal( mapChange.previousVersion() ) )
-                        );
+                                      );
                     }
                 };
             }
@@ -236,9 +202,9 @@ public class SQLEntityStoreMixin
                 operations.add(
                     dsl.deleteFrom( table )
                        .where( identityColumn.equal( ref.identity().toString() ) )
-                );
+                              );
             }
         } );
-        dsl.batch( operations ).execute();
+        dsl.transaction( t -> dsl.batch( operations ).execute() );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java
index c2f7eb2..0925d30 100644
--- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java
@@ -24,8 +24,6 @@ import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreConfiguration;
 import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreService;
-import org.apache.polygene.library.sql.liquibase.LiquibaseAssembler;
-import org.apache.polygene.library.sql.liquibase.LiquibaseConfiguration;
 import org.jooq.SQLDialect;
 import org.jooq.conf.RenderNameStyle;
 import org.jooq.conf.Settings;
@@ -33,8 +31,7 @@ import org.jooq.conf.Settings;
 /**
  * Base SQL EntityStore assembly.
  */
-public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
-    extends Assemblers.VisibilityIdentityConfig<AssemblerType>
+public abstract class AbstractSQLEntityStoreAssembler<AssemblerType> extends Assemblers.VisibilityIdentityConfig<AssemblerType>
 {
     public static final Identity DEFAULT_ENTITYSTORE_IDENTITY = StringIdentity.identityOf( "entitystore-sqlkv" );
     private static final String DEFAULT_CHANGELOG_PATH = "org/apache/polygene/entitystore/sql/changelog.xml";
@@ -58,16 +55,6 @@ public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
 
         String identity = ( hasIdentity() ? identity() : DEFAULT_ENTITYSTORE_IDENTITY ).toString();
 
-        LiquibaseAssembler liquibase = new LiquibaseAssembler().identifiedBy( identity + "-liquibase" );
-        if( hasConfig() )
-        {
-            liquibase.withConfig( configModule(), configVisibility() );
-            LiquibaseConfiguration liquibaseconfig = configModule().forMixin( LiquibaseConfiguration.class )
-                                                                   .declareDefaults();
-            liquibaseconfig.changeLog().set( changelogPath );
-        }
-        liquibase.assemble( module );
-
         module.services( SQLEntityStoreService.class )
               .identifiedBy( identity )
               .visibleIn( visibility() )
@@ -80,12 +67,6 @@ public abstract class AbstractSQLEntityStoreAssembler<AssemblerType>
         }
     }
 
-    public AssemblerType withLiquibaseChangelog( String changelogPath )
-    {
-        this.changelogPath = changelogPath;
-        return (AssemblerType) this;
-    }
-
     protected Settings getSettings()
     {
         return new Settings().withRenderNameStyle( RenderNameStyle.QUOTED );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.java
index 9110b80..96bbbc4 100644
--- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.java
+++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.java
@@ -24,8 +24,7 @@ import org.jooq.SQLDialect;
 /**
  * Derby EntityStore assembly.
  */
-public class DerbySQLEntityStoreAssembler
-    extends AbstractSQLEntityStoreAssembler<DerbySQLEntityStoreAssembler>
+public class DerbySQLEntityStoreAssembler extends AbstractSQLEntityStoreAssembler<DerbySQLEntityStoreAssembler>
 {
     @Override
     protected SQLDialect getSQLDialect()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MariaDbSQLEntityStoreAssembler.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MariaDbSQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MariaDbSQLEntityStoreAssembler.java
new file mode 100644
index 0000000..6ae59f0
--- /dev/null
+++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MariaDbSQLEntityStoreAssembler.java
@@ -0,0 +1,35 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.apache.polygene.entitystore.sqlkv.assembly;
+
+import org.jooq.SQLDialect;
+
+/**
+ * MySQL EntityStore assembly.
+ */
+public class MariaDbSQLEntityStoreAssembler
+    extends AbstractSQLEntityStoreAssembler<MariaDbSQLEntityStoreAssembler>
+{
+    @Override
+    protected SQLDialect getSQLDialect()
+    {
+        return SQLDialect.MARIADB;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/resources/org/apache/polygene/entitystore/sql/changelog.xml
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/resources/org/apache/polygene/entitystore/sql/changelog.xml b/extensions/entitystore-sqlkv/src/main/resources/org/apache/polygene/entitystore/sql/changelog.xml
deleted file mode 100644
index 47ef554..0000000
--- a/extensions/entitystore-sqlkv/src/main/resources/org/apache/polygene/entitystore/sql/changelog.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one
-  ~  or more contributor license agreements.  See the NOTICE file
-  ~  distributed with this work for additional information
-  ~  regarding copyright ownership.  The ASF licenses this file
-  ~  to you 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.
-  -->
-<databaseChangeLog
-        xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd"
-        objectQuotingStrategy="QUOTE_ALL_OBJECTS">
-    <changeSet id="0" author="paul">
-        <createTable tableName="${es-sql.table}">
-            <column name="ENTITY_IDENTITY" type="varchar(64)">
-                <constraints primaryKey="true" nullable="false"/>
-            </column>
-            <column name="ENTITY_VERSION" type="varchar(64)">
-                <constraints nullable="false"/>
-            </column>
-            <column name="ENTITY_STATE" type="varchar(10240)">
-                <constraints nullable="false"/>
-            </column>
-        </createTable>
-    </changeSet>
-</databaseChangeLog>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTest.java
index 627699f..161ee07 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTest.java
@@ -19,25 +19,18 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreConfiguration;
 import org.apache.polygene.entitystore.sqlkv.assembly.DerbySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
-import static org.apache.polygene.entitystore.sqlkv.assembly.DerbySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
-
-public class DerbySQLEntityStoreTest
-    extends AbstractEntityStoreTest
+public class DerbySQLEntityStoreTest extends AbstractEntityStoreTest
 {
     @Override
     // START SNIPPET: assembly
@@ -74,29 +67,9 @@ public class DerbySQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        UnitOfWork uow = this.unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase(
-            "Delete " + getClass().getSimpleName() + " test data" ) );
-        try
-        {
-            SQLEntityStoreConfiguration config = uow.get( SQLEntityStoreConfiguration.class,
-                                                          DEFAULT_ENTITYSTORE_IDENTITY );
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            connection.setAutoCommit( false );
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "DELETE FROM %s.%s",
-                                             config.schemaName().get(),
-                                             config.entityTableName().get() ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( moduleInstance, SQLDialect.DERBY, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTestSuite.java
index b5d3949..cc61b84 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/DerbySQLEntityStoreTestSuite.java
@@ -19,22 +19,16 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.api.structure.Module;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
 import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreConfiguration;
 import org.apache.polygene.entitystore.sqlkv.assembly.DerbySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
-
-import static org.apache.polygene.entitystore.sqlkv.assembly.DerbySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
 public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
@@ -65,31 +59,9 @@ public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite
     }
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer","Storage Module" );
-        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
-        UnitOfWork uow = uowf.newUnitOfWork( UsecaseBuilder.newUsecase(
-            "Delete " + getClass().getSimpleName() + " test data" ) );
-        try
-        {
-            SQLEntityStoreConfiguration config = uow.get( SQLEntityStoreConfiguration.class,
-                                                          DEFAULT_ENTITYSTORE_IDENTITY );
-            Connection connection = storageModule.serviceFinder().findService( DataSource.class ).get().getConnection();
-            connection.setAutoCommit( false );
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "DELETE FROM %s.%s",
-                                             config.schemaName().get(),
-                                             config.entityTableName().get() ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.DERBY, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTest.java
index 1303106..8575cfb 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTest.java
@@ -27,9 +27,10 @@ import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
-public class H2SQLEntityStoreTest
-    extends AbstractEntityStoreTest
+public class H2SQLEntityStoreTest extends AbstractEntityStoreTest
 {
     @Override
     // START SNIPPET: assembly
@@ -64,4 +65,11 @@ public class H2SQLEntityStoreTest
             .assemble( module );
     }
     // END SNIPPET: assembly
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.H2, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTestSuite.java
index daa3030..b4b736e 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/H2SQLEntityStoreTestSuite.java
@@ -25,6 +25,8 @@ import org.apache.polygene.entitystore.sqlkv.assembly.H2SQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
 public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
@@ -53,4 +55,11 @@ public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite
             .withConfig( configModule, Visibility.application )
             .assemble( module );
     }
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.H2, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTest.java
new file mode 100644
index 0000000..fbc12f3
--- /dev/null
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTest.java
@@ -0,0 +1,103 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.apache.polygene.entitystore.sqlkv;
+
+import java.util.HashMap;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.EntityTestAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+
+@Ignore( "Waiting response from JOOQ to fix SQL generation. VARCHAR instead of CHAR")
+public class MariaDbEntityStoreTest extends AbstractEntityStoreTest
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule(
+        "mariadb",
+        new HashMap<String, String>()
+        {{
+            put( "MYSQL_ROOT_PASSWORD", "" );
+            put( "MYSQL_ALLOW_EMPTY_PASSWORD", "yes" );
+            put( "MYSQL_DATABASE", "jdbc_test_db" );
+            put( "MYSQL_ROOT_HOST", "172.17.0.1" );
+        }},
+        30000L
+//        , "mysqld: ready for connections"   TODO: add this after next release of tdomzal/junit-docker-rule
+    );
+
+    @Override
+    // START SNIPPET: assembly
+    public void assemble( ModuleAssembly module )
+        throws AssemblyException
+    {
+        // END SNIPPET: assembly
+        super.assemble( module );
+        ModuleAssembly config = module.layer().module( "config" );
+        new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
+
+        // START SNIPPET: assembly
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "mysql-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( config, Visibility.layer )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "mysql-datasource-service" )
+            .identifiedBy( "mysql-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new MySQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( config, Visibility.layer )
+            .assemble( module );
+        // END SNIPPET: assembly
+        String mysqlHost = DOCKER.getDockerHost();
+        int mysqlPort = DOCKER.getExposedContainerPort( "3306/tcp" );
+        config.forMixin( DataSourceConfiguration.class ).declareDefaults()
+              .url().set( "jdbc:mysql://" + mysqlHost + ":" + mysqlPort
+                          + "/jdbc_test_db?profileSQL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"
+                          + "&nullCatalogMeansCurrent=true&nullNamePatternMatchesAll=true" );
+        // START SNIPPET: assembly
+    }
+    // END SNIPPET: assembly
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.MARIADB, super::tearDown );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTestSuite.java
new file mode 100644
index 0000000..1c4502a
--- /dev/null
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MariaDbEntityStoreTestSuite.java
@@ -0,0 +1,92 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you 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.apache.polygene.entitystore.sqlkv;
+
+import java.util.HashMap;
+import org.apache.polygene.api.common.Visibility;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler;
+import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
+import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
+import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
+import org.apache.polygene.test.docker.DockerRule;
+import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
+import org.junit.ClassRule;
+import org.junit.Ignore;
+
+@Ignore( "Waiting response from JOOQ to fix SQL generation. VARCHAR instead of CHAR")
+public class MariaDbEntityStoreTestSuite extends EntityStoreTestSuite
+{
+    @ClassRule
+    public static final DockerRule DOCKER = new DockerRule(
+        "mariadb",
+        new HashMap<String, String>()
+        {{
+            put( "MYSQL_ROOT_PASSWORD", "" );
+            put( "MYSQL_ALLOW_EMPTY_PASSWORD", "yes" );
+            put( "MYSQL_DATABASE", "jdbc_test_db" );
+            put( "MYSQL_ROOT_HOST", "172.17.0.1" );
+        }},
+        30000L
+//        , "mysqld: ready for connections"   TODO: add this after next release of tdomzal/junit-docker-rule
+    );
+
+    @Override
+    protected void defineStorageModule( ModuleAssembly module )
+    {
+        module.defaultServices();
+        // DataSourceService
+        new DBCPDataSourceServiceAssembler()
+            .identifiedBy( "mysql-datasource-service" )
+            .visibleIn( Visibility.module )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        // DataSource
+        new DataSourceAssembler()
+            .withDataSourceServiceIdentity( "mysql-datasource-service" )
+            .identifiedBy( "mysql-datasource" )
+            .visibleIn( Visibility.module )
+            .withCircuitBreaker()
+            .assemble( module );
+
+        // SQL EntityStore
+        new MySQLEntityStoreAssembler()
+            .visibleIn( Visibility.application )
+            .withConfig( configModule, Visibility.application )
+            .assemble( module );
+
+        String mysqlHost = DOCKER.getDockerHost();
+        int mysqlPort = DOCKER.getExposedContainerPort( "3306/tcp" );
+        configModule.forMixin( DataSourceConfiguration.class ).declareDefaults()
+                    .url().set( "jdbc:mysql://" + mysqlHost + ":" + mysqlPort
+                                + "/jdbc_test_db?profileSQL=false&useLegacyDatetimeCode=false&serverTimezone=UTC"
+                                + "&nullCatalogMeansCurrent=true&nullNamePatternMatchesAll=true" );
+    }
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.MARIADB, super::tearDown );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTest.java
index 3c9f689..4e45ec8 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTest.java
@@ -19,16 +19,10 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
 import java.util.HashMap;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreConfiguration;
 import org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
@@ -36,12 +30,13 @@ import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
+import org.junit.Ignore;
 
-import static org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
-
-public class MySQLEntityStoreTest
-    extends AbstractEntityStoreTest
+@Ignore( "Waiting response from JOOQ to fix SQL generation. VARCHAR instead of CHAR")
+public class MySQLEntityStoreTest extends AbstractEntityStoreTest
 {
     @ClassRule
     public static final DockerRule DOCKER = new DockerRule(
@@ -100,29 +95,9 @@ public class MySQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
-    public void tearDown() throws Exception
+    @After
+    public void tearDown()
     {
-        UnitOfWork uow = this.unitOfWorkFactory.newUnitOfWork(
-            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
-        );
-        try
-        {
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            SQLEntityStoreConfiguration configuration = uow.get( SQLEntityStoreConfiguration.class,
-                                                                 DEFAULT_ENTITYSTORE_IDENTITY );
-            connection.setAutoCommit( false );
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "TRUNCATE %s.%s",
-                                             configuration.schemaName().get(),
-                                             configuration.entityTableName().get() ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( moduleInstance, SQLDialect.MYSQL, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTestSuite.java
index 65f6b72..349ad3f 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/MySQLEntityStoreTestSuite.java
@@ -19,28 +19,21 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
 import java.util.HashMap;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.service.ServiceFinder;
-import org.apache.polygene.api.structure.Module;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.sqlkv.SQLEntityStoreConfiguration;
 import org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
+import org.junit.Ignore;
 
-import static org.apache.polygene.entitystore.sqlkv.assembly.MySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
-
+@Ignore( "Waiting response from JOOQ to fix SQL generation. VARCHAR instead of CHAR")
 public class MySQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
     @ClassRule
@@ -91,33 +84,9 @@ public class MySQLEntityStoreTestSuite extends EntityStoreTestSuite
     }
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
-        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
-        ServiceFinder serviceFinder = storageModule.serviceFinder();
-        UnitOfWork uow = uowf.newUnitOfWork(
-            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
-                                                             );
-        try
-        {
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            SQLEntityStoreConfiguration configuration = uow.get( SQLEntityStoreConfiguration.class,
-                                                                 DEFAULT_ENTITYSTORE_IDENTITY );
-            connection.setAutoCommit( false );
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "TRUNCATE %s.%s",
-                                             configuration.schemaName().get(),
-                                             configuration.entityTableName().get() ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.MYSQL, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
index 2525265..1abfa3f 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
@@ -19,28 +19,21 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sqlkv.assembly.PostgreSQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
-import org.apache.polygene.library.sql.common.SQLConfiguration;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 
-import static org.apache.polygene.entitystore.sqlkv.assembly.PostgreSQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
-
-public class PostgreSQLEntityStoreTest
-    extends AbstractEntityStoreTest
+public class PostgreSQLEntityStoreTest extends AbstractEntityStoreTest
 {
     @ClassRule
     public static final DockerRule DOCKER = new DockerRule( "postgres",
@@ -88,28 +81,9 @@ public class PostgreSQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        UnitOfWork uow = unitOfWorkFactory.newUnitOfWork(
-            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
-        );
-        try
-        {
-            SQLConfiguration config = uow.get( SQLConfiguration.class, DEFAULT_ENTITYSTORE_IDENTITY );
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            connection.setAutoCommit( false );
-            String schemaName = config.schemaName().get();
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "DROP SCHEMA \"%s\" CASCADE", schemaName ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( moduleInstance, SQLDialect.POSTGRES, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
index 93e73e8..5e975b7 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
@@ -19,27 +19,18 @@
  */
 package org.apache.polygene.entitystore.sqlkv;
 
-import java.sql.Connection;
-import java.sql.Statement;
-import javax.sql.DataSource;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.service.ServiceFinder;
-import org.apache.polygene.api.structure.Module;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.api.usecase.UsecaseBuilder;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sqlkv.assembly.PostgreSQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
-import org.apache.polygene.library.sql.common.SQLConfiguration;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 
-import static org.apache.polygene.entitystore.sqlkv.assembly.PostgreSQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY;
-
 public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
     @ClassRule
@@ -81,31 +72,9 @@ public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
-        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
-        ServiceFinder serviceFinder = storageModule.serviceFinder();
-        UnitOfWork uow = uowf.newUnitOfWork(
-            UsecaseBuilder.newUsecase( "Delete " + getClass().getSimpleName() + " test data" )
-                                           );
-        try
-        {
-            SQLConfiguration config = uow.get( SQLConfiguration.class, DEFAULT_ENTITYSTORE_IDENTITY );
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            connection.setAutoCommit( false );
-            String schemaName = config.schemaName().get();
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "DROP SCHEMA \"%s\" CASCADE", schemaName ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-            super.tearDown();
-        }
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.POSTGRES, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTest.java
index d554cd6..a74e0c3 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTest.java
@@ -27,6 +27,8 @@ import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.BeforeClass;
 
 import static org.apache.polygene.test.util.Assume.assumeNoIbmJdk;
@@ -72,4 +74,11 @@ public class SQLiteEntityStoreTest extends AbstractEntityStoreTest
             .assemble( module );
     }
     // END SNIPPET: assembly
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.SQLITE, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTestSuite.java
index 5ae254f..a73040c 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/SQLiteEntityStoreTestSuite.java
@@ -25,6 +25,8 @@ import org.apache.polygene.entitystore.sqlkv.assembly.SQLiteEntityStoreAssembler
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.BeforeClass;
 
 import static org.apache.polygene.test.util.Assume.assumeNoIbmJdk;
@@ -62,4 +64,11 @@ public class SQLiteEntityStoreTestSuite extends EntityStoreTestSuite
             .withConfig( configModule, Visibility.application )
             .assemble( module );
     }
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.SQLITE, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/TearDown.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/TearDown.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/TearDown.java
new file mode 100644
index 0000000..6aaa6cb
--- /dev/null
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/TearDown.java
@@ -0,0 +1,81 @@
+package org.apache.polygene.entitystore.sqlkv;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import javax.sql.DataSource;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.jooq.SQLDialect;
+
+class TearDown
+{
+    static void dropTables( Module module, SQLDialect dialect, Runnable after )
+    {
+        if( module == null ){
+            System.err.println( "WARNING: 'module' was null. Happens if there was a pre-activation error. Otherwise an InternalError" );
+        }
+        UnitOfWorkFactory unitOfWorkFactory = module.unitOfWorkFactory();
+        ServiceFinder serviceFinder = module.serviceFinder();
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Cleaning up. Drop Tables" ) ) )
+        {
+            try( Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection() )
+            {
+                connection.setAutoCommit( true );
+                try( Statement stmt = connection.createStatement() )
+                {
+                    dropTable( dialect, stmt, "POLYGENE_ENTITIES" );
+                }
+            }
+        }
+        catch( SQLException e )
+        {
+            throw new RuntimeException( "Unable to clean up tables.", e );
+        }
+        finally
+        {
+            after.run();
+        }
+    }
+
+    private static void dropTable( SQLDialect dialect, Statement stmt, String tableName )
+    {
+        try
+        {
+            if( dialect == SQLDialect.MYSQL || dialect == SQLDialect.MARIADB )
+            {
+                stmt.execute( String.format( "DROP TABLE `%s`", tableName ) );
+            }
+            else
+            {
+                stmt.execute( String.format( "DROP TABLE \"%s\"", tableName ) );
+            }
+        }
+        catch( SQLException e )
+        {
+            //  ignore. Not all tables will be present in all tests.
+        }
+    }
+
+    private static void dropIndex( SQLDialect dialect, Statement stmt, String tableName )
+    {
+        try
+        {
+            if( dialect == SQLDialect.MYSQL || dialect == SQLDialect.MARIADB )
+            {
+                stmt.execute( String.format( "DROP INDEX `IDX_%s`", tableName ) );
+            }
+            else
+            {
+                stmt.execute( String.format( "DROP INDEX \"IDX_%s\"", tableName ) );
+            }
+        }
+        catch( SQLException e )
+        {
+            //  ignore. Not all tables will be present in all tests.
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmHistoryImplTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmHistoryImplTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmHistoryImplTest.java
index 5bf2ac8..d5b861b 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmHistoryImplTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmHistoryImplTest.java
@@ -73,7 +73,6 @@ public class AlarmHistoryImplTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         if ( unitOfWorkFactory.isUnitOfWorkActive())
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmPointImplTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmPointImplTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmPointImplTest.java
index 2281e34..42109fa 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmPointImplTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmPointImplTest.java
@@ -71,7 +71,6 @@ public class AlarmPointImplTest extends AbstractPolygeneTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         if( unitOfWorkFactory.isUnitOfWorkActive() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmServiceTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmServiceTest.java
index 43af0b6..0c39afe 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmServiceTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/AlarmServiceTest.java
@@ -74,7 +74,6 @@ public class AlarmServiceTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         if ( unitOfWorkFactory.isUnitOfWorkActive())
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/ExtendedAlarmModelTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/ExtendedAlarmModelTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/ExtendedAlarmModelTest.java
index 69fb835..56f122a 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/ExtendedAlarmModelTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/ExtendedAlarmModelTest.java
@@ -75,7 +75,6 @@ public class ExtendedAlarmModelTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
         if( uow != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/SimpleAlarmModelTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/SimpleAlarmModelTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/SimpleAlarmModelTest.java
index a4c402f..1c93d2f 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/SimpleAlarmModelTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/SimpleAlarmModelTest.java
@@ -75,7 +75,6 @@ public class SimpleAlarmModelTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
         if( uow != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/StandardAlarmModelTest.java
----------------------------------------------------------------------
diff --git a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/StandardAlarmModelTest.java b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/StandardAlarmModelTest.java
index deaa8fe..20f6440 100644
--- a/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/StandardAlarmModelTest.java
+++ b/libraries/alarm/src/test/java/org/apache/polygene/library/alarm/StandardAlarmModelTest.java
@@ -77,7 +77,6 @@ public class StandardAlarmModelTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         UnitOfWork uow = unitOfWorkFactory.currentUnitOfWork();
         if( uow != null )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/tests/performance/src/perf/java/org/apache/polygene/test/performance/entitystore/sql/DerbySQLEntityStorePerformanceTest.java
----------------------------------------------------------------------
diff --git a/tests/performance/src/perf/java/org/apache/polygene/test/performance/entitystore/sql/DerbySQLEntityStorePerformanceTest.java b/tests/performance/src/perf/java/org/apache/polygene/test/performance/entitystore/sql/DerbySQLEntityStorePerformanceTest.java
index e034c38..291f19f 100644
--- a/tests/performance/src/perf/java/org/apache/polygene/test/performance/entitystore/sql/DerbySQLEntityStorePerformanceTest.java
+++ b/tests/performance/src/perf/java/org/apache/polygene/test/performance/entitystore/sql/DerbySQLEntityStorePerformanceTest.java
@@ -92,8 +92,7 @@ public class DerbySQLEntityStorePerformanceTest
             connection.setAutoCommit( false );
             try( Statement stmt = connection.createStatement() )
             {
-                stmt.execute( String.format( "DELETE FROM %s.%s",
-                                             config.schemaName().get(),
+                stmt.execute( String.format( "DELETE FROM \"%s\"",
                                              config.entityTableName().get() ) );
                 connection.commit();
             }


[3/3] polygene-java git commit: More fixing due to the autoCommit OFF that I think I enabled earlier. OR that we have a new JOOQ version and the default transaction/connection handler isn't good enough.

Posted by ni...@apache.org.
More fixing due to the autoCommit OFF that I think I enabled earlier. OR that we have a new JOOQ version and the default transaction/connection handler isn't good enough.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/db90b19c
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/db90b19c
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/db90b19c

Branch: refs/heads/develop
Commit: db90b19ca9d0984fd399175dc9cf04619aed6c12
Parents: 27dc60c
Author: niclas <ni...@hedhman.org>
Authored: Fri Oct 27 15:36:42 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Oct 27 15:36:42 2017 +0800

----------------------------------------------------------------------
 .../sql/PostgreSQLEntityStoreTest.java          | 15 +++-
 .../sql/PostgreSQLEntityStoreTestSuite.java     |  3 +-
 .../sqlkv/PostgreSQLEntityStoreTest.java        | 15 +++-
 .../sqlkv/PostgreSQLEntityStoreTestSuite.java   |  3 +-
 .../sql/liquibase/LiquibaseServiceTest.java     | 75 ++++++++++++--------
 5 files changed, 78 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/db90b19c/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
index 3813220..f790a69 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
@@ -49,7 +49,7 @@ public class PostgreSQLEntityStoreTest
 
         DOCKER = new DockerRule( "postgres",
                                  environment,
-                                 3000L,
+                                 5000L,
                                  "PostgreSQL init process complete; ready for start up." );
     }
 
@@ -59,6 +59,7 @@ public class PostgreSQLEntityStoreTest
         throws AssemblyException
     {
         // END SNIPPET: assembly
+        delay();
         super.assemble( module );
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
@@ -97,6 +98,18 @@ public class PostgreSQLEntityStoreTest
 
         // START SNIPPET: assembly
     }
+
+    static void delay()
+    {
+        try
+        {
+            Thread.sleep( 5000L );
+        }
+        catch( InterruptedException e )
+        {
+            // ignore.
+        }
+    }
     // END SNIPPET: assembly
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/db90b19c/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
index 6c7dcd4..7a10131 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
@@ -46,13 +46,14 @@ public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
 
         DOCKER = new DockerRule( "postgres",
                                  environment,
-                                 3000L,
+                                 5000L,
                                  "PostgreSQL init process complete; ready for start up." );
     }
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
+        PostgreSQLEntityStoreTest.delay();
         module.defaultServices();
         // DataSourceService
         new DBCPDataSourceServiceAssembler()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/db90b19c/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
index 1abfa3f..b4552de 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTest.java
@@ -37,7 +37,7 @@ public class PostgreSQLEntityStoreTest extends AbstractEntityStoreTest
 {
     @ClassRule
     public static final DockerRule DOCKER = new DockerRule( "postgres",
-                                                            3000L,
+                                                            5000L,
                                                             "PostgreSQL init process complete; ready for start up." );
 
     @Override
@@ -46,6 +46,7 @@ public class PostgreSQLEntityStoreTest extends AbstractEntityStoreTest
         throws AssemblyException
     {
         // END SNIPPET: assembly
+        delay();
         super.assemble( module );
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
@@ -78,6 +79,18 @@ public class PostgreSQLEntityStoreTest extends AbstractEntityStoreTest
         defaults.url().set( "jdbc:postgresql://" + host + ":" + port + "/jdbc_test_db" );
         // START SNIPPET: assembly
     }
+
+    static void delay()
+    {
+        try
+        {
+            Thread.sleep( 5000L );
+        }
+        catch( InterruptedException e )
+        {
+            // ignore;
+        }
+    }
     // END SNIPPET: assembly
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/db90b19c/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
index 5e975b7..ee45f23 100644
--- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sqlkv/PostgreSQLEntityStoreTestSuite.java
@@ -35,12 +35,13 @@ public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
     @ClassRule
     public static final DockerRule DOCKER = new DockerRule( "postgres",
-                                                            3000L,
+                                                            5000L,
                                                             "PostgreSQL init process complete; ready for start up." );
 
     @Override
     protected void defineStorageModule( ModuleAssembly module )
     {
+        PostgreSQLEntityStoreTest.delay();
         module.defaultServices();
         // DataSourceService
         new DBCPDataSourceServiceAssembler()

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/db90b19c/libraries/sql-liquibase/src/test/java/org/apache/polygene/library/sql/liquibase/LiquibaseServiceTest.java
----------------------------------------------------------------------
diff --git a/libraries/sql-liquibase/src/test/java/org/apache/polygene/library/sql/liquibase/LiquibaseServiceTest.java b/libraries/sql-liquibase/src/test/java/org/apache/polygene/library/sql/liquibase/LiquibaseServiceTest.java
index fd39fb3..dd9ff28 100644
--- a/libraries/sql-liquibase/src/test/java/org/apache/polygene/library/sql/liquibase/LiquibaseServiceTest.java
+++ b/libraries/sql-liquibase/src/test/java/org/apache/polygene/library/sql/liquibase/LiquibaseServiceTest.java
@@ -35,13 +35,18 @@ import org.apache.polygene.bootstrap.SingletonAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
+import org.jooq.ConnectionProvider;
 import org.jooq.DSLContext;
 import org.jooq.Field;
 import org.jooq.InsertValuesStep2;
 import org.jooq.Record;
 import org.jooq.SQLDialect;
 import org.jooq.Table;
+import org.jooq.TransactionProvider;
 import org.jooq.impl.DSL;
+import org.jooq.impl.DataSourceConnectionProvider;
+import org.jooq.impl.DefaultConfiguration;
+import org.jooq.impl.ThreadLocalTransactionProvider;
 import org.junit.Test;
 
 import static java.util.stream.Collectors.toList;
@@ -58,7 +63,8 @@ import static org.junit.Assert.assertTrue;
 public class LiquibaseServiceTest
 {
     @Test
-    public void testLiquibase() throws ActivationException
+    public void testLiquibase()
+        throws ActivationException
     {
         final SingletonAssembler assembler = new SingletonAssembler()
         {
@@ -105,38 +111,49 @@ public class LiquibaseServiceTest
         DataSource ds = module.findService( DataSource.class ).get();
 
         // Prepare jOOQ and the schema model
-        DSLContext jooq = DSL.using( ds, SQLDialect.DERBY );
+        SQLDialect dialect = SQLDialect.DERBY;
+        ConnectionProvider connectionProvider = new DataSourceConnectionProvider( ds );
+        TransactionProvider transactionProvider = new ThreadLocalTransactionProvider( connectionProvider, false );
+        org.jooq.Configuration configuration = new DefaultConfiguration()
+            .set( dialect )
+            .set( connectionProvider )
+            .set( transactionProvider );
+        DSLContext jooq = DSL.using( configuration );
+
         Table<Record> testTable = table( "TEST" );
         Field<String> idColumn = field( "ID", String.class );
         Field<String> fooColumn = field( "FOO", String.class );
 
-        // Assert that insertion works
-        InsertValuesStep2 insert = jooq.insertInto( testTable )
-                                       .columns( idColumn, fooColumn )
-                                       .values( "someid", "bar" );
-        assertTrue( insert.execute() == 1 );
-
-        List<Record> records = jooq.selectFrom( testTable ).stream().collect( toList() );
-        assertThat( records.size(), is( 1 ) );
-        assertThat( records.get( 0 ).get( idColumn ), equalTo( "someid" ) );
-        assertThat( records.get( 0 ).get( fooColumn ), equalTo( "bar" ) );
-
-        Function<Record, SomeValue> toValue = record ->
-        {
-            ValueBuilder<SomeValue> builder = assembler.module().newValueBuilder( SomeValue.class );
-            builder.prototype().id().set( record.get( idColumn ) );
-            builder.prototype().foo().set( record.get( fooColumn ) );
-            return builder.newInstance();
-        };
-
-        List<SomeValue> values = jooq.selectFrom( testTable ).stream()
-                                     .map( toValue )
-                                     .peek( System.out::println )
-                                     .collect( toList() );
-
-        assertThat( values.size(), is( 1 ) );
-        assertThat( values.get( 0 ).id().get(), equalTo( "someid" ) );
-        assertThat( values.get( 0 ).foo().get(), equalTo( "bar" ) );
+        jooq.transaction( conf -> {
+            // Assert that insertion works
+            InsertValuesStep2 insert = jooq.insertInto( testTable )
+                                           .columns( idColumn, fooColumn )
+                                           .values( "someid", "bar" );
+            assertTrue( insert.execute() == 1 );
+        } );
+        jooq.transaction( conf -> {
+            List<Record> records = jooq.selectFrom( testTable ).stream().collect( toList() );
+            assertThat( records.size(), is( 1 ) );
+            assertThat( records.get( 0 ).get( idColumn ), equalTo( "someid" ) );
+            assertThat( records.get( 0 ).get( fooColumn ), equalTo( "bar" ) );
+
+            Function<Record, SomeValue> toValue = record ->
+            {
+                ValueBuilder<SomeValue> builder = assembler.module().newValueBuilder( SomeValue.class );
+                builder.prototype().id().set( record.get( idColumn ) );
+                builder.prototype().foo().set( record.get( fooColumn ) );
+                return builder.newInstance();
+            };
+
+            List<SomeValue> values = jooq.selectFrom( testTable ).stream()
+                                         .map( toValue )
+                                         .peek( System.out::println )
+                                         .collect( toList() );
+
+            assertThat( values.size(), is( 1 ) );
+            assertThat( values.get( 0 ).id().get(), equalTo( "someid" ) );
+            assertThat( values.get( 0 ).foo().get(), equalTo( "bar" ) );
+        } );
     }
 
     interface SomeValue


[2/3] polygene-java git commit: Unifying the clean up of SQL tests, as they caused a lot of problems. Removed a "throws Exception" in AbstractPolygeneBaseTest.tearDown(), which is effectively breaking test compatibility, but I think worth it in the long

Posted by ni...@apache.org.
Unifying the clean up of SQL tests, as they caused a lot of problems. Removed a "throws Exception" in AbstractPolygeneBaseTest.tearDown(), which is effectively breaking test compatibility, but I think worth it in the long run.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/27dc60c4
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/27dc60c4
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/27dc60c4

Branch: refs/heads/develop
Commit: 27dc60c49ca888aebdac027c47217d9af012a280
Parents: f6a5b33
Author: niclas <ni...@hedhman.org>
Authored: Fri Oct 27 13:34:40 2017 +0800
Committer: niclas <ni...@hedhman.org>
Committed: Fri Oct 27 13:34:40 2017 +0800

----------------------------------------------------------------------
 .../CachingInjectionProviderDecorator.java      |   1 -
 .../polygene/test/AbstractPolygeneBaseTest.java |  10 +-
 .../polygene/test/AbstractPolygeneTest.java     |   1 -
 .../test/entity/AbstractEntityStoreTest.java    |   5 +-
 ...stractPolygeneMultiLayeredTestWithModel.java |  38 +++++--
 .../test/indexing/AbstractAnyQueryTest.java     |   1 -
 .../cassandra/CassandraEntityStoreTest.java     |   1 -
 .../CassandraEntityStoreTestSuite.java          |   1 -
 .../hazelcast/HazelcastEntityStoreTest.java     |   1 -
 .../HazelcastEntityStoreTestSuite.java          |   1 -
 .../mongodb/MongoDBEntityStoreTest.java         |   1 -
 .../mongodb/MongoDBEntityStoreTestSuite.java    |   1 -
 .../MongoDBEntityStoreWithCacheTest.java        |   1 -
 .../PreferencesEntityStoreTestSuite.java        |  10 +-
 .../entitystore/redis/RedisEntityStoreTest.java |   1 -
 .../redis/RedisEntityStoreTestSuite.java        |   1 -
 .../redis/RedisEntityStoreWithCacheTest.java    |   1 -
 .../entitystore/riak/RiakEntityStoreTest.java   |   2 +-
 .../riak/RiakEntityStoreTestSuite.java          |   1 -
 .../riak/RiakEntityStoreWithCacheTest.java      |   2 +-
 .../polygene/entitystore/riak/RiakFixture.java  |  20 ++--
 .../entitystore/sql/JooqDslContext.java         |  18 +---
 .../sql/SqlEntityStoreConfiguration.java        |  12 +--
 .../entitystore/sql/SqlEntityStoreMixin.java    |   1 -
 .../polygene/entitystore/sql/SqlTable.java      |  13 +--
 .../polygene/entitystore/sql/SqlType.java       |   1 -
 .../polygene/entitystore/sql/TypesTable.java    |   1 -
 .../sql/DerbySQLEntityStoreTest.java            |  34 +-----
 .../sql/DerbySQLEntityStoreTestSuite.java       |  25 +----
 .../entitystore/sql/H2SQLEntityStoreTest.java   |   9 +-
 .../sql/H2SQLEntityStoreTestSuite.java          |   8 +-
 .../entitystore/sql/MariaDbEntityStoreTest.java |  15 +--
 .../sql/MariaDbEntityStoreTestSuite.java        |  11 +-
 .../entitystore/sql/MySQLEntityStoreTest.java   |  14 +--
 .../sql/MySQLEntityStoreTestSuite.java          |   9 +-
 .../sql/PostgreSQLEntityStoreTest.java          |  14 +--
 .../sql/PostgreSQLEntityStoreTestSuite.java     |   9 +-
 .../entitystore/sql/SQLiteEntityStoreTest.java  |   8 +-
 .../sql/SQLiteEntityStoreTestSuite.java         |   9 +-
 .../entitystore/sql/SqlEntityStoreTest.java     |   9 +-
 .../polygene/entitystore/sql/TearDown.java      | 100 ++++++++++++++++++
 .../polygene/entitystore/sql/TearDownUtil.java  |  44 --------
 .../test/resources/maridb-datasource.properties |  25 +++++
 extensions/entitystore-sqlkv/build.gradle       |   2 -
 .../entitystore-sqlkv/src/docs/es-sqlkv.txt     |   2 -
 .../sqlkv/SQLEntityStoreConfiguration.java      |  12 +--
 .../entitystore/sqlkv/SQLEntityStoreMixin.java  | 102 ++++++------------
 .../AbstractSQLEntityStoreAssembler.java        |  21 +---
 .../assembly/DerbySQLEntityStoreAssembler.java  |   3 +-
 .../MariaDbSQLEntityStoreAssembler.java         |  35 +++++++
 .../polygene/entitystore/sql/changelog.xml      |  37 -------
 .../sqlkv/DerbySQLEntityStoreTest.java          |  37 +------
 .../sqlkv/DerbySQLEntityStoreTestSuite.java     |  36 +------
 .../entitystore/sqlkv/H2SQLEntityStoreTest.java |  12 ++-
 .../sqlkv/H2SQLEntityStoreTestSuite.java        |   9 ++
 .../sqlkv/MariaDbEntityStoreTest.java           | 103 +++++++++++++++++++
 .../sqlkv/MariaDbEntityStoreTestSuite.java      |  92 +++++++++++++++++
 .../entitystore/sqlkv/MySQLEntityStoreTest.java |  41 ++------
 .../sqlkv/MySQLEntityStoreTestSuite.java        |  43 ++------
 .../sqlkv/PostgreSQLEntityStoreTest.java        |  36 +------
 .../sqlkv/PostgreSQLEntityStoreTestSuite.java   |  39 +------
 .../sqlkv/SQLiteEntityStoreTest.java            |   9 ++
 .../sqlkv/SQLiteEntityStoreTestSuite.java       |   9 ++
 .../polygene/entitystore/sqlkv/TearDown.java    |  81 +++++++++++++++
 .../library/alarm/AlarmHistoryImplTest.java     |   1 -
 .../library/alarm/AlarmPointImplTest.java       |   1 -
 .../library/alarm/AlarmServiceTest.java         |   1 -
 .../library/alarm/ExtendedAlarmModelTest.java   |   1 -
 .../library/alarm/SimpleAlarmModelTest.java     |   1 -
 .../library/alarm/StandardAlarmModelTest.java   |   1 -
 .../sql/DerbySQLEntityStorePerformanceTest.java |   3 +-
 71 files changed, 681 insertions(+), 579 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/CachingInjectionProviderDecorator.java
----------------------------------------------------------------------
diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/CachingInjectionProviderDecorator.java b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/CachingInjectionProviderDecorator.java
index 3339a48..c1e82b9 100644
--- a/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/CachingInjectionProviderDecorator.java
+++ b/core/runtime/src/main/java/org/apache/polygene/runtime/injection/provider/CachingInjectionProviderDecorator.java
@@ -57,7 +57,6 @@ public final class CachingInjectionProviderDecorator
                 }
             }
         }
-
         return singletonInstance;
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneBaseTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneBaseTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneBaseTest.java
index 6d7d6ba..177edb3 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneBaseTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneBaseTest.java
@@ -19,6 +19,7 @@
  */
 package org.apache.polygene.test;
 
+import org.apache.polygene.api.activation.PassivationException;
 import org.apache.polygene.test.util.NotYetImplemented;
 import org.junit.After;
 import org.junit.Before;
@@ -119,11 +120,16 @@ public abstract class AbstractPolygeneBaseTest
 
     @After
     public void tearDown()
-        throws Exception
     {
         if( application != null )
         {
-            application.passivate();
+            try
+            {
+                application.passivate();
+            } catch( Exception e )
+            {
+                throw new RuntimeException( "Unable to shut down test harness cleanly.", e );
+            }
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneTest.java
index 43193be..e1bad60 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/AbstractPolygeneTest.java
@@ -90,7 +90,6 @@ public abstract class AbstractPolygeneTest extends AbstractPolygeneBaseTest
     @After
     @Override
     public void tearDown()
-        throws Exception
     {
         if( unitOfWorkFactory != null && unitOfWorkFactory.isUnitOfWorkActive() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
index 7e0fd71..5e674e9 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/AbstractEntityStoreTest.java
@@ -55,7 +55,6 @@ import org.apache.polygene.spi.entity.EntityState;
 import org.apache.polygene.spi.entitystore.EntityStore;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.After;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static java.time.ZoneOffset.UTC;
@@ -77,7 +76,8 @@ public abstract class AbstractEntityStoreTest
     private EntityStore store;
 
     @Structure
-    private Module moduleInstance;
+    protected Module moduleInstance;
+
     private ZonedDateTime refDate = ZonedDateTime.of( 2020, 3, 4, 13, 24, 35, 0, UTC );
 
     @Override
@@ -91,7 +91,6 @@ public abstract class AbstractEntityStoreTest
     @Override
     @After
     public void tearDown()
-        throws Exception
     {
         super.tearDown();
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
index 0c0500d..aa8abf9 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/entity/model/AbstractPolygeneMultiLayeredTestWithModel.java
@@ -30,6 +30,7 @@ import org.apache.polygene.api.identity.Identity;
 import org.apache.polygene.api.injection.scope.Service;
 import org.apache.polygene.api.injection.scope.Structure;
 import org.apache.polygene.api.object.ObjectFactory;
+import org.apache.polygene.api.service.ServiceFinder;
 import org.apache.polygene.api.structure.Application;
 import org.apache.polygene.api.structure.ApplicationDescriptor;
 import org.apache.polygene.api.structure.Module;
@@ -71,9 +72,24 @@ public abstract class AbstractPolygeneMultiLayeredTestWithModel extends Abstract
     private static final String FRIEND = "Friend";
     private static final String COLLEAGUE = "Colleague";
 
+    protected static final String ACCESS_LAYER = "Access Layer";
+    protected static final String DOMAIN_LAYER = "Domain Layer";
+    protected static final String INFRASTRUCTURE_LAYER = "Infrastructure Layer";
+    protected static final String CONFIGURATION_LAYER = "Configuration Layer";
+    protected static final String CONFIGURATION_MODULE = "Configuration Module";
+    protected static final String SERIALIZATION_MODULE = "Serialization Module";
+    protected static final String STORAGE_MODULE = "Storage Module";
+    protected static final String MONETARY_MODULE = "Monetary Module";
+    protected static final String PEOPLE_MODULE = "People Module";
+    protected static final String LEGAL_MODULE = "Legal Module";
+    protected static final String TEST_CASE_MODULE = "TestCase Module";
+
     protected ModuleAssembly configModule;
 
     @Structure
+    protected Module configurationModule;
+
+    @Structure
     protected ValueBuilderFactory valueBuilderFactory;
 
     @Structure
@@ -89,18 +105,18 @@ public abstract class AbstractPolygeneMultiLayeredTestWithModel extends Abstract
     protected void defineApplication( ApplicationAssembly applicationAssembly )
         throws AssemblyException
     {
-        LayerAssembly accessLayer = applicationAssembly.layer( "Access Layer" );
-        LayerAssembly domainLayer = applicationAssembly.layer( "Domain Layer" );
-        LayerAssembly infrastructureLayer = applicationAssembly.layer( "Infrastructure Layer" );
-        LayerAssembly configLayer = applicationAssembly.layer( "Configuration Layer" );
+        LayerAssembly accessLayer = applicationAssembly.layer( ACCESS_LAYER );
+        LayerAssembly domainLayer = applicationAssembly.layer( DOMAIN_LAYER );
+        LayerAssembly infrastructureLayer = applicationAssembly.layer( INFRASTRUCTURE_LAYER );
+        LayerAssembly configLayer = applicationAssembly.layer( CONFIGURATION_LAYER );
         accessLayer.uses( domainLayer.uses( infrastructureLayer.uses( configLayer ) ) );
-        defineConfigModule( configLayer.module( "Configuration Module" ) );
-        defineSerializationModule( configLayer.module( "Serialization Module" ) );
-        defineStorageModule( infrastructureLayer.module( "Storage Module" ) );
-        defineMonetaryModule( domainLayer.module( "Monetary Module" ) );
-        definePeopleModule( domainLayer.module( "People Module" ) );
-        defineLegalModule( domainLayer.module( "Legal Module" ) );
-        defineTestModule( accessLayer.module( "TestCase Module" ) );
+        defineConfigModule( configLayer.module( CONFIGURATION_MODULE ) );
+        defineSerializationModule( configLayer.module( SERIALIZATION_MODULE ) );
+        defineStorageModule( infrastructureLayer.module( STORAGE_MODULE ) );
+        defineMonetaryModule( domainLayer.module( MONETARY_MODULE ) );
+        definePeopleModule( domainLayer.module( PEOPLE_MODULE ) );
+        defineLegalModule( domainLayer.module( LEGAL_MODULE ) );
+        defineTestModule( accessLayer.module( TEST_CASE_MODULE ) );
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
----------------------------------------------------------------------
diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
index eb3ffa0..120772b 100644
--- a/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
+++ b/core/testsupport/src/main/java/org/apache/polygene/test/indexing/AbstractAnyQueryTest.java
@@ -88,7 +88,6 @@ public class AbstractAnyQueryTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         if( this.unitOfWork != null )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
index 0e0084b..9d7e83d 100644
--- a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
+++ b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTest.java
@@ -76,7 +76,6 @@ public class CassandraEntityStoreTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         CanRemoveAll cleaner = serviceFinder.findService( CanRemoveAll.class ).get();
         cleaner.removeAll();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
index 3908a73..9841d7d 100644
--- a/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
+++ b/extensions/entitystore-cassandra/src/test/java/org/apache/polygene/entitystore/cassandra/CassandraEntityStoreTestSuite.java
@@ -63,7 +63,6 @@ public class CassandraEntityStoreTestSuite extends EntityStoreTestSuite
 
     @Override
     public void tearDown()
-        throws Exception
     {
         Module module = application.findModule( "Infrastructure Layer", "Storage Module" );
         ServiceReference<CanRemoveAll> cleaner = module.serviceFinder().findService( CanRemoveAll.class );

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
index 37ee7f5..c159995 100644
--- a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
+++ b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTest.java
@@ -58,7 +58,6 @@ public class HazelcastEntityStoreTest
     @After
     @Override
     public void tearDown()
-        throws Exception
     {
         super.tearDown();
         // TODO : delete test data

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
index 346f0ea..e1334b1 100644
--- a/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
+++ b/extensions/entitystore-hazelcast/src/test/java/org/apache/polygene/entitystore/hazelcast/HazelcastEntityStoreTestSuite.java
@@ -40,7 +40,6 @@ public class HazelcastEntityStoreTestSuite extends EntityStoreTestSuite
     @After
     @Override
     public void tearDown()
-        throws Exception
     {
         super.tearDown();
         // TODO : delete test data

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
index 8a7876a..d4194da 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTest.java
@@ -77,7 +77,6 @@ public class MongoDBEntityStoreTest extends AbstractEntityStoreTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         mongo.dropDatabase( dbName );
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
index 109ff43..64852ca 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreTestSuite.java
@@ -69,7 +69,6 @@ public class MongoDBEntityStoreTestSuite extends EntityStoreTestSuite
 
     @Override
     public void tearDown()
-        throws Exception
     {
         mongo.dropDatabase( dbName );
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
index 8fab686..b334ead 100644
--- a/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-mongodb/src/test/java/org/apache/polygene/entitystore/mongodb/MongoDBEntityStoreWithCacheTest.java
@@ -73,7 +73,6 @@ public class MongoDBEntityStoreWithCacheTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         mongo.dropDatabase( dbName );
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
index 4ca18b4..6aaa6fa 100644
--- a/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
+++ b/extensions/entitystore-preferences/src/test/java/org/apache/polygene/entitystore/preferences/PreferencesEntityStoreTestSuite.java
@@ -49,8 +49,14 @@ public class PreferencesEntityStoreTestSuite extends EntityStoreTestSuite
 
     @After
     public void tearDown()
-        throws BackingStoreException
     {
-        rootNode.removeNode();
+        try
+        {
+            rootNode.removeNode();
+        }
+        catch( BackingStoreException e )
+        {
+            throw new RuntimeException( e );
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
index 401f703..f678b72 100644
--- a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTest.java
@@ -69,7 +69,6 @@ public class RedisEntityStoreTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         try( Jedis jedis = jedisPool.getResource() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
index 6ae99a1..bcc9249 100644
--- a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreTestSuite.java
@@ -63,7 +63,6 @@ public class RedisEntityStoreTestSuite extends EntityStoreTestSuite
 
     @Override
     public void tearDown()
-        throws Exception
     {
         try( Jedis jedis = jedisPool.getResource() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreWithCacheTest.java b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreWithCacheTest.java
index c51909c..a229be2 100644
--- a/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-redis/src/test/java/org/apache/polygene/entitystore/redis/RedisEntityStoreWithCacheTest.java
@@ -63,7 +63,6 @@ public class RedisEntityStoreWithCacheTest
 
     @Override
     public void tearDown()
-        throws Exception
     {
         try( Jedis jedis = jedisPool.getResource() )
         {

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTest.java b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTest.java
index 9a52e30..145f7a8 100644
--- a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTest.java
+++ b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTest.java
@@ -43,7 +43,7 @@ public class RiakEntityStoreTest extends AbstractEntityStoreTest
     }
 
     @Override
-    public void tearDown() throws Exception
+    public void tearDown()
     {
         riakFixture.deleteTestData();
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
index 14828ff..0974da7 100644
--- a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
+++ b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreTestSuite.java
@@ -51,7 +51,6 @@ public class RiakEntityStoreTestSuite extends EntityStoreTestSuite
 
     @Override
     public void tearDown()
-        throws Exception
     {
         riakFixture.deleteTestData();
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreWithCacheTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreWithCacheTest.java b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreWithCacheTest.java
index 13f5b36..7e20235 100644
--- a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreWithCacheTest.java
+++ b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakEntityStoreWithCacheTest.java
@@ -46,7 +46,7 @@ public class RiakEntityStoreWithCacheTest extends AbstractEntityStoreWithCacheTe
     }
 
     @Override
-    public void tearDown() throws Exception
+    public void tearDown()
     {
         riakFixture.deleteTestData();
         super.tearDown();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakFixture.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakFixture.java b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakFixture.java
index 4e05602..e932fb9 100644
--- a/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakFixture.java
+++ b/extensions/entitystore-riak/src/test/java/org/apache/polygene/entitystore/riak/RiakFixture.java
@@ -52,17 +52,25 @@ class RiakFixture
         System.out.println( ">> Riak HealthCheck END, took " + java.time.Duration.between( start, Instant.now() ) );
     }
 
-    void deleteTestData() throws ExecutionException, InterruptedException
+    void deleteTestData()
     {
         // Riak doesn't expose bucket deletion in its API so we empty it
         if( namespace != null )
         {
-            ListKeys listKeys = new ListKeys.Builder( namespace ).build();
-            ListKeys.Response listKeysResponse = client.execute( listKeys );
-            for( Location location : listKeysResponse )
+            try
+            {
+                ListKeys listKeys = new ListKeys.Builder( namespace ).build();
+                ListKeys.Response listKeysResponse = client.execute( listKeys );
+                for( Location location : listKeysResponse )
+                {
+                    DeleteValue delete = new DeleteValue.Builder( location ).build();
+                    client.execute( delete );
+                }
+            }
+            catch(Exception e )
             {
-                DeleteValue delete = new DeleteValue.Builder( location ).build();
-                client.execute( delete );
+                System.err.println("WARNING: Unable to clean up test data in RiakFixture" );
+                e.printStackTrace();
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/JooqDslContext.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/JooqDslContext.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/JooqDslContext.java
index b73978f..47e01ad 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/JooqDslContext.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/JooqDslContext.java
@@ -29,7 +29,6 @@ import org.jooq.DSLContext;
 import org.jooq.Name;
 import org.jooq.Record;
 import org.jooq.SQLDialect;
-import org.jooq.Schema;
 import org.jooq.Table;
 import org.jooq.TransactionProvider;
 import org.jooq.conf.Settings;
@@ -41,8 +40,6 @@ import org.jooq.impl.ThreadLocalTransactionProvider;
 @Mixins( JooqDslContext.Mixin.class )
 public interface JooqDslContext extends DSLContext
 {
-    boolean isSchemaCapable();
-
     Name tableNameOf( String tableName );
 
     Table<Record> tableOf( String tableName );
@@ -50,12 +47,10 @@ public interface JooqDslContext extends DSLContext
     class Mixin
         implements InvocationHandler
     {
-        private final Schema schema;
         private final DSLContext dsl;
 
-        public Mixin( @Service DataSource dataSource, @Uses Settings settings, @Uses SQLDialect dialect, @Uses Schema schema )
+        public Mixin( @Service DataSource dataSource, @Uses Settings settings, @Uses SQLDialect dialect )
         {
-            this.schema = schema;
             ConnectionProvider connectionProvider = new DataSourceConnectionProvider( dataSource );
             TransactionProvider transactionProvider = new ThreadLocalTransactionProvider( connectionProvider, false );
             Configuration configuration = new DefaultConfiguration()
@@ -79,21 +74,12 @@ public interface JooqDslContext extends DSLContext
                 return tableNameOf( (String) args[ 0 ] );
             }
 
-            if( method.getName().equals( "isSchemaCapable" ) )
-            {
-                return isSchemaCapable();
-            }
             return method.invoke( dsl, args );       // delegate all
         }
 
         private Name tableNameOf( String name )
         {
-            return this.isSchemaCapable() ? DSL.name( schema.getName(), name ) : DSL.name( name );
-        }
-
-        private boolean isSchemaCapable()
-        {
-            return !dsl.dialect().equals( SQLDialect.SQLITE ) && !dsl.dialect().equals( SQLDialect.MYSQL ) && !dsl.dialect().equals( SQLDialect.DERBY );
+            return DSL.name( name );
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreConfiguration.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreConfiguration.java
index e93d7a3..6c01231 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreConfiguration.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreConfiguration.java
@@ -22,17 +22,9 @@ import org.apache.polygene.api.property.Property;
 import org.apache.polygene.library.sql.common.SQLConfiguration;
 
 // START SNIPPET: config
-public interface SqlEntityStoreConfiguration extends SQLConfiguration
+public interface SqlEntityStoreConfiguration
 {
     /**
-     * Name of the database schema to use.
-     * Ignored on SQL databases that don't support schemas.
-     */
-    @UseDefaults( "POLYGENE" )
-    @Override
-    Property<String> schemaName();
-
-    /**
      * Name of the entities table.
      * <p>
      * This table contains the Identity and other metadata about each entity instance
@@ -54,7 +46,7 @@ public interface SqlEntityStoreConfiguration extends SQLConfiguration
     Property<String> typesTableName();
 
     /**
-     * Defines whether the database schema and table should be created if not already present.
+     * Defines whether the database table should be created if not already present.
      */
     @UseDefaults( "true" )
     Property<Boolean> createIfMissing();

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreMixin.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreMixin.java
index b2715ce..c1e7985 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreMixin.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlEntityStoreMixin.java
@@ -17,7 +17,6 @@
  */
 package org.apache.polygene.entitystore.sql;
 
-import java.math.BigInteger;
 import java.time.Instant;
 import java.util.ArrayList;
 import java.util.HashMap;

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlTable.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlTable.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlTable.java
index 1d8018e..3652ada 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlTable.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlTable.java
@@ -37,7 +37,6 @@ import org.apache.polygene.spi.entitystore.EntityStoreUnitOfWork;
 import org.apache.polygene.spi.entitystore.helpers.DefaultEntityState;
 import org.jooq.Record;
 import org.jooq.SQLDialect;
-import org.jooq.Schema;
 import org.jooq.SelectQuery;
 import org.jooq.conf.Settings;
 import org.jooq.impl.DSL;
@@ -197,12 +196,10 @@ public interface SqlTable extends ServiceActivation
             Settings settings = serviceDescriptor
                 .metaInfo( Settings.class );
 
-            String schemaName = config.schemaName().get();
             String typesTableName = config.typesTableName().get();
             String entitiesTableName = config.entitiesTableName().get();
-            Schema schema = DSL.schema( DSL.name( schemaName ) );
 
-            dsl = tbf.newTransient( JooqDslContext.class, settings, dialect, schema );
+            dsl = tbf.newTransient( JooqDslContext.class, settings, dialect );
 
             types = new TypesTable( dsl, dialect, typesTableName );
             entitiesTable = new EntitiesTable( dsl, types, application.version(), entitiesTableName, serialization );
@@ -210,14 +207,6 @@ public interface SqlTable extends ServiceActivation
             if( config.createIfMissing().get() )
             {
                 dsl.transaction( t -> {
-                    if( dsl.isSchemaCapable()
-                        && dsl.meta().getSchemas().stream().noneMatch( s -> schema.getName().equalsIgnoreCase( s.getName() ) ) )
-                    {
-                        dsl.createSchema( schemaName ).execute();
-                    }
-                } );
-
-                dsl.transaction( t -> {
 
                     dsl.createTableIfNotExists( dsl.tableNameOf( typesTableName ) )
                        .column( identityColumn )

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlType.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlType.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlType.java
index 982b3f5..c522d90 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlType.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/SqlType.java
@@ -27,7 +27,6 @@ import java.time.OffsetDateTime;
 import java.time.Period;
 import java.time.ZonedDateTime;
 import org.jooq.DataType;
-import org.jooq.impl.DefaultDataType;
 import org.jooq.impl.SQLDataType;
 import org.jooq.types.Interval;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/TypesTable.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/TypesTable.java b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/TypesTable.java
index 9082302..c2546f1 100644
--- a/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/TypesTable.java
+++ b/extensions/entitystore-sql/src/main/java/org/apache/polygene/entitystore/sql/TypesTable.java
@@ -36,7 +36,6 @@ import org.jooq.Result;
 import org.jooq.SQLDialect;
 import org.jooq.Table;
 import org.jooq.impl.DSL;
-import org.jooq.impl.DefaultDataType;
 
 public class TypesTable
     implements TableFields

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java
index 0cff573..aa3833b 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java
@@ -19,14 +19,7 @@
  */
 package org.apache.polygene.entitystore.sql;
 
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import org.apache.derby.jdbc.AutoloadedDriver;
-import org.apache.derby.jdbc.Driver42;
-import org.apache.derby.jdbc.EmbeddedDriver;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler;
@@ -34,13 +27,12 @@ import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
 public class DerbySQLEntityStoreTest
     extends AbstractEntityStoreTest
 {
-    private String storageModuleName;
-    private String storageLayerName;
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -48,8 +40,6 @@ public class DerbySQLEntityStoreTest
     {
         // END SNIPPET: assembly
         super.assemble( module );
-        storageModuleName = module.name();
-        storageLayerName = module.layer().name();
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
 
@@ -78,25 +68,9 @@ public class DerbySQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        super.tearDown();
-        try
-        {
-            DriverManager.getConnection( "jdbc:derby:memory:testdb;drop=true" );
-        }
-        catch( SQLException e )
-        {
-            // ignore, it is EXPECTED to get an exception when the database shuts down. No idea why.
-        }
-        try
-        {
-            DriverManager.getConnection( "jdbc:derby:memory:testdb;shutdown=true" );
-        }
-        catch( SQLException e )
-        {
-            // ignore, it is EXPECTED to get an exception when the database shuts down. No idea why.
-        }
+        TearDown.dropTables( moduleInstance, SQLDialect.DERBY, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
index 1af981d..4ac3302 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java
@@ -19,15 +19,14 @@
  */
 package org.apache.polygene.entitystore.sql;
 
-import java.sql.DriverManager;
-import java.sql.SQLException;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 
 public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite
 {
@@ -58,25 +57,9 @@ public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite
     }
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        super.tearDown();
-        try
-        {
-            DriverManager.getConnection( "jdbc:derby:memory:testdb;drop=true" );
-        }
-        catch( SQLException e )
-        {
-            // ignore, it is EXPECTED to get an exception when the database shuts down. No idea why.
-        }
-        try
-        {
-            DriverManager.getConnection( "jdbc:derby:memory:testdb;shutdown=true" );
-        }
-        catch( SQLException e )
-        {
-            // ignore, it is EXPECTED to get an exception when the database shuts down. No idea why.
-        }
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.DERBY, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java
index eea919a..906c7c2 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java
@@ -20,7 +20,6 @@
 package org.apache.polygene.entitystore.sql;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.H2SQLEntityStoreAssembler;
@@ -28,6 +27,7 @@ import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
 import org.junit.After;
 
 public class H2SQLEntityStoreTest
@@ -66,4 +66,11 @@ public class H2SQLEntityStoreTest
             .assemble( module );
     }
     // END SNIPPET: assembly
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.H2, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
index 9546dad..7c7d3f5 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java
@@ -20,12 +20,12 @@
 package org.apache.polygene.entitystore.sql;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.H2SQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
 import org.junit.After;
 
 public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite
@@ -56,4 +56,10 @@ public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite
             .assemble( module );
     }
 
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.H2, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTest.java
index d1594e7..7b11e7a 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTest.java
@@ -21,17 +21,17 @@ package org.apache.polygene.entitystore.sql;
 
 import java.util.HashMap;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.MariaDbSQLEntityStoreAssembler;
-import org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Ignore;
 
@@ -53,9 +53,6 @@ public class MariaDbEntityStoreTest
 //        , "mysqld: ready for connections"   TODO: add this after next release of tdomzal/junit-docker-rule
     );
 
-    private String storageModuleName;
-    private String storageLayerName;
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -63,8 +60,6 @@ public class MariaDbEntityStoreTest
     {
         // END SNIPPET: assembly
         super.assemble( module );
-        storageModuleName = module.name();
-        storageLayerName = module.layer().name();
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
 
@@ -101,11 +96,9 @@ public class MariaDbEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( storageLayerName, storageModuleName );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( moduleInstance, SQLDialect.MARIADB, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTestSuite.java
index e3d9254..e8e1a4d 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MariaDbEntityStoreTestSuite.java
@@ -21,7 +21,6 @@ package org.apache.polygene.entitystore.sql;
 
 import java.util.HashMap;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
@@ -29,6 +28,8 @@ import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Ignore;
 
@@ -37,7 +38,7 @@ public class MariaDbEntityStoreTestSuite extends EntityStoreTestSuite
 {
     @ClassRule
     public static final DockerRule DOCKER = new DockerRule(
-        "mysql",
+        "mariadb",
         new HashMap<String, String>()
         {{
             put( "MYSQL_ROOT_PASSWORD", "" );
@@ -83,11 +84,9 @@ public class MariaDbEntityStoreTestSuite extends EntityStoreTestSuite
     }
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.MARIADB, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
index 159d573..76d3736 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTest.java
@@ -21,7 +21,6 @@ package org.apache.polygene.entitystore.sql;
 
 import java.util.HashMap;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler;
@@ -31,6 +30,8 @@ import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Ignore;
 
@@ -52,9 +53,6 @@ public class MySQLEntityStoreTest
 //        , "mysqld: ready for connections"   TODO: add this after next release of tdomzal/junit-docker-rule
     );
 
-    private String storageModuleName;
-    private String storageLayerName;
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -62,8 +60,6 @@ public class MySQLEntityStoreTest
     {
         // END SNIPPET: assembly
         super.assemble( module );
-        storageModuleName = module.name();
-        storageLayerName = module.layer().name();
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
 
@@ -100,11 +96,9 @@ public class MySQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( storageLayerName, storageModuleName );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( moduleInstance, SQLDialect.MYSQL, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
index f84fa9d..18c7370 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/MySQLEntityStoreTestSuite.java
@@ -21,7 +21,6 @@ package org.apache.polygene.entitystore.sql;
 
 import java.util.HashMap;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.MySQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
@@ -29,6 +28,8 @@ import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 import org.junit.Ignore;
 
@@ -83,11 +84,9 @@ public class MySQLEntityStoreTestSuite extends EntityStoreTestSuite
     }
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.MYSQL, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
index a682398..3813220 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTest.java
@@ -22,7 +22,6 @@ package org.apache.polygene.entitystore.sql;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.PostgreSQLEntityStoreAssembler;
@@ -32,6 +31,8 @@ import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 
 public class PostgreSQLEntityStoreTest
@@ -52,9 +53,6 @@ public class PostgreSQLEntityStoreTest
                                  "PostgreSQL init process complete; ready for start up." );
     }
 
-    private String storageModuleName;
-    private String storageLayerName;
-
     @Override
     // START SNIPPET: assembly
     public void assemble( ModuleAssembly module )
@@ -62,8 +60,6 @@ public class PostgreSQLEntityStoreTest
     {
         // END SNIPPET: assembly
         super.assemble( module );
-        storageModuleName = module.name();
-        storageLayerName = module.layer().name();
         ModuleAssembly config = module.layer().module( "config" );
         new EntityTestAssembler().defaultServicesVisibleIn( Visibility.layer ).assemble( config );
 
@@ -104,11 +100,9 @@ public class PostgreSQLEntityStoreTest
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( storageLayerName, storageModuleName );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( moduleInstance, SQLDialect.POSTGRES, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
index 487ad9f..6c7dcd4 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/PostgreSQLEntityStoreTestSuite.java
@@ -22,7 +22,6 @@ package org.apache.polygene.entitystore.sql;
 import java.util.HashMap;
 import java.util.Map;
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.PostgreSQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
@@ -30,6 +29,8 @@ import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.docker.DockerRule;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.ClassRule;
 
 public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
@@ -86,11 +87,9 @@ public class PostgreSQLEntityStoreTestSuite extends EntityStoreTestSuite
     // END SNIPPET: assembly
 
     @Override
+    @After
     public void tearDown()
-        throws Exception
     {
-        Module storageModule = application.findModule( "Infrastructure Layer", "Storage Module" );
-        TearDownUtil.dropSchema( storageModule, getClass().getSimpleName() );
-        super.tearDown();
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.POSTGRES, super::tearDown );
     }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTest.java
index ad2ecc1..376f3da 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTest.java
@@ -20,7 +20,6 @@
 package org.apache.polygene.entitystore.sql;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.SQLiteEntityStoreAssembler;
@@ -28,6 +27,7 @@ import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
+import org.jooq.SQLDialect;
 import org.junit.After;
 import org.junit.BeforeClass;
 
@@ -75,4 +75,10 @@ public class SQLiteEntityStoreTest extends AbstractEntityStoreTest
     }
     // END SNIPPET: assembly
 
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.DERBY, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
index 39f2c05..498211e 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SQLiteEntityStoreTestSuite.java
@@ -20,12 +20,12 @@
 package org.apache.polygene.entitystore.sql;
 
 import org.apache.polygene.api.common.Visibility;
-import org.apache.polygene.api.structure.Module;
 import org.apache.polygene.bootstrap.ModuleAssembly;
 import org.apache.polygene.entitystore.sql.assembly.SQLiteEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.entity.model.EntityStoreTestSuite;
+import org.jooq.SQLDialect;
 import org.junit.After;
 import org.junit.BeforeClass;
 
@@ -64,4 +64,11 @@ public class SQLiteEntityStoreTestSuite extends EntityStoreTestSuite
             .withConfig( configModule, Visibility.application )
             .assemble( module );
     }
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( application.findModule( INFRASTRUCTURE_LAYER, STORAGE_MODULE ), SQLDialect.SQLITE, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SqlEntityStoreTest.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SqlEntityStoreTest.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SqlEntityStoreTest.java
index 2a4ce95..e5e1d41 100644
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SqlEntityStoreTest.java
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/SqlEntityStoreTest.java
@@ -22,7 +22,6 @@ package org.apache.polygene.entitystore.sql;
 import org.apache.polygene.api.common.Visibility;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.entitystore.sql.assembly.AbstractSQLEntityStoreAssembler;
 import org.apache.polygene.entitystore.sql.assembly.H2SQLEntityStoreAssembler;
 import org.apache.polygene.library.sql.assembly.DataSourceAssembler;
 import org.apache.polygene.library.sql.datasource.DataSourceConfiguration;
@@ -30,6 +29,7 @@ import org.apache.polygene.library.sql.dbcp.DBCPDataSourceServiceAssembler;
 import org.apache.polygene.test.EntityTestAssembler;
 import org.apache.polygene.test.entity.AbstractEntityStoreTest;
 import org.jooq.SQLDialect;
+import org.junit.After;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 
@@ -86,4 +86,11 @@ public class SqlEntityStoreTest extends AbstractEntityStoreTest
         // START SNIPPET: assembly
     }
     // END SNIPPET: assembly
+
+    @Override
+    @After
+    public void tearDown()
+    {
+        TearDown.dropTables( moduleInstance, SQLDialect.DERBY, super::tearDown );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDown.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDown.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDown.java
new file mode 100644
index 0000000..e2371c0
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDown.java
@@ -0,0 +1,100 @@
+package org.apache.polygene.entitystore.sql;
+
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import javax.sql.DataSource;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.unitofwork.UnitOfWork;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.usecase.UsecaseBuilder;
+import org.jooq.SQLDialect;
+
+class TearDown
+{
+    static void dropTables( Module module, SQLDialect dialect, Runnable after )
+    {
+        if( module == null ){
+            System.err.println( "WARNING: 'module' was null. Happens if there was a pre-activation error. Otherwise an InternalError" );
+        }
+        UnitOfWorkFactory unitOfWorkFactory = module.unitOfWorkFactory();
+        ServiceFinder serviceFinder = module.serviceFinder();
+        try( UnitOfWork uow = unitOfWorkFactory.newUnitOfWork( UsecaseBuilder.newUsecase( "Cleaning up. Drop Tables" ) ) )
+        {
+            try( Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection() )
+            {
+                connection.setAutoCommit( true );
+                try( Statement stmt = connection.createStatement() )
+                {
+                    dropTable( dialect, stmt, "TYPES" );
+                    dropTable( dialect, stmt, "ENTITIES" );
+                    dropTable( dialect, stmt, "TestEntity" );
+                    dropTable( dialect, stmt, "TestEntity_ASSOCS" );
+                    dropIndex( dialect, stmt, "TestEntity_ASSOCS" );
+                    dropTable( dialect, stmt, "PhoneNumber" );
+                    dropTable( dialect, stmt, "PhoneNumber_ASSOCS" );
+                    dropIndex( dialect, stmt, "PhoneNumber_ASSOCS" );
+                    dropTable( dialect, stmt, "Person" );
+                    dropTable( dialect, stmt, "Person_ASSOCS" );
+                    dropIndex( dialect, stmt, "Person_ASSOCS" );
+                    dropTable( dialect, stmt, "City" );
+                    dropTable( dialect, stmt, "City_ASSOCS" );
+                    dropIndex( dialect, stmt, "City_ASSOCS" );
+                    dropTable( dialect, stmt, "Address" );
+                    dropTable( dialect, stmt, "Address_ASSOCS" );
+                    dropIndex( dialect, stmt, "Address_ASSOCS" );
+                    dropTable( dialect, stmt, "Country" );
+                    dropTable( dialect, stmt, "Country_ASSOCS" );
+                    dropIndex( dialect, stmt, "Country_ASSOCS" );
+                }
+            }
+        }
+        catch( SQLException e )
+        {
+            throw new RuntimeException( "Unable to clean up tables.", e );
+        }
+        finally
+        {
+            after.run();
+        }
+    }
+
+    private static void dropTable( SQLDialect dialect, Statement stmt, String tableName )
+    {
+        try
+        {
+            if( dialect == SQLDialect.MYSQL || dialect == SQLDialect.MARIADB )
+            {
+                stmt.execute( String.format( "DROP TABLE `%s`", tableName ) );
+            }
+            else
+            {
+                stmt.execute( String.format( "DROP TABLE \"%s\"", tableName ) );
+            }
+        }
+        catch( SQLException e )
+        {
+            //  ignore. Not all tables will be present in all tests.
+        }
+    }
+
+    private static void dropIndex( SQLDialect dialect, Statement stmt, String tableName )
+    {
+        try
+        {
+            if( dialect == SQLDialect.MYSQL || dialect == SQLDialect.MARIADB )
+            {
+                stmt.execute( String.format( "DROP INDEX `IDX_%s`", tableName ) );
+            }
+            else
+            {
+                stmt.execute( String.format( "DROP INDEX \"IDX_%s\"", tableName ) );
+            }
+        }
+        catch( SQLException e )
+        {
+            //  ignore. Not all tables will be present in all tests.
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDownUtil.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDownUtil.java b/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDownUtil.java
deleted file mode 100644
index 00f1e24..0000000
--- a/extensions/entitystore-sql/src/test/java/org/apache/polygene/entitystore/sql/TearDownUtil.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package org.apache.polygene.entitystore.sql;
-
-import java.sql.Connection;
-import java.sql.Statement;
-import javax.sql.DataSource;
-import org.apache.polygene.api.service.ServiceFinder;
-import org.apache.polygene.api.structure.Application;
-import org.apache.polygene.api.structure.Module;
-import org.apache.polygene.api.unitofwork.UnitOfWork;
-import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
-import org.apache.polygene.entitystore.sql.assembly.AbstractSQLEntityStoreAssembler;
-import org.apache.polygene.library.sql.common.SQLConfiguration;
-
-import static org.apache.polygene.api.usecase.UsecaseBuilder.newUsecase;
-
-public class TearDownUtil
-{
-
-    public static void dropSchema( Module storageModule, String testName )
-        throws Exception
-    {
-        String usecaseName = "Delete " + testName + " test data";
-        UnitOfWorkFactory uowf = storageModule.unitOfWorkFactory();
-        ServiceFinder serviceFinder = storageModule.serviceFinder();
-        UnitOfWork uow = uowf.newUnitOfWork( newUsecase( usecaseName ) );
-        try
-        {
-            SQLConfiguration config = uow.get( SQLConfiguration.class, AbstractSQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY );
-            Connection connection = serviceFinder.findService( DataSource.class ).get().getConnection();
-            connection.setAutoCommit( false );
-            String schemaName = config.schemaName().get();
-            try( Statement stmt = connection.createStatement() )
-            {
-                stmt.execute( String.format( "DROP SCHEMA \"%s\" CASCADE", schemaName ) );
-                connection.commit();
-            }
-        }
-        finally
-        {
-            uow.discard();
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sql/src/test/resources/maridb-datasource.properties
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sql/src/test/resources/maridb-datasource.properties b/extensions/entitystore-sql/src/test/resources/maridb-datasource.properties
new file mode 100644
index 0000000..a2f4175
--- /dev/null
+++ b/extensions/entitystore-sql/src/test/resources/maridb-datasource.properties
@@ -0,0 +1,25 @@
+#
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you 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.
+#
+#
+#
+
+enabled=true
+#url=jdbc:mysql://localhost:3306/jdbc_test_db?profileSQL=false&useLegacyDatetimeCode=false&serverTimezone=UTC&nullCatalogMeansCurrent=true&nullNamePatternMatchesAll=true
+driver=com.mysql.cj.jdbc.Driver
+username=root
+password=

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/build.gradle b/extensions/entitystore-sqlkv/build.gradle
index b13b95a..f86274c 100644
--- a/extensions/entitystore-sqlkv/build.gradle
+++ b/extensions/entitystore-sqlkv/build.gradle
@@ -29,8 +29,6 @@ dependencies {
   api polygene.library( 'sql' )
   api libraries.jooq
 
-  implementation polygene.library( 'sql-liquibase' )
-
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.internals.testsupport

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/docs/es-sqlkv.txt
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/docs/es-sqlkv.txt b/extensions/entitystore-sqlkv/src/docs/es-sqlkv.txt
index f36e39d..cfaa275 100644
--- a/extensions/entitystore-sqlkv/src/docs/es-sqlkv.txt
+++ b/extensions/entitystore-sqlkv/src/docs/es-sqlkv.txt
@@ -30,8 +30,6 @@ EntityStore service backed by a SQL database with a simple schema where entities
 This extension fully leverage the <<library-sql>> meaning that you must use it to assemble your DataSource and that you
 get <<library-circuitbreaker,Circuit Breaker>> and <<library-jmx, JMX>> integration for free.
 
-The database schema is managed using <<library-sql-liquibase>>.
-
 TIP: See the <<sample-sql-support>> that demonstrate combined use of <<library-sql>>, <<extension-es-sql>> and
 <<extension-indexing-sql>>.
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/27dc60c4/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java
index e5e3510..c1285cd 100644
--- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java
+++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java
@@ -22,24 +22,16 @@ import org.apache.polygene.api.property.Property;
 import org.apache.polygene.library.sql.common.SQLConfiguration;
 
 // START SNIPPET: config
-public interface SQLEntityStoreConfiguration extends SQLConfiguration
+public interface SQLEntityStoreConfiguration
 {
     /**
-     * Name of the database schema to use.
-     * Ignored on SQL databases that don't support schemas.
-     */
-    @UseDefaults( "POLYGENE_ES" )
-    @Override
-    Property<String> schemaName();
-
-    /**
      * Name of the entities table.
      */
     @UseDefaults( "POLYGENE_ENTITIES" )
     Property<String> entityTableName();
 
     /**
-     * Defines whether the database schema and table should be created if not already present.
+     * Defines whether the database table should be created if not already present.
      */
     @UseDefaults( "true" )
     Property<Boolean> createIfMissing();