Generator compiles. Setting @Ignore on testcase as it is now mostly a matter of getting Docker launching to work. Restored the DOCKER_RULE things in internals/ so branch should build normally.
Signed-off-by: niclas <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/a5feec04 Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/a5feec04 Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/a5feec04 Branch: refs/heads/develop Commit: a5feec0493f3e2daa7a42a2d68cb25f070f749af Parents: 35fcff1 Author: niclas <[email protected]> Authored: Sun May 28 22:30:22 2017 +0800 Committer: niclas <[email protected]> Committed: Sun May 28 22:30:22 2017 +0800 ---------------------------------------------------------------------- .../polygene/gradle/code/CodePlugin.groovy | 2 +- .../dependencies/PolygeneExtension.groovy | 12 + .../distributions/DistributionsPlugin.groovy | 1 + .../gradle/structure/docker/DockerPlugin.groovy | 151 --- .../internals/InternalDockerPlugin.groovy | 151 +++ .../structure/internals/InternalPlugin.groovy | 33 + .../gradle-plugins/polygene-docker.properties | 18 - .../polygene-internal-docker.properties | 18 + .../gradle-plugins/polygene-internal.properties | 18 + .../api/configuration/Configuration.java | 158 +-- .../configuration/ConfigurationComposite.java | 2 +- .../importer/ServiceInstanceImporter.java | 7 +- .../unitofwork/NoSuchEntityTypeException.java | 6 +- .../layered/LayeredLayerAssembler.java | 13 +- .../runtime/composite/CompositeModel.java | 36 +- .../GenericFragmentInvocationHandler.java | 2 - .../polygene/runtime/service/ServiceModel.java | 29 +- core/testsupport/build.gradle | 3 - .../polygene/test/docker/DelayChecker.java | 60 - .../apache/polygene/test/docker/DockerRule.java | 156 --- .../test/model/assembly/AccessLayer.java | 5 +- .../main/resources/docker/cassandra/Dockerfile | 16 - .../main/resources/docker/memcached/Dockerfile | 16 - .../src/main/resources/docker/mysql/Dockerfile | 16 - .../main/resources/docker/postgres/Dockerfile | 17 - .../resources/docker/postgres/init-test-db.sh | 29 - .../src/main/resources/docker/redis/Dockerfile | 16 - .../src/main/resources/docker/riak/Dockerfile | 16 - .../main/resources/docker/s3server/Dockerfile | 20 - extensions/cache-memcache/build.gradle | 2 +- extensions/entitystore-cassandra/build.gradle | 2 +- extensions/entitystore-jclouds/build.gradle | 2 +- extensions/entitystore-redis/build.gradle | 2 +- extensions/entitystore-riak/build.gradle | 2 +- extensions/entitystore-sql/build.gradle | 2 +- extensions/indexing-sql/build.gradle | 2 +- internals/testsupport-internal/build.gradle | 31 + .../src/main/docker/cassandra/Dockerfile | 16 + .../src/main/docker/memcached/Dockerfile | 16 + .../src/main/docker/mysql/Dockerfile | 16 + .../src/main/docker/postgres/Dockerfile | 17 + .../src/main/docker/postgres/init-test-db.sh | 29 + .../src/main/docker/redis/Dockerfile | 16 + .../src/main/docker/riak/Dockerfile | 16 + .../src/main/docker/s3server/Dockerfile | 20 + .../polygene/test/docker/DelayChecker.java | 60 + .../apache/polygene/test/docker/DockerRule.java | 156 +++ .../apache/polygene/test/docker/package.html | 25 + settings.gradle | 2 + tools/generator-polygene/app/index.js | 4 +- .../IndexingModule/bootstrap.tmpl | 27 +- .../indexing/ds-index-postgresql.properties | 23 + .../indexing/index-rdf.properties | 57 + .../IndexingModule/indexing/solr-schema.xml | 606 ++++++++++ .../IndexingModule/indexing/solrconfig.xml | 1036 ++++++++++++++++++ .../IndexingModule/module.js | 13 + .../StorageModule/bootstrap.tmpl | 19 +- .../InfrastructureLayer/StorageModule/module.js | 28 +- .../storage/ds-derbysql.properties | 24 - .../storage/ds-es-derbysql.properties | 24 + .../storage/ds-es-h2sql.properties | 24 + .../storage/ds-es-mysql.properties | 24 + .../storage/ds-es-postgresql.properties | 24 + .../storage/ds-es-sqlite.properties | 24 + .../StorageModule/storage/ds-h2sql.properties | 24 - .../StorageModule/storage/ds-mysql.properties | 24 - .../storage/ds-postgresql.properties | 24 - .../StorageModule/storage/ds-sqlite.properties | 24 - .../InfrastructureLayer/bootstrap.tmpl | 6 +- .../RestAPIApplication/bootstrap-test.tmpl | 141 ++- .../app/templates/buildtool/gradle-app.tmpl | 57 +- .../templates/buildtool/gradle-bootstrap.tmpl | 4 +- 72 files changed, 2871 insertions(+), 851 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy index 4e61247..5653967 100644 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/code/CodePlugin.groovy @@ -127,7 +127,7 @@ class CodePlugin implements Plugin<Project> // Configuration task to honor disabling Docker when unavailable project.tasks.create( 'configureDockerForTest', { Task task -> // TODO Untangle docker connectivity check & test task configuration - task.dependsOn ':core:testsupport:checkDockerConnectivity' + task.dependsOn ':internals:testsupport-internal:checkDockerConnectivity' testTasks.each { it.dependsOn task } task.inputs.property 'polygeneTestSupportDockerDisabled', { project.findProperty( DOCKER_DISABLED_EXTRA_PROPERTY ) } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/PolygeneExtension.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/PolygeneExtension.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/PolygeneExtension.groovy index 435f278..e08a4ab 100644 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/PolygeneExtension.groovy +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/dependencies/PolygeneExtension.groovy @@ -26,11 +26,13 @@ class PolygeneExtension { private final Project project final Core core + final Internals internals PolygeneExtension( Project project ) { this.project = project this.core = new Core() + this.internals = new Internals() } class Core @@ -42,6 +44,11 @@ class PolygeneExtension Dependency testsupport = core( 'testsupport' ) } + class Internals + { + Dependency testsupport = internal( 'testsupport-internal' ) + } + private Dependency core( String name ) { return dependency( 'core', name ) @@ -62,6 +69,11 @@ class PolygeneExtension return dependency( 'tools', name ) } + Dependency internal( String name ) + { + return dependency( 'internals', name ) + } + private Dependency dependency( String group, String name ) { project.dependencies.project( path: ":$group:$name" ) http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy index dd9ca5a..f6eee1f 100644 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/distributions/DistributionsPlugin.groovy @@ -134,6 +134,7 @@ class DistributionsPlugin implements Plugin<Project> } spec.include 'distributions/**' spec.include 'reports/**' + spec.include 'internals/**' spec.include 'release/**' spec.include 'manual/**' spec.include 'samples/**' http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/docker/DockerPlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/docker/DockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/docker/DockerPlugin.groovy deleted file mode 100644 index 1934568..0000000 --- a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/docker/DockerPlugin.groovy +++ /dev/null @@ -1,151 +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.gradle.structure.docker - -import com.bmuschko.gradle.docker.DockerExtension -import com.bmuschko.gradle.docker.DockerRemoteApiPlugin -import com.bmuschko.gradle.docker.tasks.DockerVersion -import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage -import groovy.transform.CompileStatic -import org.apache.polygene.gradle.BasePlugin -import org.apache.polygene.gradle.code.CodePlugin -import org.apache.polygene.gradle.code.PublishNaming -import org.apache.polygene.gradle.dependencies.DependenciesDeclarationExtension -import org.apache.polygene.gradle.dependencies.DependenciesPlugin -import org.apache.tools.ant.filters.ReplaceTokens -import org.gradle.api.Action -import org.gradle.api.Plugin -import org.gradle.api.Project -import org.gradle.api.Task -import org.gradle.api.file.CopySpec -import org.gradle.api.logging.LogLevel - -@CompileStatic -class DockerPlugin implements Plugin<Project> -{ - static class TaskNames - { - static final String CHECK_DOCKER_CONNECTIVITY = 'checkDockerConnectivity' - } - - private final String dockerMachineName = System.getenv( 'DOCKER_MACHINE_NAME' ) - private final String dockerHost = System.getenv( 'DOCKER_HOST' ) - private final String dockerCertPath = System.getenv( 'DOCKER_CERT_PATH' ) - - @Override - void apply( Project project ) - { - project.plugins.apply BasePlugin - project.plugins.apply DependenciesPlugin - applyDockerPlugin( project ) - applyDockerSwitch( project ) - applyDockerBuildImage( project ) - } - - private void applyDockerPlugin( Project project ) - { - project.plugins.apply DockerRemoteApiPlugin - def dockerExtension = project.extensions.getByType DockerExtension - // TLS support - if( dockerCertPath ) - { - dockerExtension.certPath = new File( dockerCertPath ) - } - } - - private void applyDockerSwitch( Project project ) - { - project.tasks.create( TaskNames.CHECK_DOCKER_CONNECTIVITY, DockerVersion, { DockerVersion task -> - task.onError = { ex -> - // Disable Docker for this build - project.rootProject.extensions.extraProperties.set( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY, true ) - if( project.hasProperty( 'skipDocker' ) ) - { - project.logger.lifecycle 'skipDocker property is set, all Docker tasks will be SKIPPED' - } - else if( project.logger.isEnabled( LogLevel.INFO ) ) - { - project.logger.info 'Unable to connect to Docker, all Docker tasks will be SKIPPED', ex - } - else - { - project.logger.lifecycle "Unable to connect to Docker, all Docker tasks will be SKIPPED\n ${ ( ( Exception ) ex ).message }" - } - } - task.onComplete = { - if( project.hasProperty( 'skipDocker' ) ) - { - // Disable Docker for this build - project.rootProject.extensions.extraProperties.set( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY, true ) - project.logger.lifecycle 'skipDocker property is set, all Docker tasks will be SKIPPED' - } - } - } as Action<DockerVersion> ) - } - - private void applyDockerBuildImage( Project project ) - { - def classesTask = project.tasks.getByName 'classes' - def dockers = project.file('src/main/resources/docker') - def dependencies = project.rootProject.extensions.getByType( DependenciesDeclarationExtension ) - dockers.eachDir { File dockerDir -> - def dockerName = dockerDir.name - def buildDockerfileTaskName = "build${ dockerName.capitalize() }Dockerfile" - def buildImageTaskName = "build${ dockerName.capitalize() }DockerImage" - def tmpDir = project.file "${ project.buildDir }/tmp/docker/${ dockerName }" - tmpDir.mkdirs() - def buildDockerfileTask = project.tasks.create( buildDockerfileTaskName ) { Task task -> - task.description = "Build $dockerName Dockerfile" - task.inputs.property 'dockerImagesVersions', dependencies.dockerImagesVersions - task.inputs.dir dockerDir - task.outputs.dir tmpDir - // Filter Dockerfile for image versions from dependencies declaration - task.doFirst { - project.copy { CopySpec spec -> - spec.from( dockerDir ) { CopySpec unfiltered -> - unfiltered.exclude 'Dockerfile' - } - spec.from( dockerDir ) { CopySpec filtered -> - filtered.include 'Dockerfile' - filtered.filter ReplaceTokens, tokens: dependencies.dockerImagesVersions - } - spec.into tmpDir - } - } - } - def buildImageTask = project.tasks.create( buildImageTaskName, DockerBuildImage, { DockerBuildImage task -> - task.description = "Build $dockerName Docker image" - task.inputDir = tmpDir - task.dockerFile = new File( tmpDir, 'Dockerfile' ) - task.tag = "org.apache.polygene:${PublishNaming.publishedNameFor ":testsupport:docker-$dockerName"}" - } as Action<DockerBuildImage> ) - [ buildDockerfileTask, buildImageTask ].each { Task task -> - task.group = 'docker' - task.dependsOn TaskNames.CHECK_DOCKER_CONNECTIVITY - task.onlyIf { !project.rootProject.findProperty( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY ) } - task.inputs.property 'dockerMachineName', dockerMachineName - task.inputs.property 'dockerHostEnv', dockerHost - task.inputs.property 'dockerCertPath', dockerCertPath - } - buildImageTask.dependsOn buildDockerfileTask - // Ensure that all Docker images are built alongside this project - // This is a bit of a stretch but works for now - classesTask.dependsOn buildImageTask - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy new file mode 100644 index 0000000..ac22b9f --- /dev/null +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalDockerPlugin.groovy @@ -0,0 +1,151 @@ +/* + * 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.gradle.structure.internals + +import com.bmuschko.gradle.docker.DockerExtension +import com.bmuschko.gradle.docker.DockerRemoteApiPlugin +import com.bmuschko.gradle.docker.tasks.DockerVersion +import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage +import groovy.transform.CompileStatic +import org.apache.polygene.gradle.BasePlugin +import org.apache.polygene.gradle.code.CodePlugin +import org.apache.polygene.gradle.code.PublishNaming +import org.apache.polygene.gradle.dependencies.DependenciesDeclarationExtension +import org.apache.polygene.gradle.dependencies.DependenciesPlugin +import org.apache.tools.ant.filters.ReplaceTokens +import org.gradle.api.Action +import org.gradle.api.Plugin +import org.gradle.api.Project +import org.gradle.api.Task +import org.gradle.api.file.CopySpec +import org.gradle.api.logging.LogLevel + +@CompileStatic +class InternalDockerPlugin implements Plugin<Project> +{ + static class TaskNames + { + static final String CHECK_DOCKER_CONNECTIVITY = 'checkDockerConnectivity' + } + + private final String dockerMachineName = System.getenv( 'DOCKER_MACHINE_NAME' ) + private final String dockerHost = System.getenv( 'DOCKER_HOST' ) + private final String dockerCertPath = System.getenv( 'DOCKER_CERT_PATH' ) + + @Override + void apply( Project project ) + { + project.plugins.apply BasePlugin + project.plugins.apply DependenciesPlugin + applyDockerPlugin( project ) + applyDockerSwitch( project ) + applyDockerBuildImage( project ) + } + + private void applyDockerPlugin( Project project ) + { + project.plugins.apply DockerRemoteApiPlugin + def dockerExtension = project.extensions.getByType DockerExtension + // TLS support + if( dockerCertPath ) + { + dockerExtension.certPath = new File( dockerCertPath ) + } + } + + private void applyDockerSwitch( Project project ) + { + project.tasks.create( TaskNames.CHECK_DOCKER_CONNECTIVITY, DockerVersion, { DockerVersion task -> + task.onError = { ex -> + // Disable Docker for this build + project.rootProject.extensions.extraProperties.set( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY, true ) + if( project.hasProperty( 'skipDocker' ) ) + { + project.logger.lifecycle 'skipDocker property is set, all Docker tasks will be SKIPPED' + } + else if( project.logger.isEnabled( LogLevel.INFO ) ) + { + project.logger.info 'Unable to connect to Docker, all Docker tasks will be SKIPPED', ex + } + else + { + project.logger.lifecycle "Unable to connect to Docker, all Docker tasks will be SKIPPED\n ${ ( ( Exception ) ex ).message }" + } + } + task.onComplete = { + if( project.hasProperty( 'skipDocker' ) ) + { + // Disable Docker for this build + project.rootProject.extensions.extraProperties.set( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY, true ) + project.logger.lifecycle 'skipDocker property is set, all Docker tasks will be SKIPPED' + } + } + } as Action<DockerVersion> ) + } + + private void applyDockerBuildImage( Project project ) + { + def classesTask = project.tasks.getByName 'classes' + def dockers = project.file( 'src/main/docker' ) + def dependencies = project.rootProject.extensions.getByType( DependenciesDeclarationExtension ) + dockers.eachDir { File dockerDir -> + def dockerName = dockerDir.name + def buildDockerfileTaskName = "build${ dockerName.capitalize() }Dockerfile" + def buildImageTaskName = "build${ dockerName.capitalize() }DockerImage" + def tmpDir = project.file "${ project.buildDir }/tmp/docker/${ dockerName }" + tmpDir.mkdirs() + def buildDockerfileTask = project.tasks.create( buildDockerfileTaskName ) { Task task -> + task.description = "Build $dockerName Dockerfile" + task.inputs.property 'dockerImagesVersions', dependencies.dockerImagesVersions + task.inputs.dir dockerDir + task.outputs.dir tmpDir + // Filter Dockerfile for image versions from dependencies declaration + task.doFirst { + project.copy { CopySpec spec -> + spec.from( dockerDir ) { CopySpec unfiltered -> + unfiltered.exclude 'Dockerfile' + } + spec.from( dockerDir ) { CopySpec filtered -> + filtered.include 'Dockerfile' + filtered.filter ReplaceTokens, tokens: dependencies.dockerImagesVersions + } + spec.into tmpDir + } + } + } + def buildImageTask = project.tasks.create( buildImageTaskName, DockerBuildImage, { DockerBuildImage task -> + task.description = "Build $dockerName Docker image" + task.inputDir = tmpDir + task.dockerFile = new File( tmpDir, 'Dockerfile' ) + task.tag = "org.apache.polygene:${ PublishNaming.publishedNameFor ":internals:docker-$dockerName" }" + } as Action<DockerBuildImage> ) + [ buildDockerfileTask, buildImageTask ].each { Task task -> + task.group = 'docker' + task.dependsOn TaskNames.CHECK_DOCKER_CONNECTIVITY + task.onlyIf { !project.rootProject.findProperty( CodePlugin.DOCKER_DISABLED_EXTRA_PROPERTY ) } + task.inputs.property 'dockerMachineName', dockerMachineName + task.inputs.property 'dockerHostEnv', dockerHost + task.inputs.property 'dockerCertPath', dockerCertPath + } + buildImageTask.dependsOn buildDockerfileTask + // Ensure that all Docker images are built alongside this project + // This is a bit of a stretch but works for now + classesTask.dependsOn buildImageTask + } + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalPlugin.groovy ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalPlugin.groovy b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalPlugin.groovy new file mode 100644 index 0000000..e667eb2 --- /dev/null +++ b/buildSrc/src/main/groovy/org/apache/polygene/gradle/structure/internals/InternalPlugin.groovy @@ -0,0 +1,33 @@ +/* + * 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.gradle.structure.internals + +import groovy.transform.CompileStatic +import org.apache.polygene.gradle.code.CodePlugin +import org.gradle.api.Plugin +import org.gradle.api.Project + +@CompileStatic +class InternalPlugin implements Plugin<Project> +{ + @Override + void apply( Project project ) + { + project.plugins.apply CodePlugin + } +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-docker.properties ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-docker.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-docker.properties deleted file mode 100644 index dfe3d41..0000000 --- a/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-docker.properties +++ /dev/null @@ -1,18 +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. -# -implementation-class=org.apache.polygene.gradle.structure.docker.DockerPlugin http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal-docker.properties ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal-docker.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal-docker.properties new file mode 100644 index 0000000..60290a5 --- /dev/null +++ b/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal-docker.properties @@ -0,0 +1,18 @@ +# +# 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. +# +implementation-class=org.apache.polygene.gradle.structure.internals.InternalDockerPlugin http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal.properties ---------------------------------------------------------------------- diff --git a/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal.properties b/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal.properties new file mode 100644 index 0000000..8741472 --- /dev/null +++ b/buildSrc/src/main/resources/META-INF/gradle-plugins/polygene-internal.properties @@ -0,0 +1,18 @@ +# +# 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. +# +implementation-class=org.apache.polygene.gradle.structure.internals.InternalPlugin \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/api/src/main/java/org/apache/polygene/api/configuration/Configuration.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/polygene/api/configuration/Configuration.java b/core/api/src/main/java/org/apache/polygene/api/configuration/Configuration.java index a7c4dd1..bc0e0ad 100644 --- a/core/api/src/main/java/org/apache/polygene/api/configuration/Configuration.java +++ b/core/api/src/main/java/org/apache/polygene/api/configuration/Configuration.java @@ -23,23 +23,23 @@ package org.apache.polygene.api.configuration; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.Objects; import org.apache.polygene.api.PolygeneAPI; import org.apache.polygene.api.composite.Composite; import org.apache.polygene.api.composite.PropertyMapper; import org.apache.polygene.api.constraint.ConstraintViolationException; import org.apache.polygene.api.entity.EntityBuilder; +import org.apache.polygene.api.entity.EntityDescriptor; import org.apache.polygene.api.identity.HasIdentity; import org.apache.polygene.api.identity.Identity; -import org.apache.polygene.api.injection.scope.Service; import org.apache.polygene.api.injection.scope.Structure; import org.apache.polygene.api.injection.scope.This; import org.apache.polygene.api.mixin.Mixins; +import org.apache.polygene.api.serialization.Deserializer; +import org.apache.polygene.api.serialization.Serialization; import org.apache.polygene.api.service.ServiceComposite; import org.apache.polygene.api.service.ServiceDescriptor; -import org.apache.polygene.api.service.ServiceReference; import org.apache.polygene.api.service.qualifier.ServiceTags; -import org.apache.polygene.api.serialization.Deserializer; -import org.apache.polygene.api.serialization.Serialization; import org.apache.polygene.api.structure.Module; import org.apache.polygene.api.unitofwork.NoSuchEntityException; import org.apache.polygene.api.unitofwork.NoSuchEntityTypeException; @@ -178,8 +178,8 @@ public interface Configuration<T> @Structure private UnitOfWorkFactory uowf; - @Service - private Iterable<ServiceReference<Deserializer>> stateDeserializers; + @Structure + private Module module; public ConfigurationMixin() { @@ -194,7 +194,9 @@ public interface Configuration<T> uow = uowf.newUnitOfWork( usecase ); try { - configuration = this.findConfigurationInstanceFor( me, uow ); + ServiceDescriptor serviceModel = api.serviceDescriptorFor( me ); + Identity identity = me.identity().get(); + configuration = this.findConfigurationInstanceFor( serviceModel, identity, uow ); } catch( InstantiationException e ) { @@ -237,51 +239,46 @@ public interface Configuration<T> } @SuppressWarnings( "unchecked" ) - public <V> V findConfigurationInstanceFor( ServiceComposite serviceComposite, UnitOfWork uow ) + public <V> V findConfigurationInstanceFor( ServiceDescriptor serviceModel, Identity serviceIdentity, UnitOfWork uow ) throws InstantiationException { - ServiceDescriptor serviceModel = api.serviceDescriptorFor( serviceComposite ); - + Class<V> configurationType = serviceModel.configurationType(); V configuration; try { - configuration = uow.get( serviceModel.<V>configurationType(), serviceComposite.identity().get() ); + configuration = uow.get( configurationType, serviceIdentity ); uow.pause(); } catch( NoSuchEntityException | NoSuchEntityTypeException e ) { - return (V) initializeConfigurationInstance( serviceComposite, uow, serviceModel, - serviceComposite.identity().get() ); + EntityDescriptor entityDescriptor = module.typeLookup().lookupEntityModel( configurationType ); + return (V) initializeConfigurationInstance( entityDescriptor, uow, serviceModel, serviceIdentity ); } return configuration; } @SuppressWarnings( "unchecked" ) - private <V extends HasIdentity> V initializeConfigurationInstance( ServiceComposite serviceComposite, + private <V extends HasIdentity> V initializeConfigurationInstance( EntityDescriptor entityDescriptor, UnitOfWork uow, ServiceDescriptor serviceModel, Identity identity - ) + ) throws InstantiationException { - Module module = api.moduleOf( serviceComposite ).instance(); Usecase usecase = UsecaseBuilder.newUsecase( "Configuration:" + me.identity().get() ); - UnitOfWork buildUow = module.unitOfWorkFactory().newUnitOfWork( usecase ); - - Class<?> type = api.serviceDescriptorFor( serviceComposite ).types().findFirst().orElse( null ); + UnitOfWork buildUow = entityDescriptor.module().instance().unitOfWorkFactory().newUnitOfWork( usecase ); Class<V> configType = serviceModel.configurationType(); - // Check for defaults - V config = tryLoadPropertiesFile( buildUow, type, configType, identity ); + V config = tryLoadPropertiesFile( buildUow, entityDescriptor, identity ); if( config == null ) { - config = tryLoadJsonFile( buildUow, type, configType, identity ); + config = tryLoadJsonFile( buildUow, entityDescriptor, identity ); if( config == null ) { - config = tryLoadYamlFile( buildUow, type, configType, identity ); + config = tryLoadYamlFile( buildUow, entityDescriptor, identity ); if( config == null ) { - config = tryLoadXmlFile( buildUow, type, configType, identity ); + config = tryLoadXmlFile( buildUow, entityDescriptor, identity ); if( config == null ) { try @@ -304,7 +301,7 @@ public interface Configuration<T> buildUow.complete(); // Try again - return (V) findConfigurationInstanceFor( serviceComposite, uow ); + return (V) findConfigurationInstanceFor( serviceModel, identity, uow ); } catch( Exception e1 ) { @@ -316,16 +313,17 @@ public interface Configuration<T> } } - private <C, V> V tryLoadPropertiesFile( UnitOfWork buildUow, - Class<C> compositeType, - Class<V> configType, - Identity identity - ) + private <V> V tryLoadPropertiesFile( UnitOfWork buildUow, + EntityDescriptor configType, + Identity identity + ) throws InstantiationException { - EntityBuilder<V> configBuilder = buildUow.newEntityBuilder( configType, identity ); + @SuppressWarnings( "unchecked" ) + EntityBuilder<V> configBuilder = buildUow.newEntityBuilder( (Class<V>) configType.primaryType(), identity ); + String resourceName = identity + ".properties"; - try( InputStream asStream = getResource( compositeType, resourceName ) ) + try( InputStream asStream = getResource( configType.primaryType(), resourceName ) ) { if( asStream != null ) { @@ -360,61 +358,67 @@ public interface Configuration<T> return type.getResourceAsStream( resourceName ); } - private <C, V extends HasIdentity> V tryLoadJsonFile( UnitOfWork uow, - Class<C> compositeType, - Class<V> configType, - Identity identity - ) + private <V extends HasIdentity> V tryLoadJsonFile( UnitOfWork uow, + EntityDescriptor configType, + Identity identity + ) { - return readConfig( uow, compositeType, configType, identity, Serialization.Format.JSON, ".json" ); + return readConfig( uow, configType, identity, Serialization.Format.JSON, ".json" ); } - private <C, V extends HasIdentity> V tryLoadYamlFile( UnitOfWork uow, - Class<C> compositeType, - Class<V> configType, - Identity identity - ) + private <V extends HasIdentity> V tryLoadYamlFile( UnitOfWork uow, + EntityDescriptor configType, + Identity identity + ) { - return readConfig( uow, compositeType, configType, identity, Serialization.Format.YAML, ".yaml" ); + return readConfig( uow, configType, identity, Serialization.Format.YAML, ".yaml" ); } - private <C, V extends HasIdentity> V tryLoadXmlFile( UnitOfWork uow, - Class<C> compositeType, - Class<V> configType, - Identity identity - ) + private <V extends HasIdentity> V tryLoadXmlFile( UnitOfWork uow, + EntityDescriptor configType, + Identity identity + ) { - return readConfig( uow, compositeType, configType, identity, Serialization.Format.XML, ".xml" ); + return readConfig( uow, configType, identity, Serialization.Format.XML, ".xml" ); } - private <C, V extends HasIdentity> V readConfig( UnitOfWork uow, - Class<C> compositeType, - Class<V> configType, - Identity identity, - String format, - String extension - ) + private <V extends HasIdentity> V readConfig( UnitOfWork uow, + EntityDescriptor configType, + Identity identity, + String format, + String extension + ) { - for( ServiceReference<Deserializer> serializerRef : stateDeserializers ) - { - ServiceTags serviceTags = serializerRef.metaInfo( ServiceTags.class ); - if( serviceTags.hasTag( format ) ) - { - String resourceName = identity + extension; - try( InputStream asStream = getResource( compositeType, resourceName ) ) - { - if( asStream != null ) - { - Deserializer deserializer = serializerRef.get(); - V configObject = deserializer.deserialize( uow.module(), configType, - new InputStreamReader( asStream, UTF_8 ) ); - return uow.toEntity( configType, configObject ); - } - } - catch( IOException ignored ) {} - } - } - return null; + Module module = configType.module().instance(); + return module.findServices( Deserializer.class ) + .filter( ref -> + { + ServiceTags serviceTags = ref.metaInfo( ServiceTags.class ); + return serviceTags.hasTag( format ); + } ) + .map( ref -> + { + String resourceName = identity + extension; + try( InputStream asStream = getResource( configType.primaryType(), resourceName ) ) + { + if( asStream != null ) + { + Deserializer deserializer = ref.get(); + V configObject = deserializer.deserialize( module.descriptor(), configType.valueType(), + new InputStreamReader( asStream, UTF_8 ) ); + + @SuppressWarnings( "unchecked" ) + Class<V> primaryType = (Class<V>) configType.primaryType(); + return uow.toEntity( primaryType, configObject ); + } + } + catch( IOException ignored ) + { + } + return null; + } ) + .filter( Objects::nonNull ) + .findFirst().orElse( null ); } } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/api/src/main/java/org/apache/polygene/api/configuration/ConfigurationComposite.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/polygene/api/configuration/ConfigurationComposite.java b/core/api/src/main/java/org/apache/polygene/api/configuration/ConfigurationComposite.java index 726664f..82729a9 100644 --- a/core/api/src/main/java/org/apache/polygene/api/configuration/ConfigurationComposite.java +++ b/core/api/src/main/java/org/apache/polygene/api/configuration/ConfigurationComposite.java @@ -21,8 +21,8 @@ package org.apache.polygene.api.configuration; import org.apache.polygene.api.composite.Composite; -import org.apache.polygene.api.identity.HasIdentity; import org.apache.polygene.api.entity.Queryable; +import org.apache.polygene.api.identity.HasIdentity; /** * Services that want to be configurable should have a ConfigurationComposite that contains all the settings. http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/api/src/main/java/org/apache/polygene/api/service/importer/ServiceInstanceImporter.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/polygene/api/service/importer/ServiceInstanceImporter.java b/core/api/src/main/java/org/apache/polygene/api/service/importer/ServiceInstanceImporter.java index b0abf1b..321a31b 100644 --- a/core/api/src/main/java/org/apache/polygene/api/service/importer/ServiceInstanceImporter.java +++ b/core/api/src/main/java/org/apache/polygene/api/service/importer/ServiceInstanceImporter.java @@ -41,18 +41,17 @@ public class ServiceInstanceImporter<T> implements ServiceImporter<T> { @Structure - ServiceFinder finder; + private ServiceFinder finder; - ServiceImporter<T> service; + private ServiceImporter<T> service; - Identity serviceId; + private Identity serviceId; @Override public T importService( ImportedServiceDescriptor importedServiceDescriptor ) throws ServiceImporterException { serviceId = importedServiceDescriptor.metaInfo( Identity.class ); - return serviceImporter().importService( importedServiceDescriptor ); } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java ---------------------------------------------------------------------- diff --git a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java index 632e1b1..d6dbe8d 100644 --- a/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java +++ b/core/api/src/main/java/org/apache/polygene/api/unitofwork/NoSuchEntityTypeException.java @@ -39,7 +39,11 @@ public class NoSuchEntityTypeException private static String formatVisibleTypes( TypeLookup typeLookup ) { return typeLookup.allEntities() - .map( descriptor -> descriptor.primaryType().getName() ) + .map( descriptor -> { + String moduleName = descriptor.module().name(); + String entityClassName = descriptor.primaryType().getName(); + return entityClassName + " in " + moduleName; + } ) .sorted() .distinct() .collect( joining( "\n", "Visible entity types are:\n", "" ) ); http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/layered/LayeredLayerAssembler.java ---------------------------------------------------------------------- diff --git a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/layered/LayeredLayerAssembler.java b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/layered/LayeredLayerAssembler.java index e9a2c23..9866f89 100644 --- a/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/layered/LayeredLayerAssembler.java +++ b/core/bootstrap/src/main/java/org/apache/polygene/bootstrap/layered/LayeredLayerAssembler.java @@ -31,11 +31,16 @@ public abstract class LayeredLayerAssembler protected ModuleAssembly createModule( LayerAssembly layer, Class<? extends ModuleAssembler> moduleAssemblerClass ) { + return createModule( layer, moduleAssemblerClass, null ); + } + + protected ModuleAssembly createModule( LayerAssembly layer, Class<? extends ModuleAssembler> moduleAssemblerClass, ModuleAssembly constructorArgumentModule ) + { try { String moduleName = createModuleName( moduleAssemblerClass ); ModuleAssembly moduleAssembly = layer.module( moduleName ); - ModuleAssembler moduleAssembler = instantiateModuleAssembler( moduleAssembly, moduleAssemblerClass ); + ModuleAssembler moduleAssembler = instantiateModuleAssembler( moduleAssemblerClass, constructorArgumentModule ); LayeredApplicationAssembler.setNameIfPresent( moduleAssemblerClass, moduleName ); ModuleAssembly module = layer.module( moduleName ); assemblers.put( moduleAssemblerClass, moduleAssembler ); @@ -62,8 +67,8 @@ public abstract class LayeredLayerAssembler return moduleName; } - protected ModuleAssembler instantiateModuleAssembler( ModuleAssembly module, - Class<? extends ModuleAssembler> modulerAssemblerClass + protected ModuleAssembler instantiateModuleAssembler( Class<? extends ModuleAssembler> modulerAssemblerClass, + ModuleAssembly constructorArgument ) throws InstantiationException, IllegalAccessException, java.lang.reflect.InvocationTargetException, NoSuchMethodException { @@ -72,7 +77,7 @@ public abstract class LayeredLayerAssembler { Constructor<? extends ModuleAssembler> assemblyConstructor = modulerAssemblerClass.getDeclaredConstructor( ModuleAssembly.class ); assemblyConstructor.setAccessible( true ); - moduleAssembler = assemblyConstructor.newInstance( module ); + moduleAssembler = assemblyConstructor.newInstance( constructorArgument ); } catch( NoSuchMethodException e ) { http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java index a33e243..59ad428 100644 --- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java +++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/CompositeModel.java @@ -68,7 +68,7 @@ public abstract class CompositeModel final MixinsModel mixinsModel, final StateModel stateModel, final CompositeMethodsModel compositeMethodsModel - ) + ) { this.module = module; this.types = new LinkedHashSet<>( types ); @@ -105,7 +105,6 @@ public abstract class CompositeModel } ); } - // Model @Override public Stream<Class<?>> types() { @@ -185,10 +184,10 @@ public abstract class CompositeModel } @SuppressWarnings( { "raw", "unchecked" } ) - private Class<? extends Composite> createProxyClass( Class<?> mainType ) + private Class<? extends Composite> createProxyClass( Class<?> mainType ) throws ClassNotFoundException, NoSuchMethodException { - Class<? extends Composite> proxyClass; + Class<? extends Composite> proxyClass; if( mainType.isInterface() ) { ClassLoader proxyClassloader = mainType.getClassLoader(); @@ -224,10 +223,34 @@ public abstract class CompositeModel Object proxy, Method method, Object[] args - ) + ) throws Throwable { - return compositeMethodsModel.invoke( mixins, proxy, method, args, module ); + try + { + return compositeMethodsModel.invoke( mixins, proxy, method, args, module ); + } + catch( Throwable throwable ) + { + decorateModuleInfo( throwable, method.getName() ); + throw throwable; + } + } + + private void decorateModuleInfo( Throwable throwable, String methodName ) + { + StackTraceElement[] trace = throwable.getStackTrace(); + // Only add originating Module/Layer/ + if( trace[0].getClassName().startsWith( "method " )) + { + return; + } + StackTraceElement[] newTrace = new StackTraceElement[ trace.length + 1 ]; + String message = "method \"" + methodName + "\" of " + this.toString() + " in module [" + module.name() + "] of layer [" + module.layer().name() + "]"; + String compositeName = this.toString(); + newTrace[ 0 ] = new StackTraceElement( message, "", "", 0 ); + System.arraycopy( trace, 0, newTrace, 1, trace.length ); + throwable.setStackTrace( newTrace ); } @Override @@ -272,7 +295,6 @@ public abstract class CompositeModel throws IllegalArgumentException { -// if (!matchesAny( isAssignableFrom( mixinType ), types )) if( !mixinsModel.isImplemented( mixinType ) ) { String message = "Composite " + primaryType().getName() + " does not implement type " + mixinType.getName(); http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/runtime/src/main/java/org/apache/polygene/runtime/composite/GenericFragmentInvocationHandler.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/GenericFragmentInvocationHandler.java b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/GenericFragmentInvocationHandler.java index 44259e8..13c0741 100644 --- a/core/runtime/src/main/java/org/apache/polygene/runtime/composite/GenericFragmentInvocationHandler.java +++ b/core/runtime/src/main/java/org/apache/polygene/runtime/composite/GenericFragmentInvocationHandler.java @@ -29,8 +29,6 @@ import java.lang.reflect.Method; public final class GenericFragmentInvocationHandler extends FragmentInvocationHandler { - // InvocationHandler implementation ------------------------------ - @Override public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceModel.java ---------------------------------------------------------------------- diff --git a/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceModel.java b/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceModel.java index 74dd852..e45f22d 100644 --- a/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceModel.java +++ b/core/runtime/src/main/java/org/apache/polygene/runtime/service/ServiceModel.java @@ -70,7 +70,7 @@ public final class ServiceModel extends CompositeModel CompositeMethodsModel compositeMethodsModel, Identity identity, boolean instantiateOnStartup - ) + ) { super( module, types, visibility, metaInfo, mixinsModel, stateModel, compositeMethodsModel ); @@ -133,16 +133,17 @@ public final class ServiceModel extends CompositeModel Object[] mixins = mixinsModel.newMixinHolder(); Map<AccessibleObject, Property<?>> properties = new HashMap<>(); - stateModel.properties().forEach( propertyModel -> { - Object initialValue = propertyModel.resolveInitialValue(module); - if( propertyModel.accessor().equals( HasIdentity.IDENTITY_METHOD ) ) - { - initialValue = identity; - } - - Property<?> property = new PropertyInstance<>( propertyModel, initialValue ); - properties.put( propertyModel.accessor(), property ); - } ); + stateModel.properties().forEach( propertyModel -> + { + Object initialValue = propertyModel.resolveInitialValue( module ); + if( propertyModel.accessor().equals( HasIdentity.IDENTITY_METHOD ) ) + { + initialValue = identity; + } + + Property<?> property = new PropertyInstance<>( propertyModel, initialValue ); + properties.put( propertyModel.accessor(), property ); + } ); TransientStateInstance state = new TransientStateInstance( properties ); ServiceInstance compositeInstance = new ServiceInstance( this, mixins, state ); @@ -170,11 +171,13 @@ public final class ServiceModel extends CompositeModel { DependencyModel.ScopeSpecification thisSpec = new DependencyModel.ScopeSpecification( This.class ); Predicate<DependencyModel> configurationCheck = item -> item.rawInjectionType().equals( Configuration.class ); - return dependencies().filter( thisSpec.and( configurationCheck ) ) + return dependencies() + .filter( thisSpec.and( configurationCheck ) ) .filter( dependencyModel -> dependencyModel.rawInjectionType().equals( Configuration.class ) ) .filter( dependencyModel -> dependencyModel.injectionType() instanceof ParameterizedType ) .map( dependencyModel -> Classes.RAW_CLASS.apply( ( (ParameterizedType) dependencyModel.injectionType() ).getActualTypeArguments()[ 0 ] ) ) - .reduce( null, ( injectionClass, type ) -> { + .reduce( null, ( injectionClass, type ) -> + { if( injectionClass == null ) { injectionClass = type; http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/build.gradle ---------------------------------------------------------------------- diff --git a/core/testsupport/build.gradle b/core/testsupport/build.gradle index 0a04b66..adfa425 100644 --- a/core/testsupport/build.gradle +++ b/core/testsupport/build.gradle @@ -19,7 +19,6 @@ */ apply plugin: 'polygene-core' -apply plugin: 'polygene-docker' jar { manifest { name = "Apache Polygene⢠Core Test Support" } } @@ -28,7 +27,5 @@ dependencies { api libraries.junit api libraries.hamcrest - implementation libraries.docker_junit - testRuntimeOnly polygene.core.runtime } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/java/org/apache/polygene/test/docker/DelayChecker.java ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/docker/DelayChecker.java b/core/testsupport/src/main/java/org/apache/polygene/test/docker/DelayChecker.java deleted file mode 100644 index 36de1ea..0000000 --- a/core/testsupport/src/main/java/org/apache/polygene/test/docker/DelayChecker.java +++ /dev/null @@ -1,60 +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.test.docker; - -import pl.domzal.junit.docker.rule.wait.StartCondition; -import pl.domzal.junit.docker.rule.wait.StartConditionCheck; - -class DelayChecker - implements StartCondition -{ - - private final long millis; - private final long doneAt; - - DelayChecker( long millis ) - { - this.millis = millis; - this.doneAt = System.currentTimeMillis() + millis; - } - - @Override - public StartConditionCheck build( pl.domzal.junit.docker.rule.DockerRule currentRule ) - { - return new StartConditionCheck() - { - - @Override - public boolean check() - { - return System.currentTimeMillis() > doneAt; - } - - @Override - public String describe() - { - return String.format( "delay check %d ms", millis ); - } - - @Override - public void after() - { - } - }; - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/java/org/apache/polygene/test/docker/DockerRule.java ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/docker/DockerRule.java b/core/testsupport/src/main/java/org/apache/polygene/test/docker/DockerRule.java deleted file mode 100644 index 18fab0f..0000000 --- a/core/testsupport/src/main/java/org/apache/polygene/test/docker/DockerRule.java +++ /dev/null @@ -1,156 +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.test.docker; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; -import org.junit.rules.TestRule; -import org.junit.runner.Description; -import org.junit.runners.model.Statement; -import pl.domzal.junit.docker.rule.DockerRuleBuilder; -import pl.domzal.junit.docker.rule.WaitFor; -import pl.domzal.junit.docker.rule.wait.LineListener; -import pl.domzal.junit.docker.rule.wait.StartCondition; -import pl.domzal.junit.docker.rule.wait.StartConditionCheck; - -import static java.util.stream.Collectors.joining; -import static org.junit.Assume.assumeFalse; - -public class DockerRule - implements TestRule -{ - private final boolean dockerDisabled = Boolean.valueOf( System.getProperty( "DOCKER_DISABLED", "false" ) ); - private final pl.domzal.junit.docker.rule.DockerRule dockerRule; - - public DockerRule( String image, int... portsToWaitFor ) - { - this( image, null, WaitFor.tcpPort( portsToWaitFor ) ); - } - - public DockerRule( String image, String... logMessageSequenceToWaitFor ) - { - this( image, null, WaitFor.logMessageSequence( logMessageSequenceToWaitFor ) ); - } - - public DockerRule( String image, Map<String, String> environment, String... logMessageSequnceToWaitFor ) - { - this( image, environment, WaitFor.logMessageSequence( logMessageSequnceToWaitFor ) ); - } - - public DockerRule( String image, Long delay, int... portsToWaitFor ) - { - this( image, null, new DelayChecker( delay ), WaitFor.tcpPort( portsToWaitFor ), new DelayChecker( delay ) ); - } - - public DockerRule( String image, Long delay, String... logMessageSequenceToWaitFor ) - { - this( image, null, WaitFor.logMessageSequence( logMessageSequenceToWaitFor ), new DelayChecker( delay ) ); - } - - public DockerRule( String image, Map<String, String> environment, Long delay, String... logMessageSequnceToWaitFor ) - { - this( image, environment, WaitFor.logMessageSequence( logMessageSequnceToWaitFor ), new DelayChecker( delay ) ); - } - - public DockerRule( String image, Map<String, String> environment, StartCondition... waitFor ) - { - if( environment == null ) - { - environment = Collections.emptyMap(); - } - if( dockerDisabled ) - { - dockerRule = null; - } - else - { - DockerRuleBuilder builder = pl.domzal.junit.docker.rule.DockerRule - .builder() - .imageName( "org.apache.polygene:org.apache.polygene.internal.docker-" + image ) - .publishAllPorts( true ) - .waitForTimeout( 120 ) - .waitFor( rule -> new AndChecker( rule, waitFor ) ); - environment.forEach( builder::env ); - dockerRule = builder.build(); - } - } - - @Override - public Statement apply( Statement base, Description description ) - { - assumeFalse( dockerDisabled ); - return dockerRule.apply( base, description ); - } - - public String getDockerHost() - { - return dockerRule.getDockerHost(); - } - - public int getExposedContainerPort( String containerPort ) - { - return Integer.valueOf( dockerRule.getExposedContainerPort( containerPort ) ); - } - - public class AndChecker - implements StartConditionCheck, LineListener - { - private List<StartConditionCheck> allOf; - - public AndChecker( pl.domzal.junit.docker.rule.DockerRule rule, StartCondition... allOf ) - { - this.allOf = Arrays.stream( allOf ).map( cond -> cond.build( rule ) ).collect( Collectors.toList() ); - } - - @Override - public boolean check() - { - return allOf.stream() - .allMatch( StartConditionCheck::check ); - } - - @Override - public String describe() - { - return allOf.stream() - .map( StartConditionCheck::describe ) - .collect( joining( ",", "and(", ")" ) ); - } - - @Override - public void after() - { - allOf.forEach( StartConditionCheck::after ); - } - - @Override - public void nextLine( String line ) - { - allOf.forEach( listener -> - { - if( listener instanceof LineListener ) - { - ( (LineListener) listener ).nextLine( line ); - } - } ); - } - } -} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java index 9a20fdc..f84b622 100644 --- a/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java +++ b/core/testsupport/src/main/java/org/apache/polygene/test/model/assembly/AccessLayer.java @@ -47,8 +47,7 @@ class AccessLayer extends LayeredLayerAssembler } @Override - protected ModuleAssembler instantiateModuleAssembler( ModuleAssembly module, - Class<? extends ModuleAssembler> moduleAssemblerClass + protected ModuleAssembler instantiateModuleAssembler( Class<? extends ModuleAssembler> moduleAssemblerClass, ModuleAssembly constructorArgument ) throws InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { @@ -58,7 +57,7 @@ class AccessLayer extends LayeredLayerAssembler } else { - return super.instantiateModuleAssembler( module, moduleAssemblerClass ); + return super.instantiateModuleAssembler( moduleAssemblerClass, constructorArgument ); } } } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/cassandra/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/cassandra/Dockerfile b/core/testsupport/src/main/resources/docker/cassandra/Dockerfile deleted file mode 100644 index 11d22b4..0000000 --- a/core/testsupport/src/main/resources/docker/cassandra/Dockerfile +++ /dev/null @@ -1,16 +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. - -FROM @cassandra@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/memcached/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/memcached/Dockerfile b/core/testsupport/src/main/resources/docker/memcached/Dockerfile deleted file mode 100644 index 0b1a4b2..0000000 --- a/core/testsupport/src/main/resources/docker/memcached/Dockerfile +++ /dev/null @@ -1,16 +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. - -FROM @memcached@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/mysql/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/mysql/Dockerfile b/core/testsupport/src/main/resources/docker/mysql/Dockerfile deleted file mode 100644 index 967d45d..0000000 --- a/core/testsupport/src/main/resources/docker/mysql/Dockerfile +++ /dev/null @@ -1,16 +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. - -FROM @mariadb@ \ No newline at end of file http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/postgres/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/postgres/Dockerfile b/core/testsupport/src/main/resources/docker/postgres/Dockerfile deleted file mode 100644 index d3dad53..0000000 --- a/core/testsupport/src/main/resources/docker/postgres/Dockerfile +++ /dev/null @@ -1,17 +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. - -FROM @postgres@ -COPY init-test-db.sh /docker-entrypoint-initdb.d/init-test-db.sh http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/postgres/init-test-db.sh ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/postgres/init-test-db.sh b/core/testsupport/src/main/resources/docker/postgres/init-test-db.sh deleted file mode 100755 index 347d78d..0000000 --- a/core/testsupport/src/main/resources/docker/postgres/init-test-db.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/sh -# 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. - -set -e - -# Create test user and database -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL - CREATE USER jdbc_test_login; - CREATE DATABASE jdbc_test_db; - GRANT ALL PRIVILEGES ON DATABASE jdbc_test_db TO jdbc_test_login; -EOSQL - -# Enable ltree extension on test database -psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" -d jdbc_test_db <<-EOSQL - CREATE EXTENSION ltree; -EOSQL http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/redis/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/redis/Dockerfile b/core/testsupport/src/main/resources/docker/redis/Dockerfile deleted file mode 100644 index d0e67fc..0000000 --- a/core/testsupport/src/main/resources/docker/redis/Dockerfile +++ /dev/null @@ -1,16 +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. - -FROM @redis@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/riak/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/riak/Dockerfile b/core/testsupport/src/main/resources/docker/riak/Dockerfile deleted file mode 100644 index 776d7af..0000000 --- a/core/testsupport/src/main/resources/docker/riak/Dockerfile +++ /dev/null @@ -1,16 +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. - -FROM @riak@ http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/core/testsupport/src/main/resources/docker/s3server/Dockerfile ---------------------------------------------------------------------- diff --git a/core/testsupport/src/main/resources/docker/s3server/Dockerfile b/core/testsupport/src/main/resources/docker/s3server/Dockerfile deleted file mode 100644 index a4bff87..0000000 --- a/core/testsupport/src/main/resources/docker/s3server/Dockerfile +++ /dev/null @@ -1,20 +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. - -FROM @s3server@ - -# See https://github.com/scality/S3/blob/master/DOCKER.md -ENV SCALITY_ACCESS_KEY_ID dummyIdentifier -ENV SCALITY_SECRET_ACCESS_KEY dummyCredential http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/cache-memcache/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/cache-memcache/build.gradle b/extensions/cache-memcache/build.gradle index 97742bb..8aa67a7 100644 --- a/extensions/cache-memcache/build.gradle +++ b/extensions/cache-memcache/build.gradle @@ -31,7 +31,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testRuntimeOnly libraries.logback } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/entitystore-cassandra/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/entitystore-cassandra/build.gradle b/extensions/entitystore-cassandra/build.gradle index 06dbc40..343b9f9 100644 --- a/extensions/entitystore-cassandra/build.gradle +++ b/extensions/entitystore-cassandra/build.gradle @@ -34,7 +34,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testRuntimeOnly libraries.logback } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/entitystore-jclouds/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/entitystore-jclouds/build.gradle b/extensions/entitystore-jclouds/build.gradle index 35120b2..8db7d5c 100644 --- a/extensions/entitystore-jclouds/build.gradle +++ b/extensions/entitystore-jclouds/build.gradle @@ -36,7 +36,7 @@ dependencies { runtimeOnly polygene.core.runtime runtimeOnly libraries.jaxb_api - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testImplementation libraries.jclouds_filesystem testRuntimeOnly libraries.logback http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/entitystore-redis/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/entitystore-redis/build.gradle b/extensions/entitystore-redis/build.gradle index 6526ede..da29e7d 100644 --- a/extensions/entitystore-redis/build.gradle +++ b/extensions/entitystore-redis/build.gradle @@ -32,7 +32,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testRuntimeOnly libraries.logback } http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/entitystore-riak/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/entitystore-riak/build.gradle b/extensions/entitystore-riak/build.gradle index 287c4da..98200ac 100644 --- a/extensions/entitystore-riak/build.gradle +++ b/extensions/entitystore-riak/build.gradle @@ -33,7 +33,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testImplementation libraries.awaitility testRuntimeOnly libraries.logback http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/entitystore-sql/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/entitystore-sql/build.gradle b/extensions/entitystore-sql/build.gradle index 694c478..223e85b 100644 --- a/extensions/entitystore-sql/build.gradle +++ b/extensions/entitystore-sql/build.gradle @@ -33,7 +33,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testImplementation polygene.library( 'sql-dbcp' ) testImplementation libraries.docker_junit http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/extensions/indexing-sql/build.gradle ---------------------------------------------------------------------- diff --git a/extensions/indexing-sql/build.gradle b/extensions/indexing-sql/build.gradle index faac8e8..5d6f71e 100644 --- a/extensions/indexing-sql/build.gradle +++ b/extensions/indexing-sql/build.gradle @@ -33,7 +33,7 @@ dependencies { runtimeOnly polygene.core.runtime - testImplementation polygene.core.testsupport + testImplementation polygene.internals.testsupport testImplementation polygene.library( 'sql-dbcp' ) testRuntimeOnly libraries.logback http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/internals/testsupport-internal/build.gradle ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/build.gradle b/internals/testsupport-internal/build.gradle new file mode 100644 index 0000000..f04063b --- /dev/null +++ b/internals/testsupport-internal/build.gradle @@ -0,0 +1,31 @@ +/* + * 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. + */ + +apply plugin: 'polygene-internal' +apply plugin: 'polygene-internal-docker' + +description = "Apache Polygene⢠Internal Test Support" + +jar { manifest { name = "Apache Polygene⢠Internals - Test Support" } } + +dependencies { + api polygene.core.testsupport + + implementation libraries.docker_junit + runtimeOnly polygene.core.runtime +} http://git-wip-us.apache.org/repos/asf/polygene-java/blob/a5feec04/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile ---------------------------------------------------------------------- diff --git a/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile b/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile new file mode 100644 index 0000000..11d22b4 --- /dev/null +++ b/internals/testsupport-internal/src/main/docker/cassandra/Dockerfile @@ -0,0 +1,16 @@ +# 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. + +FROM @cassandra@
