remove core/io usage from tests & helpers in libraries & extensions
Project: http://git-wip-us.apache.org/repos/asf/zest-java/repo Commit: http://git-wip-us.apache.org/repos/asf/zest-java/commit/a660c710 Tree: http://git-wip-us.apache.org/repos/asf/zest-java/tree/a660c710 Diff: http://git-wip-us.apache.org/repos/asf/zest-java/diff/a660c710 Branch: refs/heads/develop Commit: a660c7106925bbe5f7ae824fa5e051c972327f1c Parents: ebe9f8c Author: Paul Merlin <[email protected]> Authored: Mon Nov 28 17:28:24 2016 +0100 Committer: Paul Merlin <[email protected]> Committed: Mon Nov 28 17:45:06 2016 +0100 ---------------------------------------------------------------------- .../AbstractCollectionSerializationTest.java | 18 --- .../jclouds/JCloudsMapEntityStoreMixin.java | 47 ++---- .../apache/zest/library/groovy/GroovyMixin.java | 24 +-- .../sql/liquibase/LiquibaseServiceTest.java | 24 ++- libraries/sql/src/docs/sql.txt | 15 +- .../zest/library/sql/common/Databases.java | 156 ++++--------------- ...taSourceConfigurationManagerServiceTest.java | 145 ++++------------- 7 files changed, 96 insertions(+), 333 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java index d843d6f..15ad941 100644 --- a/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java +++ b/core/testsupport/src/main/java/org/apache/zest/test/value/AbstractCollectionSerializationTest.java @@ -44,11 +44,6 @@ import org.apache.zest.functional.Iterables; import org.apache.zest.test.AbstractZestTest; import org.junit.Test; -import static org.apache.zest.io.Inputs.iterable; -import static org.apache.zest.io.Inputs.text; -import static org.apache.zest.io.Outputs.collection; -import static org.apache.zest.io.Outputs.text; -import static org.apache.zest.io.Transforms.map; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; @@ -72,19 +67,6 @@ public class AbstractCollectionSerializationTest protected ValueSerialization valueSerialization; @Test - public void testIOString() - throws Exception - { - StringBuilder sb = new StringBuilder(); - iterable( byteCollection() ).transferTo( map( valueSerialization.serialize(), text( sb ) ) ); - String output = sb.toString(); - - List<Byte> list = new ArrayList<>(); - text( output ).transferTo( map( valueSerialization.deserialize( module, Byte.class ), collection( list ) ) ); - assertEquals( byteCollection(), list ); - } - - @Test public void givenPrimitiveArrayWithIntsWhenSerializingAndDeserializingExpectEquals() throws Exception { http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreMixin.java ---------------------------------------------------------------------- diff --git a/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreMixin.java b/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreMixin.java index 37c0d0e..f8c2ac1 100644 --- a/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreMixin.java +++ b/extensions/entitystore-jclouds/src/main/java/org/apache/zest/entitystore/jclouds/JCloudsMapEntityStoreMixin.java @@ -24,7 +24,6 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Maps; import com.google.common.io.ByteSource; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; @@ -32,33 +31,33 @@ import java.io.Reader; import java.io.StringReader; import java.io.StringWriter; import java.io.Writer; +import java.nio.charset.StandardCharsets; import java.util.Map; import java.util.Properties; +import java.util.Scanner; import java.util.Set; -import org.jclouds.ContextBuilder; -import org.jclouds.apis.ApiMetadata; -import org.jclouds.apis.Apis; -import org.jclouds.blobstore.BlobStore; -import org.jclouds.blobstore.BlobStoreContext; -import org.jclouds.blobstore.domain.Blob; -import org.jclouds.blobstore.domain.StorageMetadata; -import org.jclouds.io.Payload; -import org.jclouds.providers.ProviderMetadata; -import org.jclouds.providers.Providers; import org.apache.zest.api.configuration.Configuration; import org.apache.zest.api.entity.EntityDescriptor; import org.apache.zest.api.entity.EntityReference; import org.apache.zest.api.injection.scope.This; import org.apache.zest.api.service.ServiceActivation; import org.apache.zest.io.Input; -import org.apache.zest.io.Inputs; import org.apache.zest.io.Output; -import org.apache.zest.io.Outputs; import org.apache.zest.io.Receiver; import org.apache.zest.io.Sender; import org.apache.zest.spi.entitystore.EntityNotFoundException; import org.apache.zest.spi.entitystore.EntityStoreException; import org.apache.zest.spi.entitystore.helpers.MapEntityStore; +import org.jclouds.ContextBuilder; +import org.jclouds.apis.ApiMetadata; +import org.jclouds.apis.Apis; +import org.jclouds.blobstore.BlobStore; +import org.jclouds.blobstore.BlobStoreContext; +import org.jclouds.blobstore.domain.Blob; +import org.jclouds.blobstore.domain.StorageMetadata; +import org.jclouds.io.Payload; +import org.jclouds.providers.ProviderMetadata; +import org.jclouds.providers.Providers; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -179,31 +178,15 @@ public class JCloudsMapEntityStoreMixin { throw new EntityNotFoundException( entityReference ); } - InputStream input = null; - try + try( InputStream input = payload.openStream() ) { - input = payload.openStream(); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - Inputs.byteBuffer( input, 4096 ).transferTo( Outputs.byteBuffer( baos ) ); - return new StringReader( baos.toString( "UTF-8" ) ); + String state = new Scanner( input, StandardCharsets.UTF_8.name() ).useDelimiter( "\\Z" ).next(); + return new StringReader( state ); } catch( IOException ex ) { throw new EntityStoreException( "Unable to read entity state for: " + entityReference, ex ); } - finally - { - if( input != null ) - { - try - { - input.close(); - } - catch( IOException ignored ) - { - } - } - } } @Override http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/libraries/lang-groovy/src/main/java/org/apache/zest/library/groovy/GroovyMixin.java ---------------------------------------------------------------------- diff --git a/libraries/lang-groovy/src/main/java/org/apache/zest/library/groovy/GroovyMixin.java b/libraries/lang-groovy/src/main/java/org/apache/zest/library/groovy/GroovyMixin.java index 2e55911..64449c5 100644 --- a/libraries/lang-groovy/src/main/java/org/apache/zest/library/groovy/GroovyMixin.java +++ b/libraries/lang-groovy/src/main/java/org/apache/zest/library/groovy/GroovyMixin.java @@ -32,12 +32,11 @@ import java.lang.reflect.Method; import java.net.URL; import java.util.HashMap; import java.util.Map; +import java.util.Scanner; import org.apache.zest.api.common.AppliesTo; import org.apache.zest.api.common.AppliesToFilter; import org.apache.zest.api.composite.Composite; import org.apache.zest.api.injection.scope.This; -import org.apache.zest.io.Inputs; -import org.apache.zest.io.Outputs; /** * Generic mixin that implements interfaces by delegating to Groovy functions @@ -75,8 +74,7 @@ public class GroovyMixin public GroovyMixin() { - - groovyObjects = new HashMap<Class, GroovyObject>(); + groovyObjects = new HashMap<>(); } @Override @@ -104,22 +102,12 @@ public class GroovyMixin GroovyObject groovyObject = groovyObjects.get( declaringClass ); if( groovyObject == null ) { - InputStream is = null; final Class groovyClass; - try + try( InputStream inputStream = groovySource.openStream() ) { - is = groovySource.openStream(); - StringBuilder sourceBuilder = new StringBuilder(); - Inputs.text( groovySource ).transferTo( Outputs.text( sourceBuilder ) ); + String sourceText = new Scanner( inputStream ).useDelimiter( "\\Z" ).next(); GroovyClassLoader groovyClassLoader = new GroovyClassLoader( declaringClass.getClassLoader() ); - groovyClass = groovyClassLoader.parseClass( sourceBuilder.toString() ); - } - finally - { - if( is != null ) - { - is.close(); - } + groovyClass = groovyClassLoader.parseClass( sourceText ); } groovyObject = (GroovyObject) groovyClass.newInstance(); if( hasProperty( groovyObject, "This" ) ) @@ -210,7 +198,5 @@ public class GroovyMixin this.script = script; this.url = url; } - } - } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java ---------------------------------------------------------------------- diff --git a/libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java b/libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java index 2a85472..83ef261 100644 --- a/libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java +++ b/libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java @@ -26,8 +26,6 @@ import java.util.ArrayList; import java.util.List; import java.util.function.Function; import javax.sql.DataSource; -import org.apache.zest.bootstrap.unitofwork.DefaultUnitOfWorkAssembler; -import org.junit.Test; import org.apache.zest.api.activation.ActivationEvent; import org.apache.zest.api.activation.ActivationEventListener; import org.apache.zest.api.activation.ActivationException; @@ -40,18 +38,15 @@ import org.apache.zest.api.value.ValueComposite; import org.apache.zest.bootstrap.AssemblyException; import org.apache.zest.bootstrap.ModuleAssembly; import org.apache.zest.bootstrap.SingletonAssembler; -import org.apache.zest.io.Inputs; -import org.apache.zest.io.Outputs; import org.apache.zest.library.sql.assembly.DataSourceAssembler; import org.apache.zest.library.sql.common.Databases; import org.apache.zest.library.sql.dbcp.DBCPDataSourceServiceAssembler; import org.apache.zest.test.EntityTestAssembler; +import org.junit.Test; import static org.hamcrest.CoreMatchers.equalTo; import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; -import static org.apache.zest.io.Outputs.collection; -import static org.apache.zest.io.Transforms.map; /** * Test DataSource and Liquibase services @@ -92,8 +87,6 @@ public class LiquibaseServiceTest // END SNIPPET: assembly module.forMixin( LiquibaseConfiguration.class ).declareDefaults().enabled().set( true ); module.forMixin( LiquibaseConfiguration.class ).declareDefaults().changeLog().set( "changelog.xml" ); - - new DefaultUnitOfWorkAssembler().assemble( module ); } @Override @@ -159,14 +152,17 @@ public class LiquibaseServiceTest } }; - // START SNIPPET: io - // Select rows and load them in a List List<SomeValue> rows = new ArrayList<SomeValue>(); - database.query( "select * from test" ).transferTo( map( toValue, collection( rows ) ) ); + database.query( "select * from test", new Databases.ResultSetVisitor() { + @Override + public boolean visit( final ResultSet resultSet ) throws SQLException + { + rows.add( toValue.apply( resultSet ) ); + return true; + } + } ); - // Transfer all rows to System.out - Inputs.iterable( rows ).transferTo( Outputs.systemOut() ); - // END SNIPPET: io + rows.forEach( System.out::println ); } interface SomeValue http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/libraries/sql/src/docs/sql.txt ---------------------------------------------------------------------- diff --git a/libraries/sql/src/docs/sql.txt b/libraries/sql/src/docs/sql.txt index 76f1e24..9f9413a 100644 --- a/libraries/sql/src/docs/sql.txt +++ b/libraries/sql/src/docs/sql.txt @@ -29,7 +29,7 @@ source=libraries/sql/dev-status.xml The SQL Library provides facilities for working with SQL databases. The center piece is the DataSource support that comes with -<<library-circuitbreaker>> and <<library-jmx>> support. Facilities for doing SQL I/O with the <<core-io>> are provided. +<<library-circuitbreaker>> and <<library-jmx>> support. TIP: See the <<sample-sql-support>> that demonstrate combined use of <<library-sql>>, <<extension-es-sql>> and <<extension-indexing-sql>>. @@ -164,19 +164,6 @@ tag=cb-datasource - -== I/O == - -Here is a simple example: - -[snippet,java] ----- -source=libraries/sql-liquibase/src/test/java/org/apache/zest/library/sql/liquibase/LiquibaseServiceTest.java -tag=io ----- - - - == JMX == Thanks to the <<library-jmx>> the Configuration of DataSources is exposed http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/libraries/sql/src/main/java/org/apache/zest/library/sql/common/Databases.java ---------------------------------------------------------------------- diff --git a/libraries/sql/src/main/java/org/apache/zest/library/sql/common/Databases.java b/libraries/sql/src/main/java/org/apache/zest/library/sql/common/Databases.java index 9b03a38..4d66954 100644 --- a/libraries/sql/src/main/java/org/apache/zest/library/sql/common/Databases.java +++ b/libraries/sql/src/main/java/org/apache/zest/library/sql/common/Databases.java @@ -25,17 +25,12 @@ import java.sql.ResultSet; import java.sql.SQLException; import javax.sql.DataSource; import org.apache.zest.functional.Visitor; -import org.apache.zest.io.Input; -import org.apache.zest.io.Output; -import org.apache.zest.io.Receiver; -import org.apache.zest.io.Sender; /** * Utility methods for performing SQL calls wrapping a given DataSource. */ public class Databases { - DataSource source; /** @@ -50,15 +45,18 @@ public class Databases * Perform SQL update statement. */ public int update( String sql ) - throws SQLException + throws SQLException { Connection connection = null; PreparedStatement stmt = null; - try { + try + { connection = source.getConnection(); stmt = connection.prepareStatement( sql ); return stmt.executeUpdate(); - } finally { + } + finally + { SQLUtil.closeQuietly( stmt ); SQLUtil.closeQuietly( connection ); } @@ -71,16 +69,19 @@ public class Databases * update the PreparedStatement with actual values. */ public int update( String sql, StatementVisitor visitor ) - throws SQLException + throws SQLException { Connection connection = null; PreparedStatement stmt = null; - try { + try + { connection = source.getConnection(); stmt = connection.prepareStatement( sql ); visitor.visit( stmt ); return stmt.executeUpdate(); - } finally { + } + finally + { SQLUtil.closeQuietly( stmt ); SQLUtil.closeQuietly( connection ); } @@ -90,7 +91,7 @@ public class Databases * Perform SQL query and let visitor handle results. */ public void query( String sql, ResultSetVisitor visitor ) - throws SQLException + throws SQLException { query( sql, null, visitor ); } @@ -101,137 +102,47 @@ public class Databases * If the SQL string contains ? placeholders, use the StatementVisitor to * update the PreparedStatement with actual values. */ - public void query( String sql, StatementVisitor statement, ResultSetVisitor resultsetVisitor ) - throws SQLException + public void query( String sql, StatementVisitor statementVisitor, ResultSetVisitor resultSetVisitor ) + throws SQLException { Connection connection = null; - PreparedStatement stmt = null; + PreparedStatement statement = null; ResultSet resultSet = null; - try { + try + { connection = source.getConnection(); - stmt = connection.prepareStatement( sql ); - if ( statement != null ) { - statement.visit( stmt ); + statement = connection.prepareStatement( sql ); + if( statementVisitor != null ) + { + statementVisitor.visit( statement ); } - resultSet = stmt.executeQuery(); - while ( resultSet.next() ) { - if ( !resultsetVisitor.visit( resultSet ) ) { + resultSet = statement.executeQuery(); + while( resultSet.next() ) + { + if( !resultSetVisitor.visit( resultSet ) ) + { return; } } resultSet.close(); - } finally { + } + finally + { SQLUtil.closeQuietly( resultSet ); - SQLUtil.closeQuietly( stmt ); + SQLUtil.closeQuietly( statement ); SQLUtil.closeQuietly( connection ); } } /** - * Perform SQL query and provide results as an Input. - * - * This makes it possible to combine SQL data with the I/O API. - */ - public Input<ResultSet, SQLException> query( final String sql ) - { - return new Input<ResultSet, SQLException>() - { - - @Override - public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super ResultSet, ReceiverThrowableType> output ) - throws SQLException, ReceiverThrowableType - { - output.receiveFrom( new Sender<ResultSet, SQLException>() - { - - @Override - public <ReceiverThrowableType extends Throwable> void sendTo( final Receiver<? super ResultSet, ReceiverThrowableType> receiver ) - throws ReceiverThrowableType, SQLException - { - query( sql, new ResultSetVisitor() - { - - @Override - public boolean visit( ResultSet visited ) - throws SQLException - { - try { - receiver.receive( visited ); - } catch ( Throwable receiverThrowableType ) { - throw new SQLException( receiverThrowableType ); - } - - return true; - } - - } ); - } - - } ); - } - - }; - } - - /** - * Perform SQL query and provide results as an Input. - * - * This makes it possible to combine SQL data with the I/O API. If the SQL - * string contains ? placeholders, use the StatementVisitor to update the - * PreparedStatement with actual values. - */ - public Input<ResultSet, SQLException> query( final String sql, final StatementVisitor visitor ) - { - return new Input<ResultSet, SQLException>() - { - - @Override - public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super ResultSet, ReceiverThrowableType> output ) - throws SQLException, ReceiverThrowableType - { - output.receiveFrom( new Sender<ResultSet, SQLException>() - { - - @Override - public <ReceiverThrowableType extends Throwable> void sendTo( final Receiver<? super ResultSet, ReceiverThrowableType> receiver ) - throws ReceiverThrowableType, SQLException - { - query( sql, visitor, new ResultSetVisitor() - { - - @Override - public boolean visit( ResultSet visited ) - throws SQLException - { - try { - receiver.receive( visited ); - } catch ( Throwable receiverThrowableType ) { - throw new SQLException( receiverThrowableType ); - } - - return true; - } - - } ); - } - - } ); - } - - }; - } - - /** * Visitor for PreparedStatements. * * These are created when the SQL statements contain ? placeholders. */ public interface StatementVisitor { - void visit( PreparedStatement preparedStatement ) - throws SQLException; - + throws SQLException; } /** @@ -241,8 +152,7 @@ public class Databases * by this API. */ public interface ResultSetVisitor - extends Visitor<ResultSet, SQLException> + extends Visitor<ResultSet, SQLException> { } - } http://git-wip-us.apache.org/repos/asf/zest-java/blob/a660c710/libraries/sql/src/test/java/org/apache/zest/library/sql/jmx/DataSourceConfigurationManagerServiceTest.java ---------------------------------------------------------------------- diff --git a/libraries/sql/src/test/java/org/apache/zest/library/sql/jmx/DataSourceConfigurationManagerServiceTest.java b/libraries/sql/src/test/java/org/apache/zest/library/sql/jmx/DataSourceConfigurationManagerServiceTest.java index 79dc1ad..81a2f5a 100644 --- a/libraries/sql/src/test/java/org/apache/zest/library/sql/jmx/DataSourceConfigurationManagerServiceTest.java +++ b/libraries/sql/src/test/java/org/apache/zest/library/sql/jmx/DataSourceConfigurationManagerServiceTest.java @@ -19,33 +19,21 @@ */ package org.apache.zest.library.sql.jmx; -import java.beans.PropertyVetoException; -import java.sql.ResultSet; -import java.sql.SQLException; -import javax.sql.DataSource; -import org.apache.zest.bootstrap.unitofwork.DefaultUnitOfWorkAssembler; -import org.junit.Assert; -import org.junit.Test; import org.apache.zest.api.activation.ActivationException; import org.apache.zest.api.common.Visibility; -import org.apache.zest.api.injection.scope.Service; -import org.apache.zest.api.service.ServiceReference; -import org.apache.zest.api.service.qualifier.IdentifiedBy; import org.apache.zest.bootstrap.AssemblyException; import org.apache.zest.bootstrap.ModuleAssembly; import org.apache.zest.bootstrap.SingletonAssembler; -import org.apache.zest.io.Outputs; -import org.apache.zest.io.Receiver; -import org.apache.zest.library.circuitbreaker.CircuitBreaker; +import org.apache.zest.bootstrap.unitofwork.DefaultUnitOfWorkAssembler; import org.apache.zest.library.jmx.JMXAssembler; import org.apache.zest.library.sql.assembly.DataSourceAssembler; import org.apache.zest.library.sql.assembly.DataSourceJMXAssembler; -import org.apache.zest.library.sql.common.Databases; import org.apache.zest.library.sql.datasource.DataSources; import org.apache.zest.library.sql.dbcp.DBCPDataSourceServiceAssembler; import org.apache.zest.library.sql.liquibase.LiquibaseConfiguration; import org.apache.zest.library.sql.liquibase.LiquibaseService; import org.apache.zest.test.EntityTestAssembler; +import org.junit.Test; /** * Test of export of DataSources to JMX, and some other stuff @@ -61,10 +49,14 @@ public class DataSourceConfigurationManagerServiceTest instance.testDataSources(); // Hang so it becomes possible to connect through VisualVM and check the JMX beans - synchronized( instance ) { - try { + synchronized( instance ) + { + try + { instance.wait(); - } catch ( InterruptedException e ) { + } + catch( InterruptedException e ) + { e.printStackTrace(); } } @@ -74,11 +66,11 @@ public class DataSourceConfigurationManagerServiceTest public void testDataSources() throws ActivationException, AssemblyException { - new SingletonAssembler() + SingletonAssembler assembler = new SingletonAssembler() { @Override public void assemble( ModuleAssembly module ) - throws AssemblyException + throws AssemblyException { new JMXAssembler().assemble( module ); @@ -88,24 +80,27 @@ public class DataSourceConfigurationManagerServiceTest new DefaultUnitOfWorkAssembler().assemble( module ); // Set up DataSource service that will manage the connection pools - new DBCPDataSourceServiceAssembler().identifiedBy( "datasource-service" ).visibleIn( Visibility.layer ).assemble( module ); + new DBCPDataSourceServiceAssembler().identifiedBy( "datasource-service" ) + .visibleIn( Visibility.layer ) + .assemble( module ); { ModuleAssembly testModule = module.layer().module( "TestDS" ); // Create a specific DataSource that uses the "datasource" service to do the main work - new DataSourceAssembler(). - withDataSourceServiceIdentity( "datasource-service" ). - identifiedBy( "testds" ). - visibleIn( Visibility.module ). - withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ). - assemble( testModule ); + new DataSourceAssembler().withDataSourceServiceIdentity( "datasource-service" ) + .identifiedBy( "testds" ) + .visibleIn( Visibility.module ) + .withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ) + .assemble( testModule ); // Set up Liquibase service that will create the tables testModule.services( LiquibaseService.class ).identifiedBy( "liquibase1" ).instantiateOnStartup(); testModule.entities( LiquibaseConfiguration.class ); - testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults().enabled().set( true ); - testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults().changeLog().set( "changelog.xml" ); + testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults() + .enabled().set( true ); + testModule.forMixin( LiquibaseConfiguration.class ).declareDefaults() + .changeLog().set( "changelog.xml" ); } { @@ -113,101 +108,25 @@ public class DataSourceConfigurationManagerServiceTest // Create another specific DataSource that uses the "datasource" service to do the main work // Use DataSourceAssembler to assemble the DataSource. - new DataSourceAssembler(). - withDataSourceServiceIdentity( "datasource-service" ). - identifiedBy( "testds2" ). - visibleIn( Visibility.module ). - withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ). - assemble( testModule2 ); + new DataSourceAssembler().withDataSourceServiceIdentity( "datasource-service" ) + .identifiedBy( "testds2" ) + .visibleIn( Visibility.module ) + .withCircuitBreaker( DataSources.newDataSourceCircuitBreaker() ) + .assemble( testModule2 ); // Set up Liquibase service that will create the tables testModule2.services( LiquibaseService.class ).identifiedBy( "liquibase2" ).instantiateOnStartup(); testModule2.entities( LiquibaseConfiguration.class ); - testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults().enabled().set( true ); - testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults().changeLog().set( "changelog.xml" ); + testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults() + .enabled().set( true ); + testModule2.forMixin( LiquibaseConfiguration.class ).declareDefaults() + .changeLog().set( "changelog.xml" ); } // START SNIPPET: jmx new DataSourceJMXAssembler().visibleIn( Visibility.module ).assemble( module ); // END SNIPPET: jmx - } - }; - -// assembler.application().findModule( "Layer 1","Test" ).objectBuilderFactory().newObjectBuilder( DataSourceConfigurationManagerServiceTest.class ).injectTo( this ); } - - public void init( @Service @IdentifiedBy( "testds" ) DataSource dataSource, @Service @IdentifiedBy( "testds2" ) ServiceReference<DataSource> dataSource2 ) - throws SQLException, PropertyVetoException - { - Databases databases = new Databases( dataSource ); - - // Insert some data and print it out - databases.update( "insert into test values ('id1','foo')" ); - databases.query( "select * from test" ).transferTo( Outputs.withReceiver( new Receiver<ResultSet, SQLException>() - { - @Override - public void receive( ResultSet item ) - throws SQLException - { - System.out.println( item.getString( "id" ) ); - } - - } ) ); - - Databases databases2 = new Databases( dataSource2.get() ); - - // Insert some data and print it out - databases2.update( "insert into test values ('id2','bar')" ); - databases2.query( "select * from test" ).transferTo( Outputs.withReceiver( new Receiver<ResultSet, SQLException>() - { - @Override - public void receive( ResultSet item ) - throws SQLException - { - System.out.println( item.getString( "id" ) ); - } - - } ) ); - - // Trip the CB - dataSource2.metaInfo( CircuitBreaker.class ).trip(); - - // This should now fail - try { - databases2.query( "select * from test" ).transferTo( Outputs.withReceiver( new Receiver<ResultSet, SQLException>() - { - @Override - public void receive( ResultSet item ) - throws SQLException - { - System.out.println( item.getString( "id" ) ); - } - - } ) ); - - Assert.fail(); - - } catch ( Throwable e ) { - // Correct - } - - // Turn the CB back on - dataSource2.metaInfo( CircuitBreaker.class ).turnOn(); - - // This should now work - databases2.query( "select * from test" ).transferTo( Outputs.withReceiver( new Receiver<ResultSet, SQLException>() - { - @Override - public void receive( ResultSet item ) - throws SQLException - { - System.out.println( item.getString( "id" ) ); - } - - } ) ); - - } - }
