From d15bcfa5ac29b746b14b9f607154952d2e066bcf Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 11:28:16 +0100 Subject: [PATCH 01/25] support for multiple Micronaut versions --- .github/workflows/gradle.yml | 39 +++++--- .github/workflows/release.yml | 35 ++++--- build.gradle | 1 + buildSrc/build.gradle | 6 +- .../groovy/micronaut-compatibility.gradle | 99 +++++++++++++++++++ gradle.properties | 4 +- settings.gradle | 2 +- 7 files changed, 154 insertions(+), 32 deletions(-) create mode 100644 buildSrc/src/main/groovy/micronaut-compatibility.gradle diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 18ad5747..fc145d5c 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -1,6 +1,6 @@ name: Check -on: [push, pull_request] +on: [ push, pull_request ] jobs: check: name: Check @@ -9,19 +9,26 @@ jobs: GRADLE_OPTS: "-Xmx6g -Xms4g" CI: true COVERALLS_REPO_TOKEN: ${{ secrets.COVERALLS_REPO_TOKEN }} - + strategy: + fail-fast: false + matrix: + versions: + - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15' + - 'check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9' + - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9' steps: - - uses: actions/checkout@v2 - - name: Set up JDK 1.8 - uses: actions/setup-java@v1 - with: - java-version: 1.8 - - uses: eskatos/gradle-command-action@v1 - with: - arguments: check aggregateTestReports coveralls --stacktrace - - name: Show Reports - uses: actions/upload-artifact@v1 - if: failure() - with: - name: reports - path: build/reports/ + - uses: actions/checkout@v2 + - uses: actions/setup-java@v2 + with: + java-version: '8' + distribution: zulu + cache: 'gradle' + - uses: eskatos/gradle-command-action@v2 + with: + arguments: ${{ matrix.versions }} + - name: Show Reports + uses: actions/upload-artifact@v2 + if: failure() + with: + name: reports + path: build/reports/ diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a61e21d2..6294454e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,14 +9,18 @@ jobs: runs-on: ubuntu-latest env: GRADLE_OPTS: "-Xmx6g -Xms4g" - GRGIT_USER: musketyr - GRGIT_PASS: ${{ secrets.GITHUB_PERSONAL_TOKEN }} + SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} + SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} + SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} steps: - uses: actions/checkout@v2 - name: Set up JDK 1.8 - uses: actions/setup-java@v1 + uses: actions/setup-java@v2 with: - java-version: 1.8 + java-version: '8' + distribution: zulu + cache: 'gradle' - name: Semantic Version id: version uses: ncipollo/semantic-version-action@v1 @@ -26,15 +30,24 @@ jobs: with: fileName: 'secret.pgp' encodedString: ${{ secrets.SIGNING_SECRET_KEY_BASE64 }} - - uses: eskatos/gradle-command-action@v1 + - name: Release Micronaut 1.x env: - SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }} - SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }} - SIGNING_KEY_ID: ${{ secrets.SIGNING_KEY_ID }} - SIGNING_PASSWORD: ${{ secrets.SIGNING_PASSWORD }} SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} + uses: eskatos/gradle-command-action@v2 with: - arguments: gitPublishPush publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }} -Prelease=true -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} --stacktrace + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-1.0 -Prelease=true --stacktrace + - name: Release Micronaut 2.x + env: + SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} + uses: eskatos/gradle-command-action@v2 + with: + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-2.0 --stacktrace -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 + - name: Release Micronaut 3.x + env: + SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} + uses: eskatos/gradle-command-action@v2 + with: + arguments: gitPublishPush publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-3.0 --stacktrace -PmicronautVersion=3.2.3 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} ping: name: Notify Upstream Repositories runs-on: ubuntu-latest @@ -55,4 +68,4 @@ jobs: token: ${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} repository: ${{ matrix.repository }} event-type: ap-new-version-released-event - client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}", "property" : "micronaut.grails.version", "github" : ${{ toJson(github) }} }' + client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}-micronaut-1.0", "property" : "micronaut.facebook.sdk.version", "github" : ${{ toJson(github) }} }' diff --git a/build.gradle b/build.gradle index 6d01a305..9e7cbcdd 100644 --- a/build.gradle +++ b/build.gradle @@ -124,6 +124,7 @@ subprojects { Project subproject -> apply plugin: 'groovy' apply plugin: 'checkstyle' apply plugin: 'codenarc' + apply plugin: 'micronaut-compatibility' configurations { optional.extendsFrom compile diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 89965d24..e077b289 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -15,10 +15,12 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -apply plugin: 'groovy' +plugins { + id 'groovy-gradle-plugin' + id 'groovy' +} repositories { - jcenter() mavenCentral() maven { url 'https://plugins.gradle.org/m2/' } } diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle new file mode 100644 index 00000000..52c5c630 --- /dev/null +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -0,0 +1,99 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * + * Copyright 2020-2021 Agorapulse. + * + * Licensed 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 + * + * https://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. + */ +import groovy.transform.Field + +@Field static final Map MICRONAUT_1 = [ + 'micronaut-runtime-groovy': 'io.micronaut', + 'micronaut-function-groovy': 'io.micronaut', + 'micronaut-function-aws': 'io.micronaut', + 'micronaut-aws-common': 'io.micronaut.configuration', + 'micronaut-security': 'io.micronaut', + 'micronaut-security-jwt': 'io.micronaut', + 'micronaut-jdbc-tomcat': 'io.micronaut.configuration', +] + +@Field static final Map MICRONAUT_2 = [ + 'micronaut-runtime-groovy': 'io.micronaut.groovy', + 'micronaut-function-groovy': 'io.micronaut.groovy', + 'micronaut-function-aws': 'io.micronaut.aws', + 'micronaut-aws-common': 'io.micronaut.aws', + 'micronaut-security': 'io.micronaut.security', + 'micronaut-security-jwt': 'io.micronaut.security', + 'micronaut-jdbc-tomcat': 'io.micronaut.sql', +] + +@Field static final Map IMPORTS = [ + 'javax.annotation.Nullable': 'io.micronaut.core.annotation.Nullable', + 'javax.inject.Singleton': 'jakarta.inject.Singleton', + 'javax.inject.Named': 'jakarta.inject.Named', + 'javax.inject.Inject': 'jakarta.inject.Inject', + 'io.micronaut.test.annotation.MicronautTest': [ + java: 'io.micronaut.test.extensions.junit5.annotation.MicronautTest', + groovy: 'io.micronaut.test.extensions.spock.annotation.MicronautTest', + ] +] + +ext.micronautMigratedDependency = { String module -> + Map groups = project.getProperty('micronautVersion').startsWith('1') ? MICRONAUT_1 : MICRONAUT_2 + String group = groups[module] + + if (!group) { + throw new IllegalArgumentException("Cannot find group for $module. Known modules: ${groups.keySet()}") + } + + return "$group:$module" +} + +pluginManager.withPlugin('java') { + tasks.register('migrateImports') { Task task -> + File javaSources = project.file('src/main/java') + File javaTestSources = project.file('src/test/java') + File groovySources = project.file('src/main/groovy') + File groovyTestSources = project.file('src/test/groovy') + + List dirs = [javaSources, javaTestSources, groovySources, groovyTestSources] + + for (File dir in dirs) { + if (dir.exists()) { + task.inputs.dir dir + task.outputs.dir dir + + task.doFirst { + task.inputs.files.forEach { File file -> + String content = file.text + String newContent = content + + if (IMPORTS.keySet().any { String original -> content.contains(original) }) { + IMPORTS.each { String original, Object value -> + String replacement = value instanceof CharSequence ? value : (file.name.endsWith('.groovy') ? value['groovy'] : value['java']) + newContent = newContent.replace(original, replacement) + } + } + + if (content != newContent) { + project.logger.lifecycle("Migrated imports in $file") + file.text = newContent + } + } + } + } + } + } +} + + diff --git a/gradle.properties b/gradle.properties index 85c4d5de..ad619682 100644 --- a/gradle.properties +++ b/gradle.properties @@ -29,9 +29,9 @@ spockVersion = 2.0-groovy-2.5 junitVersion = 5.7.2 awsSdkVersion = 1.11.656 awsSdk2Version = 2.9.24 -testcontainersVersion = 1.16.2 +testcontainersVersion = 1.16.3 dockerApiVersion = 3.2.12 -groovyClosureSupportVersion = 0.6.0 +groovyClosureSupportVersion = 0.6.3 kordampVersion=0.46.0 nexusPluginVersion=1.0.0 diff --git a/settings.gradle b/settings.gradle index 9962514a..23228f67 100644 --- a/settings.gradle +++ b/settings.gradle @@ -17,7 +17,7 @@ */ pluginManagement { repositories { - jcenter() + mavenCentral() gradlePluginPortal() } plugins { From 26df02b1a55e2738b337b4e7a4d493adb8e9fe2f Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 12:23:17 +0100 Subject: [PATCH 02/25] upgraded gradle to the latest 6.x --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ebc2d518..8ee5e910 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,4 @@ -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.2-all.zip distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStorePath=wrapper/dists From d66743b072e73b0302ec44cb7dd21b8c36eaec06 Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 12:29:18 +0100 Subject: [PATCH 03/25] fixed micronaut-hibernate-gorm coordinates for MN 2.+ --- buildSrc/src/main/groovy/micronaut-compatibility.gradle | 2 ++ 1 file changed, 2 insertions(+) diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index 52c5c630..cc35bbed 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -25,6 +25,7 @@ import groovy.transform.Field 'micronaut-security': 'io.micronaut', 'micronaut-security-jwt': 'io.micronaut', 'micronaut-jdbc-tomcat': 'io.micronaut.configuration', + 'micronaut-hibernate-gorm': 'io.micronaut.configuration', ] @Field static final Map MICRONAUT_2 = [ @@ -35,6 +36,7 @@ import groovy.transform.Field 'micronaut-security': 'io.micronaut.security', 'micronaut-security-jwt': 'io.micronaut.security', 'micronaut-jdbc-tomcat': 'io.micronaut.sql', + 'micronaut-hibernate-gorm': 'io.micronaut.groovy', ] @Field static final Map IMPORTS = [ From 603a60c9dcbb02bbb793ec03b24e6e828228b870 Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 12:39:50 +0100 Subject: [PATCH 04/25] using the micronautMigratedDependency to obtain the appropriate group id --- .../micronaut-grails-domain-library.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle index 538a1703..d639c451 100644 --- a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle +++ b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle @@ -37,7 +37,7 @@ dependencies { compileOnly "io.micronaut:micronaut-inject-groovy" - compile 'io.micronaut.configuration:micronaut-hibernate-gorm' + compile micronautMigratedDependency('micronaut-hibernate-gorm') compileOnly "org.grails:grails-core:$grailsVersion" From 1a709b6dc51a683261d21877434d0d71c6a38800 Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 14:24:02 +0100 Subject: [PATCH 05/25] safeguard MN 2.x dependencies --- build.gradle | 2 +- .../src/main/groovy/micronaut-compatibility.gradle | 2 ++ subprojects/micronaut-grails/micronaut-grails.gradle | 2 +- .../grails/GrailsPropertyTranslatingEnvironment.java | 10 +++++++++- .../micronaut/grails/MicronautGrailsApp.java | 2 +- 5 files changed, 14 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 9e7cbcdd..4b42314f 100644 --- a/build.gradle +++ b/build.gradle @@ -145,7 +145,7 @@ subprojects { Project subproject -> // Groovy compile "org.codehaus.groovy:groovy:$groovyVersion" - compile "io.micronaut:micronaut-runtime-groovy" + compile micronautMigratedDependency('micronaut-runtime-groovy') compile "io.micronaut:micronaut-inject" compile "io.micronaut:micronaut-runtime" diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index cc35bbed..9a1694b7 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -26,6 +26,7 @@ import groovy.transform.Field 'micronaut-security-jwt': 'io.micronaut', 'micronaut-jdbc-tomcat': 'io.micronaut.configuration', 'micronaut-hibernate-gorm': 'io.micronaut.configuration', + 'micronaut-spring': 'io.micronaut', ] @Field static final Map MICRONAUT_2 = [ @@ -37,6 +38,7 @@ import groovy.transform.Field 'micronaut-security-jwt': 'io.micronaut.security', 'micronaut-jdbc-tomcat': 'io.micronaut.sql', 'micronaut-hibernate-gorm': 'io.micronaut.groovy', + 'micronaut-spring': 'io.micronaut.spring', ] @Field static final Map IMPORTS = [ diff --git a/subprojects/micronaut-grails/micronaut-grails.gradle b/subprojects/micronaut-grails/micronaut-grails.gradle index ff10bc99..7e4b6976 100644 --- a/subprojects/micronaut-grails/micronaut-grails.gradle +++ b/subprojects/micronaut-grails/micronaut-grails.gradle @@ -22,7 +22,7 @@ config { } dependencies { - api 'io.micronaut:micronaut-spring' + api micronautMigratedDependency('micronaut-spring') compileOnly "org.grails:grails-core:$grailsVersion" diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java index a2f34252..0f65da53 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java @@ -17,6 +17,7 @@ */ package com.agorapulse.micronaut.grails; +import io.micronaut.context.ApplicationContextConfiguration; import io.micronaut.context.env.DefaultEnvironment; import io.micronaut.core.convert.ArgumentConversionContext; import io.micronaut.core.convert.ConversionService; @@ -27,6 +28,7 @@ import org.springframework.core.env.MapPropertySource; import org.springframework.core.env.PropertySource; +import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.*; @@ -38,7 +40,13 @@ class GrailsPropertyTranslatingEnvironment extends DefaultEnvironment { private final PropertyTranslatingCustomizer customizer; GrailsPropertyTranslatingEnvironment(Environment environment, PropertyTranslatingCustomizer customizer, List expectedMapProperties) { - super(environment.getActiveProfiles()); + super(new ApplicationContextConfiguration() { + @Nonnull + @Override + public List getEnvironments() { + return Arrays.asList(environment.getActiveProfiles()); + } + }); this.environment = environment; this.customizer = customizer; diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java index cccf8372..890ec204 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java @@ -96,7 +96,7 @@ public MicronautGrailsAppContext(MicronautGrailsAppContextConfiguration micronau @Override @Nonnull protected DefaultEnvironment createEnvironment(@Nonnull ApplicationContextConfiguration c) { - DefaultEnvironment environment = super.createEnvironment(c); + DefaultEnvironment environment = (DefaultEnvironment) super.createEnvironment(c); ((MicronautGrailsAppContextConfiguration)c).getConfiguration().configureEnvironment(environment); return environment; } From 4c5451c6f8986f9bea00e1d96cb2f72917fd53bf Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Wed, 26 Jan 2022 14:45:22 +0100 Subject: [PATCH 06/25] migrated Nonnull annotation --- buildSrc/src/main/groovy/micronaut-compatibility.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index 9a1694b7..dbe13a80 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -43,6 +43,7 @@ import groovy.transform.Field @Field static final Map IMPORTS = [ 'javax.annotation.Nullable': 'io.micronaut.core.annotation.Nullable', + 'javax.annotation.Nonnull': 'io.micronaut.core.annotation.NonNull', 'javax.inject.Singleton': 'jakarta.inject.Singleton', 'javax.inject.Named': 'jakarta.inject.Named', 'javax.inject.Inject': 'jakarta.inject.Inject', From 9a77ba3ede3dff59b43628ac6f837b0667273512 Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Thu, 27 Jan 2022 08:57:59 +0100 Subject: [PATCH 07/25] fixed property to update --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6294454e..644a7335 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -68,4 +68,4 @@ jobs: token: ${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} repository: ${{ matrix.repository }} event-type: ap-new-version-released-event - client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}-micronaut-1.0", "property" : "micronaut.facebook.sdk.version", "github" : ${{ toJson(github) }} }' + client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}-micronaut-1.0", "property" : "micronaut.newrelic.version", "github" : ${{ toJson(github) }} }' From 2210cf7919b6decaf7fe19dbaa88e18a1352d86b Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Fri, 28 Jan 2022 16:09:13 +0100 Subject: [PATCH 08/25] using newer version of micronaut locally, newer version of MN AWS SDK --- gradle.properties | 2 +- subprojects/micronaut-grails/micronaut-grails.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index ad619682..547a5917 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,7 +20,7 @@ slug=agorapulse/micronaut-grails group=com.agorapulse version = 3.0.0-SNAPSHOT -micronautVersion = 1.2.11 +micronautVersion = 1.3.7 grailsVersion=4.0.4 gruVersion = 0.9.4 druVersion = 0.8.1 diff --git a/subprojects/micronaut-grails/micronaut-grails.gradle b/subprojects/micronaut-grails/micronaut-grails.gradle index 7e4b6976..6b9ab160 100644 --- a/subprojects/micronaut-grails/micronaut-grails.gradle +++ b/subprojects/micronaut-grails/micronaut-grails.gradle @@ -31,6 +31,6 @@ dependencies { exclude group: "org.codehaus.groovy", module: "groovy-all" } - testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sns', version: '1.2.10.2' - testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sqs', version: '1.2.10.2' + testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sns', version: "1.6.1-micronaut-${micronautVersion[0]}.0" + testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sqs', version: "1.6.1-micronaut-${micronautVersion[0]}.0" } From d30f902dbddff491e40a83eb352d295c354cda7c Mon Sep 17 00:00:00 2001 From: Vladimir Orany Date: Fri, 28 Jan 2022 16:19:41 +0100 Subject: [PATCH 09/25] fixed nonnull migration, local version based on MN 2.x --- buildSrc/src/main/groovy/micronaut-compatibility.gradle | 5 ++--- gradle.properties | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index dbe13a80..9a01e532 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -44,9 +44,8 @@ import groovy.transform.Field @Field static final Map IMPORTS = [ 'javax.annotation.Nullable': 'io.micronaut.core.annotation.Nullable', 'javax.annotation.Nonnull': 'io.micronaut.core.annotation.NonNull', - 'javax.inject.Singleton': 'jakarta.inject.Singleton', - 'javax.inject.Named': 'jakarta.inject.Named', - 'javax.inject.Inject': 'jakarta.inject.Inject', + 'Nonnull': 'NonNull', + 'import javax.inject': 'import jakarta.inject', 'io.micronaut.test.annotation.MicronautTest': [ java: 'io.micronaut.test.extensions.junit5.annotation.MicronautTest', groovy: 'io.micronaut.test.extensions.spock.annotation.MicronautTest', diff --git a/gradle.properties b/gradle.properties index 547a5917..303ad548 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,12 +20,12 @@ slug=agorapulse/micronaut-grails group=com.agorapulse version = 3.0.0-SNAPSHOT -micronautVersion = 1.3.7 +micronautVersion = 2.5.13 grailsVersion=4.0.4 gruVersion = 0.9.4 druVersion = 0.8.1 -groovyVersion = 2.5.8 -spockVersion = 2.0-groovy-2.5 +groovyVersion = 3.0.9 +spockVersion = 2.0-groovy-3.0 junitVersion = 5.7.2 awsSdkVersion = 1.11.656 awsSdk2Version = 2.9.24 From 71fb8827474ebb404db71edba146766529ba7dae Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 09:24:05 +0100 Subject: [PATCH 10/25] fixed resolution of available entries for EachProperty beans --- subprojects/micronaut-grails/micronaut-grails.gradle | 4 ++-- .../grails/GrailsPropertyTranslatingEnvironment.java | 11 ++++++++++- .../SimpleNotificationServiceConfigurationSpec.groovy | 6 +++--- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/subprojects/micronaut-grails/micronaut-grails.gradle b/subprojects/micronaut-grails/micronaut-grails.gradle index 6b9ab160..28947e39 100644 --- a/subprojects/micronaut-grails/micronaut-grails.gradle +++ b/subprojects/micronaut-grails/micronaut-grails.gradle @@ -31,6 +31,6 @@ dependencies { exclude group: "org.codehaus.groovy", module: "groovy-all" } - testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sns', version: "1.6.1-micronaut-${micronautVersion[0]}.0" - testImplementation group: 'com.agorapulse', name: 'micronaut-aws-sdk-sqs', version: "1.6.1-micronaut-${micronautVersion[0]}.0" + testImplementation group: 'com.agorapulse', name: 'micronaut-amazon-awssdk-sns', version: "1.6.1-micronaut-${micronautVersion[0]}.0" + testImplementation group: 'com.agorapulse', name: 'micronaut-amazon-awssdk-sqs', version: "1.6.1-micronaut-${micronautVersion[0]}.0" } diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java index 0f65da53..daff5709 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java @@ -38,6 +38,7 @@ class GrailsPropertyTranslatingEnvironment extends DefaultEnvironment { private final Environment environment; private final PropertyTranslatingCustomizer customizer; + private final Map multilayer = new LinkedHashMap<>(); GrailsPropertyTranslatingEnvironment(Environment environment, PropertyTranslatingCustomizer customizer, List expectedMapProperties) { super(new ApplicationContextConfiguration() { @@ -51,7 +52,6 @@ public List getEnvironments() { this.customizer = customizer; if (environment instanceof AbstractEnvironment) { - Map multilayer = new LinkedHashMap<>(); AbstractEnvironment abEnv = (AbstractEnvironment) environment; for (PropertySource source : abEnv.getPropertySources()) { if (source instanceof MapPropertySource) { @@ -136,6 +136,15 @@ public boolean containsProperties(@Nullable String name) { return containsProperty(name); } + @Override + public Collection getPropertyEntries(String name) { + if (multilayer.containsKey(name)) { + Map value = (Map) multilayer.get(name); + return value.keySet(); + } + return super.getPropertyEntries(name); + } + @Override public Optional getProperty(@Nullable String name, ArgumentConversionContext conversionContext) { Class type = conversionContext.getArgument().getType(); diff --git a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy index cc8958b3..c1e4c10f 100644 --- a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy +++ b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy @@ -17,9 +17,9 @@ */ package com.agorapulse.micronaut.grails -import com.agorapulse.micronaut.aws.sns.SimpleNotificationService -import com.agorapulse.micronaut.aws.sns.SimpleNotificationServiceConfiguration -import com.agorapulse.micronaut.aws.sqs.SimpleQueueService +import com.agorapulse.micronaut.amazon.awssdk.sns.SimpleNotificationService +import com.agorapulse.micronaut.amazon.awssdk.sns.SimpleNotificationServiceConfiguration +import com.agorapulse.micronaut.amazon.awssdk.sqs.SimpleQueueService import groovy.transform.CompileStatic import io.micronaut.inject.qualifiers.Qualifiers import org.springframework.beans.factory.annotation.Autowired From b1701b75d0eb96fa1cf8172b91e57a58bb4b194f Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 10:21:09 +0100 Subject: [PATCH 11/25] removed @Override from the method which only exists in 2.x and newer --- .../micronaut/grails/GrailsPropertyTranslatingEnvironment.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java index daff5709..d11be6e5 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java @@ -136,7 +136,8 @@ public boolean containsProperties(@Nullable String name) { return containsProperty(name); } - @Override + // Added at MN 2.x + // @Override public Collection getPropertyEntries(String name) { if (multilayer.containsKey(name)) { Map value = (Map) multilayer.get(name); From 74ceb825874faf343a16ccbf0ff297720ad7b445 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 10:31:39 +0100 Subject: [PATCH 12/25] using Grails 5.x for Micronaut 2.x and 3.x --- .github/workflows/gradle.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- .../micronaut-grails-domain-library.gradle | 2 +- gradle.properties | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index fc145d5c..7434d958 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,9 +13,9 @@ jobs: fail-fast: false matrix: versions: - - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15' - - 'check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9' - - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9' + - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15 -PgrailsVersion=4.0.4' + - 'check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' + - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 644a7335..9f92c5ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,19 +35,19 @@ jobs: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-1.0 -Prelease=true --stacktrace + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-1.0 -PgrailsVersion=4.0.4 -Prelease=true --stacktrace - name: Release Micronaut 2.x env: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-2.0 --stacktrace -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-2.0 --stacktrace -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 - name: Release Micronaut 3.x env: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: gitPublishPush publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-3.0 --stacktrace -PmicronautVersion=3.2.3 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} + arguments: gitPublishPush publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-3.0 --stacktrace -PmicronautVersion=3.2.3 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} ping: name: Notify Upstream Repositories runs-on: ubuntu-latest diff --git a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle index d639c451..ae381e1a 100644 --- a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle +++ b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle @@ -44,7 +44,7 @@ dependencies { compile "org.grails:grails-bootstrap:$grailsVersion" annotationProcessor "io.micronaut:micronaut-inject-java" - compile "io.micronaut:micronaut-runtime-groovy" + compile micronautMigratedDependency('micronaut-runtime-groovy') compile "io.micronaut:micronaut-validation" testCompile project(':micronaut-grails-jpa-generator') diff --git a/gradle.properties b/gradle.properties index 303ad548..3d4c9d0b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -21,7 +21,7 @@ group=com.agorapulse version = 3.0.0-SNAPSHOT micronautVersion = 2.5.13 -grailsVersion=4.0.4 +grailsVersion=5.1.1 gruVersion = 0.9.4 druVersion = 0.8.1 groovyVersion = 3.0.9 From 38a569ffc2b98f856659dba275425d88f58e9ffc Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 10:47:17 +0100 Subject: [PATCH 13/25] few more compatibility tweaks --- .../GrailsPropertyTranslatingEnvironment.java | 32 +++++++++++++++++-- .../micronaut/grails/MicronautGrailsApp.java | 23 +++++++++++++ 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java index d11be6e5..9478d770 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/GrailsPropertyTranslatingEnvironment.java @@ -21,6 +21,7 @@ import io.micronaut.context.env.DefaultEnvironment; import io.micronaut.core.convert.ArgumentConversionContext; import io.micronaut.core.convert.ConversionService; +import io.micronaut.core.util.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.core.env.AbstractEnvironment; @@ -30,7 +31,15 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import java.util.*; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import java.util.stream.Collectors; class GrailsPropertyTranslatingEnvironment extends DefaultEnvironment { @@ -143,7 +152,26 @@ public Collection getPropertyEntries(String name) { Map value = (Map) multilayer.get(name); return value.keySet(); } - return super.getPropertyEntries(name); + + // taken from PropertySourcePropertyResolver 2.x + if (!StringUtils.isEmpty(name)) { + // Cannot use PropertyCatalog.NORMALIZED as it does not exist in 1.x + Map entries = resolveEntriesForKey(name, false); + if (entries != null) { + String prefix = name + '.'; + return entries.keySet().stream().filter(k -> k.startsWith(prefix)) + .map(k -> { + String withoutPrefix = k.substring(prefix.length()); + int i = withoutPrefix.indexOf('.'); + if (i > -1) { + return withoutPrefix.substring(0, i); + } + return withoutPrefix; + }) + .collect(Collectors.toSet()); + } + } + return Collections.emptySet(); } @Override diff --git a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java index 890ec204..c5542843 100644 --- a/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java +++ b/subprojects/micronaut-grails/src/main/groovy/com/agorapulse/micronaut/grails/MicronautGrailsApp.java @@ -48,6 +48,29 @@ public class MicronautGrailsApp extends GrailsApp { public static final String ENVIRONMENT_LEGACY = "micronaut-grails-legacy"; public static final String ENVIRONMENT = "micronaut-grails"; + + // removed from the latest SpringApplication + /** + * The class name of application context that will be used by default for non-web + * environments. + */ + public static final String DEFAULT_CONTEXT_CLASS = "org.springframework.context." + + "annotation.AnnotationConfigApplicationContext"; + + /** + * The class name of application context that will be used by default for web + * environments. + */ + public static final String DEFAULT_SERVLET_WEB_CONTEXT_CLASS = "org.springframework.boot." + + "web.servlet.context.AnnotationConfigServletWebServerApplicationContext"; + + /** + * The class name of application context that will be used by default for reactive web + * environments. + */ + public static final String DEFAULT_REACTIVE_WEB_CONTEXT_CLASS = "org.springframework." + + "boot.web.reactive.context.AnnotationConfigReactiveWebServerApplicationContext"; + private class MicronautGrailsAppContextConfiguration implements ApplicationContextConfiguration { private final ClassLoader applicationClassLoader; private final MicronautGrailsAutoConfiguration configuration; From eeda1d505ef0cf92e86003b028a3b7894186046d Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 12:27:37 +0100 Subject: [PATCH 14/25] added introspected to the entity so it's found in Micronaut 3 --- .../com/agorapulse/micronaut/grails/domain/Manager.groovy | 2 ++ 1 file changed, 2 insertions(+) diff --git a/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy b/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy index 7393818a..03faae52 100644 --- a/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy +++ b/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy @@ -19,11 +19,13 @@ package com.agorapulse.micronaut.grails.domain import grails.compiler.GrailsCompileStatic import grails.gorm.annotation.Entity +import io.micronaut.core.annotation.Introspected /** * Test entity. */ @Entity +@Introspected @GrailsCompileStatic @SuppressWarnings([ 'GrailsDomainHasEquals', From 8bfc99c37bf90ba1c76907a777f069ff8621a3fa Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 12:39:04 +0100 Subject: [PATCH 15/25] added grails source folders to migration --- buildSrc/src/main/groovy/micronaut-compatibility.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index 9a01e532..e02709e4 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -69,8 +69,12 @@ pluginManager.withPlugin('java') { File javaTestSources = project.file('src/test/java') File groovySources = project.file('src/main/groovy') File groovyTestSources = project.file('src/test/groovy') + File grailsControllers = project.file('grails-app/controllers') + File grailsDomain = project.file('grails-app/domain') + File grailsInit = project.file('grails-app/init') + File grailsServices = project.file('grails-app/services') - List dirs = [javaSources, javaTestSources, groovySources, groovyTestSources] + List dirs = [javaSources, javaTestSources, groovySources, groovyTestSources, grailsControllers, grailsDomain, grailsInit, grailsServices] for (File dir in dirs) { if (dir.exists()) { From 2b52c9bd8d52426b6dc8dba320622fc953ceef95 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 12:55:19 +0100 Subject: [PATCH 16/25] disabled integration tests for MN 2.x due Grails 5 supports on MN 3.x --- .github/workflows/gradle.yml | 2 +- .../micronaut-grails-integration-test.gradle | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 7434d958..23d6b912 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -14,7 +14,7 @@ jobs: matrix: versions: - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15 -PgrailsVersion=4.0.4' - - 'check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' + - 'check -x :micronaut-grails-domain-library:check -x :micronaut-grails-example:check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' steps: - uses: actions/checkout@v2 diff --git a/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle b/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle index 21882334..55e428d0 100644 --- a/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle +++ b/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle @@ -24,4 +24,5 @@ config { dependencies { api project(':micronaut-grails') api 'org.grails:grails-testing-support:2.1.2' + implementation 'org.opentest4j:opentest4j:1.2.0' } From 896fb867240f891a16adbc1e093dd9690e3247d5 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 13:36:59 +0100 Subject: [PATCH 17/25] upgraded codenarc and fixed violations --- build.gradle | 2 +- .../micronaut/grails/domain/Manager.groovy | 1 + .../micronaut-grails-domain-library.gradle | 2 +- .../domain/MicronautGeneratorSpec.groovy | 2 + .../micronaut-grails-example.gradle | 2 +- gradle.properties | 1 + .../micronaut-grails-integration-test.gradle | 2 +- ...sIntegrationTestMixinTransformation.groovy | 5 +- .../generator/MicronautJdbcGenerator.groovy | 1 + .../generator/MicronautJpaGenerator.groovy | 1 + .../BootInitializerClassInjector.groovy | 11 ++-- .../GrailsMicronautBeanProcessorSpec.groovy | 55 +++++++++++++++---- ...acyGrailsMicronautBeanProcessorSpec.groovy | 5 +- .../PropertyTranslatingCustomizerSpec.groovy | 18 +++--- ...otificationServiceConfigurationSpec.groovy | 5 +- 15 files changed, 82 insertions(+), 31 deletions(-) diff --git a/build.gradle b/build.gradle index 4b42314f..717571de 100644 --- a/build.gradle +++ b/build.gradle @@ -193,7 +193,7 @@ subprojects { Project subproject -> } codenarc { - toolVersion = '1.2.1' + toolVersion = '2.1.0' } config { diff --git a/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy b/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy index 03faae52..7a03e210 100644 --- a/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy +++ b/examples/micronaut-grails-domain-library/grails-app/domain/com/agorapulse/micronaut/grails/domain/Manager.groovy @@ -31,6 +31,7 @@ import io.micronaut.core.annotation.Introspected 'GrailsDomainHasEquals', 'GrailsDomainHasToString', 'FieldTypeRequired', + 'NoDef', ]) class Manager { diff --git a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle index ae381e1a..d6e01d57 100644 --- a/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle +++ b/examples/micronaut-grails-domain-library/micronaut-grails-domain-library.gradle @@ -49,7 +49,7 @@ dependencies { testCompile project(':micronaut-grails-jpa-generator') - testCompile 'com.agorapulse.testing:fixt:0.2.1.1' + testCompile 'com.agorapulse.testing:fixt:0.2.3' testCompile 'io.micronaut:micronaut-inject-groovy' testCompile 'org.mariadb.jdbc:mariadb-java-client:2.7.3' diff --git a/examples/micronaut-grails-domain-library/src/test/groovy/com/agorapulse/micronaut/grails/domain/MicronautGeneratorSpec.groovy b/examples/micronaut-grails-domain-library/src/test/groovy/com/agorapulse/micronaut/grails/domain/MicronautGeneratorSpec.groovy index fcc78b60..9c8a1b71 100644 --- a/examples/micronaut-grails-domain-library/src/test/groovy/com/agorapulse/micronaut/grails/domain/MicronautGeneratorSpec.groovy +++ b/examples/micronaut-grails-domain-library/src/test/groovy/com/agorapulse/micronaut/grails/domain/MicronautGeneratorSpec.groovy @@ -20,6 +20,7 @@ package com.agorapulse.micronaut.grails.domain // tag::body[] import com.agorapulse.micronaut.grails.jpa.generator.MicronautJpaGenerator import com.agorapulse.testing.fixt.Fixt +import groovy.transform.CompileDynamic import io.micronaut.context.ApplicationContext import org.grails.datastore.gorm.validation.constraints.eval.DefaultConstraintEvaluator import org.grails.orm.hibernate.HibernateDatastore @@ -29,6 +30,7 @@ import spock.lang.Specification /** * Example specification generating JPA entities from GORM entities. */ +@CompileDynamic class MicronautGeneratorSpec extends Specification { Fixt fixt = Fixt.create(MicronautGeneratorSpec) diff --git a/examples/micronaut-grails-example/micronaut-grails-example.gradle b/examples/micronaut-grails-example/micronaut-grails-example.gradle index 96de8829..d41661d8 100644 --- a/examples/micronaut-grails-example/micronaut-grails-example.gradle +++ b/examples/micronaut-grails-example/micronaut-grails-example.gradle @@ -112,7 +112,7 @@ dependencies { testRuntime "org.seleniumhq.selenium:selenium-chrome-driver:3.14.0" testRuntime "org.seleniumhq.selenium:selenium-firefox-driver:3.14.0" - testCompile 'com.agorapulse.testing:fixt:0.2.1.1' + testCompile 'com.agorapulse.testing:fixt:0.2.3' } bootRun { diff --git a/gradle.properties b/gradle.properties index 3d4c9d0b..4e4044dc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -34,6 +34,7 @@ dockerApiVersion = 3.2.12 groovyClosureSupportVersion = 0.6.3 kordampVersion=0.46.0 nexusPluginVersion=1.0.0 +grailsTestingSupportVersion=2.1.2 # this should be aligned to Micronaut version # required for AWS CBOR marshalling diff --git a/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle b/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle index 55e428d0..216ef881 100644 --- a/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle +++ b/subprojects/micronaut-grails-integration-test/micronaut-grails-integration-test.gradle @@ -23,6 +23,6 @@ config { dependencies { api project(':micronaut-grails') - api 'org.grails:grails-testing-support:2.1.2' + api "org.grails:grails-testing-support:$grailsTestingSupportVersion" implementation 'org.opentest4j:opentest4j:1.2.0' } diff --git a/subprojects/micronaut-grails-integration-test/src/main/groovy/com/agorapulse/micronaut/grails/test/MicronautGrailsIntegrationTestMixinTransformation.groovy b/subprojects/micronaut-grails-integration-test/src/main/groovy/com/agorapulse/micronaut/grails/test/MicronautGrailsIntegrationTestMixinTransformation.groovy index 6af44807..36eb439e 100644 --- a/subprojects/micronaut-grails-integration-test/src/main/groovy/com/agorapulse/micronaut/grails/test/MicronautGrailsIntegrationTestMixinTransformation.groovy +++ b/subprojects/micronaut-grails-integration-test/src/main/groovy/com/agorapulse/micronaut/grails/test/MicronautGrailsIntegrationTestMixinTransformation.groovy @@ -188,7 +188,7 @@ class MicronautGrailsIntegrationTestMixinTransformation implements ASTTransforma if (servletApi != null) { - if( GrailsASTUtils.findAnnotation(classNode, SpringBootTest) == null) { + if (GrailsASTUtils.findAnnotation(classNode, SpringBootTest) == null) { AnnotationNode webIntegrationTestAnnotation = GrailsASTUtils.addAnnotationOrGetExisting(classNode, SpringBootTest) webIntegrationTestAnnotation.addMember("webEnvironment", propX(classX(SpringBootTest.WebEnvironment), "RANDOM_PORT")) if(classNode.getProperty("serverPort") == null) { @@ -198,7 +198,7 @@ class MicronautGrailsIntegrationTestMixinTransformation implements ASTTransforma valueAnnotation.setMember("value", new ConstantExpression('${local.server.port}')) serverPortField.addAnnotation(valueAnnotation) - classNode.addProperty(new PropertyNode(serverPortField, Modifier.PUBLIC, null, null )) + classNode.addProperty(new PropertyNode(serverPortField, Modifier.PUBLIC, null, null)) } } } else { @@ -256,4 +256,5 @@ class MicronautGrailsIntegrationTestMixinTransformation implements ASTTransforma classNode.addMethod(method) } } + } diff --git a/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJdbcGenerator.groovy b/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJdbcGenerator.groovy index b494cb7a..ad088293 100644 --- a/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJdbcGenerator.groovy +++ b/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJdbcGenerator.groovy @@ -48,4 +48,5 @@ class MicronautJdbcGenerator extends MicronautDataGenerator { } """.stripIndent().trim() } + } diff --git a/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJpaGenerator.groovy b/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJpaGenerator.groovy index 0328ec0b..c3cb26ed 100644 --- a/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJpaGenerator.groovy +++ b/subprojects/micronaut-grails-jpa-generator/src/main/groovy/com/agorapulse/micronaut/grails/jpa/generator/MicronautJpaGenerator.groovy @@ -56,4 +56,5 @@ class MicronautJpaGenerator extends MicronautDataGenerator { } """.stripIndent().trim() } + } diff --git a/subprojects/micronaut-grails-web-boot/src/main/groovy/org/grails/compiler/boot/micronaut/BootInitializerClassInjector.groovy b/subprojects/micronaut-grails-web-boot/src/main/groovy/org/grails/compiler/boot/micronaut/BootInitializerClassInjector.groovy index b1fad6bb..db846c01 100644 --- a/subprojects/micronaut-grails-web-boot/src/main/groovy/org/grails/compiler/boot/micronaut/BootInitializerClassInjector.groovy +++ b/subprojects/micronaut-grails-web-boot/src/main/groovy/org/grails/compiler/boot/micronaut/BootInitializerClassInjector.groovy @@ -85,11 +85,11 @@ class BootInitializerClassInjector extends GlobalClassInjectorAdapter { @Override void performInjectionInternal(SourceUnit source, ClassNode classNode) { // if this is a plugin source, then exit - if( classNode.getAnnotations(PLUGIN_SOURCE_ANNOTATION) ) { + if (classNode.getAnnotations(PLUGIN_SOURCE_ANNOTATION)) { return } // don't generate for plugins - if( classNode.getNodeMetaData('isPlugin') ) return + if (classNode.getNodeMetaData('isPlugin')) return if(GrailsASTUtils.isAssignableFrom(GRAILS_CONFIGURATION_CLASS_NODE, classNode) && !GrailsASTUtils.isSubclassOfOrImplementsInterface(classNode, GrailsPluginApplication.name)) { @@ -100,7 +100,7 @@ class BootInitializerClassInjector extends GlobalClassInjectorAdapter { def mainMethodBody = mn.code if(mainMethodBody instanceof BlockStatement) { BlockStatement bs = (BlockStatement)mainMethodBody - if( !bs.statements.isEmpty() ) { + if (!bs.statements.isEmpty()) { def methodCallExpression = new MethodCallExpression( new ClassExpression(ClassHelper.make(System)), @@ -124,8 +124,8 @@ class BootInitializerClassInjector extends GlobalClassInjectorAdapter { def parameter = new Parameter(springApplicationBuilder, "application") def methodBody = new BlockStatement() - methodBody.addStatement( new ExpressionStatement( new MethodCallExpression( new VariableExpression(parameter), "sources", new ClassExpression(classNode)))) - loaderClassNode.addMethod( new MethodNode("configure", Modifier.PROTECTED, springApplicationBuilder, [parameter] as Parameter[], [] as ClassNode[], methodBody)) + methodBody.addStatement(new ExpressionStatement(new MethodCallExpression(new VariableExpression(parameter), 'sources', new ClassExpression(classNode)))) + loaderClassNode.addMethod(new MethodNode("configure", Modifier.PROTECTED, springApplicationBuilder, [parameter] as Parameter[], [] as ClassNode[], methodBody)) source.getAST().addClass( loaderClassNode ) @@ -135,4 +135,5 @@ class BootInitializerClassInjector extends GlobalClassInjectorAdapter { } } } + } diff --git a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.groovy b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.groovy index 7e8f66d2..6d533359 100644 --- a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.groovy +++ b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.groovy @@ -17,6 +17,7 @@ */ package com.agorapulse.micronaut.grails +import groovy.transform.CompileDynamic import groovy.transform.CompileStatic import io.micronaut.context.annotation.Factory import io.micronaut.context.annotation.Primary @@ -43,6 +44,7 @@ import static java.lang.annotation.RetentionPolicy.RUNTIME /** * Tests for micronaut Spring bean processor. */ +@CompileDynamic @ContextConfiguration(classes = [GrailsConfig, MicronautGrailsConfiguration]) @TestPropertySource('classpath:com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.properties') class GrailsMicronautBeanProcessorSpec extends Specification { @@ -98,6 +100,7 @@ class GrailsMicronautBeanProcessorSpec extends Specification { !translatingEnvironment.containsProperty('redis.host') !translatingEnvironment.getProperty('redis.host', String).present } + } // tag::configuration[] @@ -107,7 +110,7 @@ class GrailsConfig { @Bean MicronautBeanImporter myImporter() { // <2> - MicronautBeanImporter.create() + return MicronautBeanImporter.create() .addByType(Widget) // <3> .addByType('someInterface', SomeInterface) // <4> .addByStereotype('custom', SomeCustomScope) // <5> @@ -124,20 +127,30 @@ class GrailsConfig { } // end::configuration[] -interface SomeInterface { } +@CompileStatic +interface SomeInterface { + +} @Singleton -class SomeImplementation implements SomeInterface { } +@CompileStatic +class SomeImplementation implements SomeInterface { +} + +@CompileStatic class SomeNamed { + final String name SomeNamed(String name) { this.name = name } + } @Factory +@CompileStatic class SomeNamedFactory { @io.micronaut.context.annotation.Bean @@ -158,20 +171,32 @@ class SomeNamedFactory { @Primary @Singleton -class Widget { } +@CompileStatic +class Widget { + +} @Singleton +@CompileStatic @Requires(notEnv = 'test') -class TestWidget extends Widget { } +class TestWidget extends Widget { + +} -interface Minion { } +interface Minion { + +} @Documented @Retention(RUNTIME) @Scope +@CompileStatic @io.micronaut.context.annotation.Bean -@interface SomeCustomScope { } +@interface SomeCustomScope { + +} +@CompileStatic @SomeCustomScope class CustomBean { @@ -188,15 +213,25 @@ class CustomBean { this.redisPort = redisPort this.redisTimeout = redisTimeout } + } @Singleton +@CompileStatic @Named('gadget') -class SomeGadget { } +class SomeGadget { + +} @Singleton +@CompileStatic @Named('other') -class OtherMinion implements Minion { } +class OtherMinion implements Minion { + +} @Singleton -class NormalMinion implements Minion { } +@CompileStatic +class NormalMinion implements Minion { + +} diff --git a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/LegacyGrailsMicronautBeanProcessorSpec.groovy b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/LegacyGrailsMicronautBeanProcessorSpec.groovy index 0f16558b..fdac1932 100644 --- a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/LegacyGrailsMicronautBeanProcessorSpec.groovy +++ b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/LegacyGrailsMicronautBeanProcessorSpec.groovy @@ -17,6 +17,7 @@ */ package com.agorapulse.micronaut.grails +import groovy.transform.CompileDynamic import groovy.transform.CompileStatic import io.micronaut.inject.qualifiers.Qualifiers import org.springframework.beans.factory.annotation.Autowired @@ -31,6 +32,7 @@ import spock.lang.Specification /** * Tests for micronaut Spring bean processor. */ +@CompileDynamic @ContextConfiguration(classes = [GrailsLegacyConfig]) @TestPropertySource('classpath:com/agorapulse/micronaut/grails/GrailsMicronautBeanProcessorSpec.properties') class LegacyGrailsMicronautBeanProcessorSpec extends Specification { @@ -67,6 +69,7 @@ class LegacyGrailsMicronautBeanProcessorSpec extends Specification { prototypeBean.redisPort == REDIS_PORT prototypeBean.redisTimeout == REDIS_TIMEOUT } + } // tag::configuration[] @@ -76,7 +79,7 @@ class GrailsLegacyConfig { @Bean GrailsMicronautBeanProcessor widgetProcessor() { - GrailsMicronautBeanProcessor + return GrailsMicronautBeanProcessor .builder() .addByType(Widget) .addByType('someInterface', SomeInterface) diff --git a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/PropertyTranslatingCustomizerSpec.groovy b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/PropertyTranslatingCustomizerSpec.groovy index 8c7e9a77..77d5864c 100644 --- a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/PropertyTranslatingCustomizerSpec.groovy +++ b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/PropertyTranslatingCustomizerSpec.groovy @@ -17,11 +17,13 @@ */ package com.agorapulse.micronaut.grails +import groovy.transform.CompileDynamic import spock.lang.Specification /** * Tests for property translating customizer. */ +@CompileDynamic class PropertyTranslatingCustomizerSpec extends Specification { void 'custom replacements works'() { @@ -36,10 +38,10 @@ class PropertyTranslatingCustomizerSpec extends Specification { .build() then: - customizer.getAlternativeNames(null).isEmpty() - customizer.getAlternativeNames('').isEmpty() - customizer.getAlternativeNames('foo.bar').isEmpty() - customizer.getAlternativeNames('foo.gar').isEmpty() + customizer.getAlternativeNames(null).empty + customizer.getAlternativeNames('').empty + customizer.getAlternativeNames('foo.bar').empty + customizer.getAlternativeNames('foo.gar').empty customizer.getAlternativeNames('foo.baz') == ['bar.baz', 'baz'] as Set customizer.getAlternativeNames('baz') == ['foo.baz'] as Set } @@ -49,9 +51,9 @@ class PropertyTranslatingCustomizerSpec extends Specification { PropertyTranslatingCustomizer customizer = PropertyTranslatingCustomizer.none() then: - customizer.getAlternativeNames('foo.bar').isEmpty() - customizer.getAlternativeNames('foo.baz').isEmpty() - customizer.getAlternativeNames('baz').isEmpty() + customizer.getAlternativeNames('foo.bar').empty + customizer.getAlternativeNames('foo.baz').empty + customizer.getAlternativeNames('baz').empty } void 'standard replacements works'() { @@ -62,7 +64,7 @@ class PropertyTranslatingCustomizerSpec extends Specification { .build() then: - customizer.getAlternativeNames('redis.timeout').isEmpty() + customizer.getAlternativeNames('redis.timeout').empty customizer.getAlternativeNames('redis.port') == ['grails.redis.port'] as Set customizer.getAlternativeNames('micronaut.redis.port') == ['grails.redis.port', 'grails.micronaut.redis.port'] as Set customizer.getAlternativeNames('micronaut.server.url') == ['grails.server.url', 'grails.micronaut.server.url'] as Set diff --git a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy index c1e4c10f..2cecc333 100644 --- a/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy +++ b/subprojects/micronaut-grails/src/test/groovy/com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.groovy @@ -20,6 +20,7 @@ package com.agorapulse.micronaut.grails import com.agorapulse.micronaut.amazon.awssdk.sns.SimpleNotificationService import com.agorapulse.micronaut.amazon.awssdk.sns.SimpleNotificationServiceConfiguration import com.agorapulse.micronaut.amazon.awssdk.sqs.SimpleQueueService +import groovy.transform.CompileDynamic import groovy.transform.CompileStatic import io.micronaut.inject.qualifiers.Qualifiers import org.springframework.beans.factory.annotation.Autowired @@ -33,6 +34,7 @@ import spock.lang.Specification /** * Tests for micronaut Spring bean processor. */ +@CompileDynamic @ContextConfiguration(classes = [GrailsSimpleNotificationServiceConfig, MicronautGrailsConfiguration]) @TestPropertySource('classpath:com/agorapulse/micronaut/grails/SimpleNotificationServiceConfigurationSpec.properties') class SimpleNotificationServiceConfigurationSpec extends Specification { @@ -52,6 +54,7 @@ class SimpleNotificationServiceConfigurationSpec extends Specification { configuration.android configuration.android.arn == ARN } + } @CompileStatic @@ -60,7 +63,7 @@ class GrailsSimpleNotificationServiceConfig { @Bean MicronautBeanImporter myImporter() { - MicronautBeanImporter.create() + return MicronautBeanImporter.create() .customize(PropertyTranslatingCustomizer .builder() .replacePrefix('aws.sns', 'grails.plugin.awssdk.sns') From ae825dfc6f33350bc223dc890c0a57bd466b19ce Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 13:48:56 +0100 Subject: [PATCH 18/25] trying to harmonize plugins and classpath deps for gorm/hibernate --- .../micronaut-grails-example/micronaut-grails-example.gradle | 4 ++-- .../micronaut-grails-jpa-generator.gradle | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/examples/micronaut-grails-example/micronaut-grails-example.gradle b/examples/micronaut-grails-example/micronaut-grails-example.gradle index d41661d8..f9aafe4e 100644 --- a/examples/micronaut-grails-example/micronaut-grails-example.gradle +++ b/examples/micronaut-grails-example/micronaut-grails-example.gradle @@ -21,7 +21,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "org.grails.plugins:hibernate5:7.0.4" + classpath "org.grails.plugins:hibernate5:7.2.1" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.2.4" } } @@ -87,7 +87,7 @@ dependencies { compile "org.grails.plugins:scaffolding" compile "org.grails.plugins:events" compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core:5.4.18.Final" + compile "org.hibernate:hibernate-core" compile "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" diff --git a/subprojects/micronaut-grails-jpa-generator/micronaut-grails-jpa-generator.gradle b/subprojects/micronaut-grails-jpa-generator/micronaut-grails-jpa-generator.gradle index 6778cddd..81ce5796 100644 --- a/subprojects/micronaut-grails-jpa-generator/micronaut-grails-jpa-generator.gradle +++ b/subprojects/micronaut-grails-jpa-generator/micronaut-grails-jpa-generator.gradle @@ -22,5 +22,6 @@ config { } dependencies { - implementation 'org.grails:grails-datastore-gorm-hibernate5:7.0.4.RELEASE' + implementation platform("org.grails:grails-bom:${grailsVersion}") + implementation 'org.grails:grails-datastore-gorm-hibernate5' } From 04f559bf3f3d237564f29ba637082e9b298f6251 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 14:21:14 +0100 Subject: [PATCH 19/25] varying gorm.version number --- .github/workflows/gradle.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- examples/micronaut-grails-example/gradle.properties | 4 ++-- .../micronaut-grails-example.gradle | 4 ++-- gradle.properties | 1 + 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 23d6b912..d9097593 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -13,9 +13,9 @@ jobs: fail-fast: false matrix: versions: - - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15 -PgrailsVersion=4.0.4' - - 'check -x :micronaut-grails-domain-library:check -x :micronaut-grails-example:check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' - - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1' + - 'check coveralls -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15 -PgrailsVersion=4.0.4 -Pgorm.version=7.0.6.RELEASE' + - 'check -x :micronaut-grails-domain-library:check -x :micronaut-grails-example:check -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Pgorm.version=7.1.2' + - 'migrateImports check -PmicronautVersion=3.2.1 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Pgorm.version=7.1.2' steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v2 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9f92c5ce..d037af9a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -35,19 +35,19 @@ jobs: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-1.0 -PgrailsVersion=4.0.4 -Prelease=true --stacktrace + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-1.0 --stacktrace -PmicronautVersion=1.3.7 -PspockVersion=2.0-groovy-2.5 -PgroovyVersion=2.5.15 -PgrailsVersion=4.0.4 -Pgorm.version=7.0.6.RELEASE -Prelease=true - name: Release Micronaut 2.x env: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-2.0 --stacktrace -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 + arguments: -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-2.0 --stacktrace -PmicronautVersion=2.5.13 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Pgorm.version=7.1.2 -Prelease=true - name: Release Micronaut 3.x env: SIGNING_SECRET_KEY_PATH: ${{ steps.write_file.outputs.filePath }} uses: eskatos/gradle-command-action@v2 with: - arguments: gitPublishPush publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-3.0 --stacktrace -PmicronautVersion=3.2.3 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} + arguments: migrateImports gitPublishPush -x groovydoc publishToSonatype closeAndReleaseSonatypeStagingRepository -Pversion=${{ steps.version.outputs.tag }}-micronaut-3.0 --stacktrace -PmicronautVersion=3.2.3 -PspockVersion=2.0-groovy-3.0 -PgroovyVersion=3.0.9 -PgrailsVersion=5.1.1 -Pgorm.version=7.1.2 -Prelease=true -Dorg.ajoberstar.grgit.auth.username=${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} ping: name: Notify Upstream Repositories runs-on: ubuntu-latest diff --git a/examples/micronaut-grails-example/gradle.properties b/examples/micronaut-grails-example/gradle.properties index b252ea67..f6419a19 100644 --- a/examples/micronaut-grails-example/gradle.properties +++ b/examples/micronaut-grails-example/gradle.properties @@ -16,8 +16,8 @@ # limitations under the License. # -grailsVersion=4.0.4 -gorm.version=7.0.6.RELEASE +grailsVersion=5.1.1 +gorm.version=7.1.2 org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/examples/micronaut-grails-example/micronaut-grails-example.gradle b/examples/micronaut-grails-example/micronaut-grails-example.gradle index f9aafe4e..b09632a3 100644 --- a/examples/micronaut-grails-example/micronaut-grails-example.gradle +++ b/examples/micronaut-grails-example/micronaut-grails-example.gradle @@ -21,7 +21,7 @@ buildscript { } dependencies { classpath "org.grails:grails-gradle-plugin:$grailsVersion" - classpath "org.grails.plugins:hibernate5:7.2.1" + classpath "org.grails.plugins:hibernate5:7.2.0" classpath "com.bertramlabs.plugins:asset-pipeline-gradle:3.2.4" } } @@ -87,7 +87,7 @@ dependencies { compile "org.grails.plugins:scaffolding" compile "org.grails.plugins:events" compile "org.grails.plugins:hibernate5" - compile "org.hibernate:hibernate-core" + compile "org.hibernate:hibernate-core:$hibernateVersion" compile "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" diff --git a/gradle.properties b/gradle.properties index 4e4044dc..479f3e74 100644 --- a/gradle.properties +++ b/gradle.properties @@ -35,6 +35,7 @@ groovyClosureSupportVersion = 0.6.3 kordampVersion=0.46.0 nexusPluginVersion=1.0.0 grailsTestingSupportVersion=2.1.2 +hibernateVersion=5.6.3.Final # this should be aligned to Micronaut version # required for AWS CBOR marshalling From ddfe77c2995dcbfcd2575430d89ca53ee78b67d8 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 15:14:19 +0100 Subject: [PATCH 20/25] using non-deprecated method to create application context instance --- .../grails/web/boot/MicronautGrailsAppServletInitializer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/micronaut-grails-web-boot/src/main/groovy/com/agorapulse/micronaut/grails/web/boot/MicronautGrailsAppServletInitializer.java b/subprojects/micronaut-grails-web-boot/src/main/groovy/com/agorapulse/micronaut/grails/web/boot/MicronautGrailsAppServletInitializer.java index 0320430e..31b82ad7 100644 --- a/subprojects/micronaut-grails-web-boot/src/main/groovy/com/agorapulse/micronaut/grails/web/boot/MicronautGrailsAppServletInitializer.java +++ b/subprojects/micronaut-grails-web-boot/src/main/groovy/com/agorapulse/micronaut/grails/web/boot/MicronautGrailsAppServletInitializer.java @@ -55,7 +55,7 @@ protected WebApplicationContext createRootApplicationContext(ServletContext serv builder.initializers(new ParentContextApplicationContextInitializer(parent)); } builder.initializers(new ServletContextApplicationContextInitializer(servletContext)); - builder.contextClass(AnnotationConfigServletWebServerApplicationContext.class); + builder.contextFactory(webApplicationType -> new AnnotationConfigServletWebServerApplicationContext()); builder = configure(builder); SpringApplication application = builder.build(); if (application.getAllSources().isEmpty() && AnnotationUtils.findAnnotation(getClass(), Configuration.class) != null) { From 0c516cbe790b66b5fa354f7b9c2f97780f5379f1 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 16:21:36 +0100 Subject: [PATCH 21/25] removed offedning plugins from the example application --- .../grails/example/DefaultApplication.groovy | 11 ++++++----- .../micronaut-grails-example.gradle | 17 ++++++----------- .../grails/example/IntegrationSpec.groovy | 2 +- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy b/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy index d5d3fad1..60cbb926 100644 --- a/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy +++ b/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy @@ -17,6 +17,7 @@ */ package micronaut.grails.example +import com.agorapulse.micronaut.grails.MicronautGrailsApp import com.agorapulse.micronaut.grails.domain.Manager import grails.boot.GrailsApp import grails.boot.config.GrailsAutoConfiguration @@ -39,7 +40,7 @@ import org.springframework.core.env.ConfigurableEnvironment import org.springframework.core.env.PropertyResolver import org.springframework.core.io.ResourceLoader -import javax.annotation.Nonnull +import io.micronaut.core.annotation.NonNull class DefaultApplication extends GrailsAutoConfiguration { @@ -116,13 +117,13 @@ class DefaultApplication extends GrailsAutoConfiguration { try { switch (this.webApplicationType) { case WebApplicationType.SERVLET: - contextClass = Class.forName(DEFAULT_SERVLET_WEB_CONTEXT_CLASS) + contextClass = Class.forName(MicronautGrailsApp.DEFAULT_SERVLET_WEB_CONTEXT_CLASS) break case WebApplicationType.REACTIVE: - contextClass = Class.forName(DEFAULT_REACTIVE_WEB_CONTEXT_CLASS) + contextClass = Class.forName(MicronautGrailsApp.DEFAULT_REACTIVE_WEB_CONTEXT_CLASS) break default: - contextClass = Class.forName(DEFAULT_CONTEXT_CLASS) + contextClass = Class.forName(MicronautGrailsApp.DEFAULT_CONTEXT_CLASS) } } catch (ClassNotFoundException ex) { @@ -173,7 +174,7 @@ class DefaultApplication extends GrailsAutoConfiguration { def micronautContext = new DefaultApplicationContext(micronautConfiguration) { @Override - protected DefaultEnvironment createEnvironment(@Nonnull ApplicationContextConfiguration configuration) { + protected DefaultEnvironment createEnvironment(@NonNull ApplicationContextConfiguration configuration) { return configureMicronautEnvironment.call(super.createEnvironment(configuration)) as DefaultEnvironment } } diff --git a/examples/micronaut-grails-example/micronaut-grails-example.gradle b/examples/micronaut-grails-example/micronaut-grails-example.gradle index b09632a3..acebeea4 100644 --- a/examples/micronaut-grails-example/micronaut-grails-example.gradle +++ b/examples/micronaut-grails-example/micronaut-grails-example.gradle @@ -38,8 +38,6 @@ apply plugin:"eclipse" apply plugin:"idea" apply plugin:"war" apply plugin:"org.grails.grails-web" -apply plugin:"com.bertramlabs.asset-pipeline" -apply plugin:"org.grails.grails-gsp" repositories { maven { url "https://repo.grails.org/grails/core" } @@ -58,6 +56,12 @@ configurations { runtimeClasspath { extendsFrom developmentOnly } + + all { + exclude group: 'org.grails', module: 'grails-taglib' + exclude group: 'org.grails', module: 'grails-web-taglib' + exclude group: 'org.grails.plugins', module: 'gsp' + } } dependencies { @@ -82,13 +86,10 @@ dependencies { compile "org.grails:grails-plugin-services" compile "org.grails:grails-plugin-url-mappings" compile "org.grails:grails-plugin-interceptors" - compile "org.grails.plugins:cache" compile "org.grails.plugins:async" - compile "org.grails.plugins:scaffolding" compile "org.grails.plugins:events" compile "org.grails.plugins:hibernate5" compile "org.hibernate:hibernate-core:$hibernateVersion" - compile "org.grails.plugins:gsp" compileOnly "io.micronaut:micronaut-inject-groovy" console "org.grails:grails-console" profile "org.grails.profiles:web" @@ -96,7 +97,6 @@ dependencies { runtime "com.h2database:h2" runtime "org.apache.tomcat:tomcat-jdbc" runtime "javax.xml.bind:jaxb-api:2.3.1" - runtime "com.bertramlabs.plugins:asset-pipeline-grails:3.2.4" testCompile project(':micronaut-grails-integration-test') testCompile project(':micronaut-grails-jpa-generator') @@ -132,8 +132,3 @@ tasks.withType(GroovyCompile) { forkOptions.jvmArgs = ['-Xmx1024m'] } } - -assets { - minifyJs = true - minifyCss = true -} diff --git a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy index 41698411..628a36a5 100644 --- a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy +++ b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy @@ -30,7 +30,7 @@ class IntegrationSpec extends Specification { void 'application started'() { when: - new URL("http://localhost:$serverPort").text + new URL("http://localhost:$serverPort/test").text then: noExceptionThrown() } From 03ccde7f41cd1c2940f8819124ff4656ebf9f4d8 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 17:12:46 +0100 Subject: [PATCH 22/25] simplify example --- .../groovy/micronaut-compatibility.gradle | 13 +++--- .../grails/example/TestController.groovy | 4 ++ .../grails/example/DirectlyInjected.groovy | 7 ++-- .../example/ExampleConfiguration.groovy | 0 .../grails/example/InjectedUsingBridge.groovy | 7 ++-- ...njectedUsingBridgeWithDifferentName.groovy | 0 .../example/InjectedWithQualifier.groovy | 0 .../resources/GebConfig.groovy | 42 ------------------- .../grails/example/IntegrationSpec.groovy | 2 +- .../example/ApplicationSpec/values.json | 4 +- .../example/BridgeApplicationSpec/values.json | 8 ++-- .../DefaultApplicationSpec/values.json | 6 +-- .../example/LegacyApplicationSpec/values.json | 6 +-- 13 files changed, 31 insertions(+), 68 deletions(-) rename examples/micronaut-grails-example/{src/main/groovy => grails-app/utils}/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy (89%) rename examples/micronaut-grails-example/{src/main/groovy => grails-app/utils}/com/agorapulse/micronaut/grails/example/ExampleConfiguration.groovy (100%) rename examples/micronaut-grails-example/{src/main/groovy => grails-app/utils}/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy (89%) rename examples/micronaut-grails-example/{src/main/groovy => grails-app/utils}/com/agorapulse/micronaut/grails/example/InjectedUsingBridgeWithDifferentName.groovy (100%) rename examples/micronaut-grails-example/{src/main/groovy => grails-app/utils}/com/agorapulse/micronaut/grails/example/InjectedWithQualifier.groovy (100%) delete mode 100644 examples/micronaut-grails-example/src/integration-test/resources/GebConfig.groovy diff --git a/buildSrc/src/main/groovy/micronaut-compatibility.gradle b/buildSrc/src/main/groovy/micronaut-compatibility.gradle index e02709e4..bda3ba5b 100644 --- a/buildSrc/src/main/groovy/micronaut-compatibility.gradle +++ b/buildSrc/src/main/groovy/micronaut-compatibility.gradle @@ -69,12 +69,15 @@ pluginManager.withPlugin('java') { File javaTestSources = project.file('src/test/java') File groovySources = project.file('src/main/groovy') File groovyTestSources = project.file('src/test/groovy') - File grailsControllers = project.file('grails-app/controllers') - File grailsDomain = project.file('grails-app/domain') - File grailsInit = project.file('grails-app/init') - File grailsServices = project.file('grails-app/services') + File testResources = project.file('src/test/resources') - List dirs = [javaSources, javaTestSources, groovySources, groovyTestSources, grailsControllers, grailsDomain, grailsInit, grailsServices] + List dirs = [ + javaSources, + javaTestSources, + groovySources, + groovyTestSources, + testResources, + ] for (File dir in dirs) { if (dir.exists()) { diff --git a/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy b/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy index bbf4f740..a9405741 100644 --- a/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy +++ b/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy @@ -39,6 +39,10 @@ class TestController { InjectedUsingBridge injectedUsingBridge InjectedUsingBridgeWithDifferentName otherInjected + def health() { + render "OK" + } + def index() { render([ someDirectlyInjected : someDirectlyInjected?.toString(), diff --git a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy similarity index 89% rename from examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy rename to examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy index 26b5de12..e727aae3 100644 --- a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy +++ b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/DirectlyInjected.groovy @@ -23,7 +23,6 @@ import groovy.transform.CompileStatic import io.micronaut.context.ApplicationContext import io.micronaut.context.annotation.Value -import javax.annotation.Nullable import javax.inject.Singleton @Singleton @@ -39,9 +38,9 @@ class DirectlyInjected { DirectlyInjected( ManagerService managerService, ApplicationContext micronautContext, - @Nullable @Value('${micronaut.foo.bar}') String valueWithMicronautPrefix, - @Nullable @Value('${bar.foo}') String valueWithoutPrefix, - @Nullable @Value('${ex.foo.bar}') String ignoredValue + @Value('${micronaut.foo.bar:}') String valueWithMicronautPrefix, + @Value('${bar.foo:}') String valueWithoutPrefix, + @Value('${ex.foo.bar:}') String ignoredValue ) { this.ignoredValue = ignoredValue this.valueWithoutPrefix = valueWithoutPrefix diff --git a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/ExampleConfiguration.groovy b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/ExampleConfiguration.groovy similarity index 100% rename from examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/ExampleConfiguration.groovy rename to examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/ExampleConfiguration.groovy diff --git a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy similarity index 89% rename from examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy rename to examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy index f5583119..83d58344 100644 --- a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy +++ b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedUsingBridge.groovy @@ -22,7 +22,6 @@ import groovy.transform.CompileStatic import io.micronaut.context.ApplicationContext import io.micronaut.context.annotation.Value -import javax.annotation.Nullable import javax.inject.Singleton @Singleton @@ -38,9 +37,9 @@ class InjectedUsingBridge { InjectedUsingBridge( ManagerService managerService, ApplicationContext micronautContext, - @Nullable @Value('${micronaut.foo.bar}') String valueWithMicronautPrefix, - @Nullable @Value('${bar.foo}') String valueWithoutPrefix, - @Nullable @Value('${ex.foo.bar}') String ignoredvalue + @Value('${micronaut.foo.bar:}') String valueWithMicronautPrefix, + @Value('${bar.foo:}') String valueWithoutPrefix, + @Value('${ex.foo.bar:}') String ignoredvalue ) { this.managerService = managerService diff --git a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedUsingBridgeWithDifferentName.groovy b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedUsingBridgeWithDifferentName.groovy similarity index 100% rename from examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedUsingBridgeWithDifferentName.groovy rename to examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedUsingBridgeWithDifferentName.groovy diff --git a/examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedWithQualifier.groovy b/examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedWithQualifier.groovy similarity index 100% rename from examples/micronaut-grails-example/src/main/groovy/com/agorapulse/micronaut/grails/example/InjectedWithQualifier.groovy rename to examples/micronaut-grails-example/grails-app/utils/com/agorapulse/micronaut/grails/example/InjectedWithQualifier.groovy diff --git a/examples/micronaut-grails-example/src/integration-test/resources/GebConfig.groovy b/examples/micronaut-grails-example/src/integration-test/resources/GebConfig.groovy deleted file mode 100644 index df5c3bee..00000000 --- a/examples/micronaut-grails-example/src/integration-test/resources/GebConfig.groovy +++ /dev/null @@ -1,42 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * Copyright 2020 Vladimir Orany. - * - * Licensed 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 - * - * https://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. - */ -import org.openqa.selenium.chrome.ChromeDriver -import org.openqa.selenium.chrome.ChromeOptions -import org.openqa.selenium.firefox.FirefoxDriver - -environments { - - // run via “./gradlew -Dgeb.env=chrome iT” - chrome { - driver = { new ChromeDriver() } - } - - // run via “./gradlew -Dgeb.env=chromeHeadless iT” - chromeHeadless { - driver = { - ChromeOptions o = new ChromeOptions() - o.addArguments('headless') - new ChromeDriver(o) - } - } - - // run via “./gradlew -Dgeb.env=firefox iT” - firefox { - driver = { new FirefoxDriver() } - } -} diff --git a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy index 628a36a5..22b5cba4 100644 --- a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy +++ b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy @@ -30,7 +30,7 @@ class IntegrationSpec extends Specification { void 'application started'() { when: - new URL("http://localhost:$serverPort/test").text + new URL("http://localhost:$serverPort/test/health").text then: noExceptionThrown() } diff --git a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/ApplicationSpec/values.json b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/ApplicationSpec/values.json index 4b7880fe..10ed9a40 100644 --- a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/ApplicationSpec/values.json +++ b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/ApplicationSpec/values.json @@ -1,8 +1,8 @@ { "someDirectlyInjected": { - "valueWithMicronautPrefix": null, + "valueWithMicronautPrefix": "", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" }, "injectedUsingBridge": { "valueWithMicronautPrefix": null, diff --git a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/BridgeApplicationSpec/values.json b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/BridgeApplicationSpec/values.json index 4db242e8..54b1748c 100644 --- a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/BridgeApplicationSpec/values.json +++ b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/BridgeApplicationSpec/values.json @@ -1,12 +1,12 @@ { "someDirectlyInjected": { - "valueWithMicronautPrefix": null, + "valueWithMicronautPrefix": "", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" }, "injectedUsingBridge": { - "valueWithMicronautPrefix": null, + "valueWithMicronautPrefix": "", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" } } diff --git a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/DefaultApplicationSpec/values.json b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/DefaultApplicationSpec/values.json index 65765d48..9dbb3a5d 100644 --- a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/DefaultApplicationSpec/values.json +++ b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/DefaultApplicationSpec/values.json @@ -1,12 +1,12 @@ { "someDirectlyInjected": { - "valueWithMicronautPrefix": null, + "valueWithMicronautPrefix": "", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" }, "injectedUsingBridge": { "valueWithMicronautPrefix": "foobar", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" } } diff --git a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/LegacyApplicationSpec/values.json b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/LegacyApplicationSpec/values.json index 65765d48..9dbb3a5d 100644 --- a/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/LegacyApplicationSpec/values.json +++ b/examples/micronaut-grails-example/src/test/resources/micronaut/grails/example/LegacyApplicationSpec/values.json @@ -1,12 +1,12 @@ { "someDirectlyInjected": { - "valueWithMicronautPrefix": null, + "valueWithMicronautPrefix": "", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" }, "injectedUsingBridge": { "valueWithMicronautPrefix": "foobar", "valueWithoutPrefix": "barfoo", - "ignoredValue": null + "ignoredValue": "" } } From ba0a1a1c2b42589f56002bdda7689d93e405314b Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 17:18:50 +0100 Subject: [PATCH 23/25] fixed wrong local rollbacks --- .../micronaut/grails/example/TestController.groovy | 11 +++++++---- .../grails/example/DefaultApplication.groovy | 4 +--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy b/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy index a9405741..ccf180f4 100644 --- a/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy +++ b/examples/micronaut-grails-example/grails-app/controllers/micronaut/grails/example/TestController.groovy @@ -17,6 +17,7 @@ */ package micronaut.grails.example +import com.agorapulse.micronaut.grails.domain.Manager import com.agorapulse.micronaut.grails.example.DirectlyInjected import com.agorapulse.micronaut.grails.example.InjectedUsingBridge import com.agorapulse.micronaut.grails.example.InjectedUsingBridgeWithDifferentName @@ -75,10 +76,12 @@ class TestController { } def managers() { - render([ - someDirectlyInjected: someDirectlyInjected?.managerCount, - injectedUsingBridge : injectedUsingBridge?.managerCount, - ] as JSON) + render(Manager.withNewSession { + [ + someDirectlyInjected: someDirectlyInjected?.managerCount, + injectedUsingBridge : injectedUsingBridge?.managerCount, + ] + } as JSON) } def profiles() { diff --git a/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy b/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy index 60cbb926..ff32ad69 100644 --- a/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy +++ b/examples/micronaut-grails-example/grails-app/init/micronaut/grails/example/DefaultApplication.groovy @@ -40,8 +40,6 @@ import org.springframework.core.env.ConfigurableEnvironment import org.springframework.core.env.PropertyResolver import org.springframework.core.io.ResourceLoader -import io.micronaut.core.annotation.NonNull - class DefaultApplication extends GrailsAutoConfiguration { static ConfigurableApplicationContext context @@ -174,7 +172,7 @@ class DefaultApplication extends GrailsAutoConfiguration { def micronautContext = new DefaultApplicationContext(micronautConfiguration) { @Override - protected DefaultEnvironment createEnvironment(@NonNull ApplicationContextConfiguration configuration) { + protected DefaultEnvironment createEnvironment(ApplicationContextConfiguration configuration) { return configureMicronautEnvironment.call(super.createEnvironment(configuration)) as DefaultEnvironment } } From 82692d63b676ef202b80469602b3cb88d2eeee4a Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 17:22:11 +0100 Subject: [PATCH 24/25] fixed client payload for ping action --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d037af9a..12736894 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -68,4 +68,4 @@ jobs: token: ${{ secrets.AGORAPULSE_BOT_PERSONAL_TOKEN }} repository: ${{ matrix.repository }} event-type: ap-new-version-released-event - client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}-micronaut-1.0", "property" : "micronaut.newrelic.version", "github" : ${{ toJson(github) }} }' + client-payload: '{ "group": "com.agorapulse", "module": "micronaut-grails", "version": "${{ steps.version.outputs.tag }}-micronaut-1.0", "property" : "micronaut.grails.version", "github" : ${{ toJson(github) }} }' From de467d072d82f14b15f945799ea48d4fda9d0250 Mon Sep 17 00:00:00 2001 From: musketyr Date: Mon, 31 Jan 2022 17:30:54 +0100 Subject: [PATCH 25/25] verify health response, back to 1.x on the main branch --- examples/micronaut-grails-example/gradle.properties | 4 ++-- .../micronaut/grails/example/IntegrationSpec.groovy | 6 ++---- gradle.properties | 8 ++++---- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/examples/micronaut-grails-example/gradle.properties b/examples/micronaut-grails-example/gradle.properties index f6419a19..b252ea67 100644 --- a/examples/micronaut-grails-example/gradle.properties +++ b/examples/micronaut-grails-example/gradle.properties @@ -16,8 +16,8 @@ # limitations under the License. # -grailsVersion=5.1.1 -gorm.version=7.1.2 +grailsVersion=4.0.4 +gorm.version=7.0.6.RELEASE org.gradle.daemon=true org.gradle.parallel=true org.gradle.jvmargs=-Dfile.encoding=UTF-8 -Xmx1024M diff --git a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy index 22b5cba4..9dc7840d 100644 --- a/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy +++ b/examples/micronaut-grails-example/src/test/groovy/micronaut/grails/example/IntegrationSpec.groovy @@ -29,10 +29,8 @@ class IntegrationSpec extends Specification { @Autowired MicronautJpaGenerator generator void 'application started'() { - when: - new URL("http://localhost:$serverPort/test/health").text - then: - noExceptionThrown() + expect: + new URL("http://localhost:$serverPort/test/health").text == 'OK' } } diff --git a/gradle.properties b/gradle.properties index 479f3e74..83e2ac0e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -20,12 +20,12 @@ slug=agorapulse/micronaut-grails group=com.agorapulse version = 3.0.0-SNAPSHOT -micronautVersion = 2.5.13 -grailsVersion=5.1.1 +micronautVersion = 1.3.7 +grailsVersion=4.0.4 gruVersion = 0.9.4 druVersion = 0.8.1 -groovyVersion = 3.0.9 -spockVersion = 2.0-groovy-3.0 +groovyVersion = 2.5.8 +spockVersion = 2.0-groovy-2.5 junitVersion = 5.7.2 awsSdkVersion = 1.11.656 awsSdk2Version = 2.9.24