Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 865B0200D24 for ; Mon, 18 Sep 2017 17:21:02 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 852931609D8; Mon, 18 Sep 2017 15:21:02 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 401E51609E6 for ; Mon, 18 Sep 2017 17:21:00 +0200 (CEST) Received: (qmail 60527 invoked by uid 500); 18 Sep 2017 15:20:59 -0000 Mailing-List: contact commits-help@polygene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@polygene.apache.org Delivered-To: mailing list commits@polygene.apache.org Received: (qmail 60277 invoked by uid 99); 18 Sep 2017 15:20:59 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 18 Sep 2017 15:20:59 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 0EF70F5756; Mon, 18 Sep 2017 15:20:58 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: niclas@apache.org To: commits@polygene.apache.org Date: Mon, 18 Sep 2017 15:21:08 -0000 Message-Id: In-Reply-To: <67e0fc97294c4572b0f4013e21c99f08@git.apache.org> References: <67e0fc97294c4572b0f4013e21c99f08@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [12/15] polygene-java git commit: Introducing the whole test suite from entitystore-sqlkv and starting to solidify the implementation against all these SQL systems. archived-at: Mon, 18 Sep 2017 15:21:02 -0000 http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreConfiguration.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreConfiguration.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreConfiguration.java deleted file mode 100644 index 19658ea..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreConfiguration.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * 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.sql; - -import org.apache.polygene.api.common.UseDefaults; -import org.apache.polygene.api.property.Property; -import org.apache.polygene.library.sql.common.SQLConfiguration; - -// START SNIPPET: config -public interface SQLEntityStoreConfiguration extends SQLConfiguration -{ - /** - * Name of the database schema to use. - * Ignored on SQL databases that don't support schemas. - */ - @UseDefaults( "POLYGENE_ES" ) - @Override - Property schemaName(); - - /** - * Name of the entities table. - */ - @UseDefaults( "POLYGENE_ENTITIES" ) - Property entityTableName(); - - /** - * Defines whether the database schema and table should be created if not already present. - */ - @UseDefaults( "true" ) - Property createIfMissing(); -} -// END SNIPPET: config http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreMixin.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreMixin.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreMixin.java deleted file mode 100644 index 293ce58..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreMixin.java +++ /dev/null @@ -1,244 +0,0 @@ -/* - * 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.sql; - -import java.io.IOException; -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; -import org.apache.polygene.api.injection.scope.Service; -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.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.conf.Settings; -import org.jooq.impl.DSL; - -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"; - - @Service - private DataSource dataSource; - - @Service - private LiquibaseService liquibaseService; - - @Service - private JavaxJsonFactories jsonFactories; - - @Uses - private ServiceDescriptor descriptor; - - @This - private Configuration configuration; - - private Schema schema; - private Table table; - private Field identityColumn; - private Field versionColumn; - private Field stateColumn; - private DSLContext dsl; - - @Override - public void activateService() throws Exception - { - configuration.refresh(); - SQLEntityStoreConfiguration config = configuration.get(); - - // 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 ) - ); - 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(); - } - } - - @Override - public void passivateService() throws Exception - { - dsl = null; - schema = null; - table = null; - identityColumn = null; - versionColumn = null; - stateColumn = null; - } - - @Override - public Reader get( EntityReference entityReference ) - { - String state = dsl.select( stateColumn ) - .from( table ) - .where( identityColumn.equal( entityReference.identity().toString() ) ) - .fetchOptional( stateColumn ) - .orElseThrow( () -> new EntityNotFoundException( entityReference ) ); - return new StringReader( state ); - } - - @Override - public Stream entityStates() - { - return dsl.select( stateColumn ) - .from( table ) - .fetch( stateColumn ) - .stream() - .map( StringReader::new ); - } - - @Override - public void applyChanges( MapChanges changes ) throws Exception - { - List operations = new ArrayList<>(); - changes.visitMap( new MapChanger() - { - @Override - public Writer newEntity( EntityReference ref, EntityDescriptor entityDescriptor ) - { - return new StringWriter( 1000 ) - { - @Override - public void close() throws IOException - { - super.close(); - String state = toString(); - String version = jsonFactories.readerFactory().createReader( new StringReader( state ) ) - .readObject() - .getString( JSONKeys.VERSION ); - operations.add( - dsl.insertInto( table ) - .columns( identityColumn, versionColumn, stateColumn ) - .values( ref.identity().toString(), version, state ) - ); - } - }; - } - - @Override - public Writer updateEntity( MapChange mapChange ) - { - return new StringWriter( 1000 ) - { - @Override - public void close() throws IOException - { - super.close(); - String state = toString(); - operations.add( - dsl.update( table ) - .set( versionColumn, mapChange.newVersion() ) - .set( stateColumn, state ) - .where( identityColumn.equal( mapChange.reference().identity().toString() ) ) - .and( versionColumn.equal( mapChange.previousVersion() ) ) - ); - } - }; - } - - @Override - public void removeEntity( EntityReference ref, EntityDescriptor entityDescriptor ) - { - operations.add( - dsl.deleteFrom( table ) - .where( identityColumn.equal( ref.identity().toString() ) ) - ); - } - } ); - dsl.batch( operations ).execute(); - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreService.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreService.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreService.java deleted file mode 100644 index 9e4e0e7..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/SQLEntityStoreService.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * 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.sql; - -import org.apache.polygene.api.concern.Concerns; -import org.apache.polygene.api.configuration.Configuration; -import org.apache.polygene.api.mixin.Mixins; -import org.apache.polygene.api.service.ServiceActivation; -import org.apache.polygene.spi.entitystore.ConcurrentModificationCheckConcern; -import org.apache.polygene.spi.entitystore.EntityStateVersions; -import org.apache.polygene.spi.entitystore.EntityStore; -import org.apache.polygene.spi.entitystore.StateChangeNotificationConcern; -import org.apache.polygene.spi.entitystore.helpers.JSONMapEntityStoreActivation; -import org.apache.polygene.spi.entitystore.helpers.JSONMapEntityStoreMixin; - -/** - * SQL EntityStore service. - */ -@Concerns( { StateChangeNotificationConcern.class, ConcurrentModificationCheckConcern.class } ) -@Mixins( { JSONMapEntityStoreMixin.class, SQLEntityStoreMixin.class } ) -public interface SQLEntityStoreService - extends ServiceActivation, - JSONMapEntityStoreActivation, - EntityStore, - EntityStateVersions, - Configuration -{ -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java deleted file mode 100644 index 24e8ec5..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/AbstractSQLEntityStoreAssembler.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * 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.sql.assembly; - -import org.apache.polygene.api.identity.Identity; -import org.apache.polygene.api.identity.StringIdentity; -import org.apache.polygene.bootstrap.Assemblers; -import org.apache.polygene.bootstrap.AssemblyException; -import org.apache.polygene.bootstrap.ModuleAssembly; -import org.apache.polygene.entitystore.sql.SQLEntityStoreConfiguration; -import org.apache.polygene.entitystore.sql.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; - -/** - * Base SQL EntityStore assembly. - */ -public abstract class AbstractSQLEntityStoreAssembler - extends Assemblers.VisibilityIdentityConfig -{ - 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"; - - private String changelogPath = DEFAULT_CHANGELOG_PATH; - - @Override - public void assemble( ModuleAssembly module ) - { - super.assemble( module ); - SQLDialect dialect = getSQLDialect(); - if( dialect == null ) - { - throw new AssemblyException( "SQLDialect must not be null" ); - } - Settings settings = getSettings(); - if( settings == null ) - { - throw new AssemblyException( "Settings must not be null" ); - } - - 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() ) - .setMetaInfo( dialect ) - .setMetaInfo( settings ); - - if( hasConfig() ) - { - configModule().entities( SQLEntityStoreConfiguration.class ).visibleIn( configVisibility() ); - } - } - - public AssemblerType withLiquibaseChangelog( String changelogPath ) - { - this.changelogPath = changelogPath; - return (AssemblerType) this; - } - - protected Settings getSettings() - { - return new Settings().withRenderNameStyle( RenderNameStyle.QUOTED ); - } - - protected SQLDialect getSQLDialect() - { - return SQLDialect.DEFAULT; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/DerbySQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/DerbySQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/DerbySQLEntityStoreAssembler.java deleted file mode 100644 index 4e88d01..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/DerbySQLEntityStoreAssembler.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.sql.assembly; - -import org.jooq.SQLDialect; - -/** - * Derby EntityStore assembly. - */ -public class DerbySQLEntityStoreAssembler - extends AbstractSQLEntityStoreAssembler -{ - @Override - protected SQLDialect getSQLDialect() - { - return SQLDialect.DERBY; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/H2SQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/H2SQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/H2SQLEntityStoreAssembler.java deleted file mode 100644 index 928e660..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/H2SQLEntityStoreAssembler.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.sql.assembly; - -import org.jooq.SQLDialect; - -/** - * H2 EntityStore assembly. - */ -public class H2SQLEntityStoreAssembler - extends AbstractSQLEntityStoreAssembler -{ - @Override - protected SQLDialect getSQLDialect() - { - return SQLDialect.H2; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/MySQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/MySQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/MySQLEntityStoreAssembler.java deleted file mode 100644 index dec7be5..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/MySQLEntityStoreAssembler.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.sql.assembly; - -import org.jooq.SQLDialect; - -/** - * MySQL EntityStore assembly. - */ -public class MySQLEntityStoreAssembler - extends AbstractSQLEntityStoreAssembler -{ - @Override - protected SQLDialect getSQLDialect() - { - return SQLDialect.MYSQL; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/PostgreSQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/PostgreSQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/PostgreSQLEntityStoreAssembler.java deleted file mode 100644 index 8e3e31f..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/PostgreSQLEntityStoreAssembler.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.sql.assembly; - -import org.jooq.SQLDialect; - -/** - * PostgreSQL EntityStore assembly. - */ -public class PostgreSQLEntityStoreAssembler - extends AbstractSQLEntityStoreAssembler -{ - @Override - protected SQLDialect getSQLDialect() - { - return SQLDialect.POSTGRES; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLEntityStoreAssembler.java deleted file mode 100644 index 1477c6b..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLEntityStoreAssembler.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * 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.sql.assembly; - -/** - * This is a dummy Assembler to support the Yeoman Polygene Generator, which require naming conventions for - * the systems that it supports. - */ -public class SQLEntityStoreAssembler extends H2SQLEntityStoreAssembler -{} - http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLiteEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLiteEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLiteEntityStoreAssembler.java deleted file mode 100644 index 2615316..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/SQLiteEntityStoreAssembler.java +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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.sql.assembly; - -import org.jooq.SQLDialect; - -/** - * SQLite EntityStore assembly. - */ -public class SQLiteEntityStoreAssembler - extends AbstractSQLEntityStoreAssembler -{ - @Override - protected SQLDialect getSQLDialect() - { - return SQLDialect.SQLITE; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/package.html ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/package.html b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/package.html deleted file mode 100644 index a93cf6f..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/assembly/package.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -

SQL EntityStore Assembly.

- - http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/package.html ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/package.html b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/package.html deleted file mode 100644 index a90af3e..0000000 --- a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sql/package.html +++ /dev/null @@ -1,24 +0,0 @@ - - - -

SQL EntityStore.

- - http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/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 new file mode 100644 index 0000000..e5e3510 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreConfiguration.java @@ -0,0 +1,47 @@ +/* + * 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 org.apache.polygene.api.common.UseDefaults; +import org.apache.polygene.api.property.Property; +import org.apache.polygene.library.sql.common.SQLConfiguration; + +// START SNIPPET: config +public interface SQLEntityStoreConfiguration extends SQLConfiguration +{ + /** + * Name of the database schema to use. + * Ignored on SQL databases that don't support schemas. + */ + @UseDefaults( "POLYGENE_ES" ) + @Override + Property schemaName(); + + /** + * Name of the entities table. + */ + @UseDefaults( "POLYGENE_ENTITIES" ) + Property entityTableName(); + + /** + * Defines whether the database schema and table should be created if not already present. + */ + @UseDefaults( "true" ) + Property createIfMissing(); +} +// END SNIPPET: config http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/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 new file mode 100644 index 0000000..f3c4b93 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreMixin.java @@ -0,0 +1,244 @@ +/* + * 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.io.IOException; +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; +import org.apache.polygene.api.injection.scope.Service; +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.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.conf.Settings; +import org.jooq.impl.DSL; + +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"; + + @Service + private DataSource dataSource; + + @Service + private LiquibaseService liquibaseService; + + @Service + private JavaxJsonFactories jsonFactories; + + @Uses + private ServiceDescriptor descriptor; + + @This + private Configuration configuration; + + private Schema schema; + private Table table; + private Field identityColumn; + private Field versionColumn; + private Field stateColumn; + private DSLContext dsl; + + @Override + public void activateService() throws Exception + { + configuration.refresh(); + SQLEntityStoreConfiguration config = configuration.get(); + + // 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 ) + ); + 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(); + } + } + + @Override + public void passivateService() throws Exception + { + dsl = null; + schema = null; + table = null; + identityColumn = null; + versionColumn = null; + stateColumn = null; + } + + @Override + public Reader get( EntityReference entityReference ) + { + String state = dsl.select( stateColumn ) + .from( table ) + .where( identityColumn.equal( entityReference.identity().toString() ) ) + .fetchOptional( stateColumn ) + .orElseThrow( () -> new EntityNotFoundException( entityReference ) ); + return new StringReader( state ); + } + + @Override + public Stream entityStates() + { + return dsl.select( stateColumn ) + .from( table ) + .fetch( stateColumn ) + .stream() + .map( StringReader::new ); + } + + @Override + public void applyChanges( MapChanges changes ) throws Exception + { + List operations = new ArrayList<>(); + changes.visitMap( new MapChanger() + { + @Override + public Writer newEntity( EntityReference ref, EntityDescriptor entityDescriptor ) + { + return new StringWriter( 1000 ) + { + @Override + public void close() throws IOException + { + super.close(); + String state = toString(); + String version = jsonFactories.readerFactory().createReader( new StringReader( state ) ) + .readObject() + .getString( JSONKeys.VERSION ); + operations.add( + dsl.insertInto( table ) + .columns( identityColumn, versionColumn, stateColumn ) + .values( ref.identity().toString(), version, state ) + ); + } + }; + } + + @Override + public Writer updateEntity( MapChange mapChange ) + { + return new StringWriter( 1000 ) + { + @Override + public void close() throws IOException + { + super.close(); + String state = toString(); + operations.add( + dsl.update( table ) + .set( versionColumn, mapChange.newVersion() ) + .set( stateColumn, state ) + .where( identityColumn.equal( mapChange.reference().identity().toString() ) ) + .and( versionColumn.equal( mapChange.previousVersion() ) ) + ); + } + }; + } + + @Override + public void removeEntity( EntityReference ref, EntityDescriptor entityDescriptor ) + { + operations.add( + dsl.deleteFrom( table ) + .where( identityColumn.equal( ref.identity().toString() ) ) + ); + } + } ); + dsl.batch( operations ).execute(); + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreService.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreService.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreService.java new file mode 100644 index 0000000..e31f01f --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/SQLEntityStoreService.java @@ -0,0 +1,43 @@ +/* + * 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 org.apache.polygene.api.concern.Concerns; +import org.apache.polygene.api.configuration.Configuration; +import org.apache.polygene.api.mixin.Mixins; +import org.apache.polygene.api.service.ServiceActivation; +import org.apache.polygene.spi.entitystore.ConcurrentModificationCheckConcern; +import org.apache.polygene.spi.entitystore.EntityStateVersions; +import org.apache.polygene.spi.entitystore.EntityStore; +import org.apache.polygene.spi.entitystore.StateChangeNotificationConcern; +import org.apache.polygene.spi.entitystore.helpers.JSONMapEntityStoreActivation; +import org.apache.polygene.spi.entitystore.helpers.JSONMapEntityStoreMixin; + +/** + * SQL EntityStore service. + */ +@Concerns( { StateChangeNotificationConcern.class, ConcurrentModificationCheckConcern.class } ) +@Mixins( { JSONMapEntityStoreMixin.class, SQLEntityStoreMixin.class } ) +public interface SQLEntityStoreService + extends ServiceActivation, + JSONMapEntityStoreActivation, + EntityStore, + EntityStateVersions, + Configuration +{ +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/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 new file mode 100644 index 0000000..c2f7eb2 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/AbstractSQLEntityStoreAssembler.java @@ -0,0 +1,98 @@ +/* + * 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.apache.polygene.api.identity.Identity; +import org.apache.polygene.api.identity.StringIdentity; +import org.apache.polygene.bootstrap.Assemblers; +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; + +/** + * Base SQL EntityStore assembly. + */ +public abstract class AbstractSQLEntityStoreAssembler + extends Assemblers.VisibilityIdentityConfig +{ + 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"; + + private String changelogPath = DEFAULT_CHANGELOG_PATH; + + @Override + public void assemble( ModuleAssembly module ) + { + super.assemble( module ); + SQLDialect dialect = getSQLDialect(); + if( dialect == null ) + { + throw new AssemblyException( "SQLDialect must not be null" ); + } + Settings settings = getSettings(); + if( settings == null ) + { + throw new AssemblyException( "Settings must not be null" ); + } + + 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() ) + .setMetaInfo( dialect ) + .setMetaInfo( settings ); + + if( hasConfig() ) + { + configModule().entities( SQLEntityStoreConfiguration.class ).visibleIn( configVisibility() ); + } + } + + public AssemblerType withLiquibaseChangelog( String changelogPath ) + { + this.changelogPath = changelogPath; + return (AssemblerType) this; + } + + protected Settings getSettings() + { + return new Settings().withRenderNameStyle( RenderNameStyle.QUOTED ); + } + + protected SQLDialect getSQLDialect() + { + return SQLDialect.DEFAULT; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/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 new file mode 100644 index 0000000..9110b80 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/DerbySQLEntityStoreAssembler.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; + +/** + * Derby EntityStore assembly. + */ +public class DerbySQLEntityStoreAssembler + extends AbstractSQLEntityStoreAssembler +{ + @Override + protected SQLDialect getSQLDialect() + { + return SQLDialect.DERBY; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/H2SQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/H2SQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/H2SQLEntityStoreAssembler.java new file mode 100644 index 0000000..b046de6 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/H2SQLEntityStoreAssembler.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; + +/** + * H2 EntityStore assembly. + */ +public class H2SQLEntityStoreAssembler + extends AbstractSQLEntityStoreAssembler +{ + @Override + protected SQLDialect getSQLDialect() + { + return SQLDialect.H2; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MySQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MySQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MySQLEntityStoreAssembler.java new file mode 100644 index 0000000..2e48adb --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/MySQLEntityStoreAssembler.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 MySQLEntityStoreAssembler + extends AbstractSQLEntityStoreAssembler +{ + @Override + protected SQLDialect getSQLDialect() + { + return SQLDialect.MYSQL; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/PostgreSQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/PostgreSQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/PostgreSQLEntityStoreAssembler.java new file mode 100644 index 0000000..cadd0e1 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/PostgreSQLEntityStoreAssembler.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; + +/** + * PostgreSQL EntityStore assembly. + */ +public class PostgreSQLEntityStoreAssembler + extends AbstractSQLEntityStoreAssembler +{ + @Override + protected SQLDialect getSQLDialect() + { + return SQLDialect.POSTGRES; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLEntityStoreAssembler.java new file mode 100644 index 0000000..04f8465 --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLEntityStoreAssembler.java @@ -0,0 +1,28 @@ +/* + * 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; + +/** + * This is a dummy Assembler to support the Yeoman Polygene Generator, which require naming conventions for + * the systems that it supports. + */ +public class SQLEntityStoreAssembler extends H2SQLEntityStoreAssembler +{} + http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLiteEntityStoreAssembler.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLiteEntityStoreAssembler.java b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLiteEntityStoreAssembler.java new file mode 100644 index 0000000..5bc71bf --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/SQLiteEntityStoreAssembler.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; + +/** + * SQLite EntityStore assembly. + */ +public class SQLiteEntityStoreAssembler + extends AbstractSQLEntityStoreAssembler +{ + @Override + protected SQLDialect getSQLDialect() + { + return SQLDialect.SQLITE; + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/package.html ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/package.html b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/package.html new file mode 100644 index 0000000..a93cf6f --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/assembly/package.html @@ -0,0 +1,24 @@ + + + +

SQL EntityStore Assembly.

+ + http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/package.html ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/package.html b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/package.html new file mode 100644 index 0000000..a90af3e --- /dev/null +++ b/extensions/entitystore-sqlkv/src/main/java/org/apache/polygene/entitystore/sqlkv/package.html @@ -0,0 +1,24 @@ + + + +

SQL EntityStore.

+ + http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java deleted file mode 100644 index 4bd1578..0000000 --- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTest.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * 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.sql; - -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.sql.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 static org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY; - -public class DerbySQLEntityStoreTest - extends AbstractEntityStoreTest -{ - @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( "derby-datasource-service" ) - .visibleIn( Visibility.module ) - .withConfig( config, Visibility.layer ) - .assemble( module ); - - // DataSource - new DataSourceAssembler() - .withDataSourceServiceIdentity( "derby-datasource-service" ) - .identifiedBy( "derby-datasource" ) - .visibleIn( Visibility.module ) - .withCircuitBreaker() - .assemble( module ); - - // SQL EntityStore - new DerbySQLEntityStoreAssembler() - .visibleIn( Visibility.application ) - .withConfig( config, Visibility.layer ) - .assemble( module ); - } - // END SNIPPET: assembly - - @Override - 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(); - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java deleted file mode 100644 index 7fbfb2a..0000000 --- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/DerbySQLEntityStoreTestSuite.java +++ /dev/null @@ -1,94 +0,0 @@ -/* - * 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.sql; - -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.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 static org.apache.polygene.entitystore.sql.assembly.DerbySQLEntityStoreAssembler.DEFAULT_ENTITYSTORE_IDENTITY; - -public class DerbySQLEntityStoreTestSuite extends EntityStoreTestSuite -{ - @Override - protected void defineStorageModule( ModuleAssembly module ) - { - module.defaultServices(); - // DataSourceService - new DBCPDataSourceServiceAssembler() - .identifiedBy( "derby-datasource-service" ) - .visibleIn( Visibility.module ) - .withConfig( configModule, Visibility.application ) - .assemble( module ); - - // DataSource - new DataSourceAssembler() - .withDataSourceServiceIdentity( "derby-datasource-service" ) - .identifiedBy( "derby-datasource" ) - .visibleIn( Visibility.module ) - .withCircuitBreaker() - .assemble( module ); - - // SQL EntityStore - new DerbySQLEntityStoreAssembler() - .visibleIn( Visibility.application ) - .withConfig( configModule, Visibility.application ) - .assemble( module ); - } - - @Override - 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(); - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java deleted file mode 100644 index 4b4b759..0000000 --- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTest.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * 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.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.H2SQLEntityStoreAssembler; -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; - -public class H2SQLEntityStoreTest - extends AbstractEntityStoreTest -{ - @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( "h2-datasource-service" ) - .visibleIn( Visibility.module ) - .withConfig( config, Visibility.layer ) - .assemble( module ); - - // DataSource - new DataSourceAssembler() - .withDataSourceServiceIdentity( "h2-datasource-service" ) - .identifiedBy( "h2-datasource" ) - .visibleIn( Visibility.module ) - .withCircuitBreaker() - .assemble( module ); - - // SQL EntityStore - new H2SQLEntityStoreAssembler() - .visibleIn( Visibility.application ) - .withConfig( config, Visibility.layer ) - .assemble( module ); - } - // END SNIPPET: assembly -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/0f8f0b8d/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java b/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java deleted file mode 100644 index f763238..0000000 --- a/extensions/entitystore-sqlkv/src/test/java/org/apache/polygene/entitystore/sql/H2SQLEntityStoreTestSuite.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * 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.sql; - -import org.apache.polygene.api.common.Visibility; -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; - -public class H2SQLEntityStoreTestSuite extends EntityStoreTestSuite -{ - @Override - protected void defineStorageModule( ModuleAssembly module ) - { - module.defaultServices(); - // DataSourceService - new DBCPDataSourceServiceAssembler() - .identifiedBy( "h2-datasource-service" ) - .visibleIn( Visibility.module ) - .withConfig( configModule, Visibility.application ) - .assemble( module ); - - // DataSource - new DataSourceAssembler() - .withDataSourceServiceIdentity( "h2-datasource-service" ) - .identifiedBy( "h2-datasource" ) - .visibleIn( Visibility.module ) - .withCircuitBreaker() - .assemble( module ); - - // SQL EntityStore - new H2SQLEntityStoreAssembler() - .visibleIn( Visibility.application ) - .withConfig( configModule, Visibility.application ) - .assemble( module ); - } -}