This is an automated email from the ASF dual-hosted git repository.
jamesfredley pushed a change to branch 8.0.x
in repository https://gitbox.apache.org/repos/asf/grails-core.git
from 66a25164f3 Merge pull request #15757 from
codeconsole/remove-skeleton-logback-spring-xml
add 9a8a9a11dd Restore backwards compatibility for Grails 7 command
plugins on Grails 8
add 7831d7dfa2 Merge remote-tracking branch 'origin/8.0.x' into
feat/8.0.x-legacy-command-compat
add 71f73fc7a7 Address review feedback and expand backwards-compatibility
test coverage
add be98c6228a Deduplicate legacy command classes across classloaders and
fix docs
add 5069bef718 Use @Slf4j annotation for ApplicationContextCommandRegistry
logger
add d1fe4956a6 Isolate Grails 7 command compat into execution-only
grails-core-cli-legacy
add 7b53bcc56b Harden legacy command provider: single name resolution and
loud linkage failures
add d64cef31ad Merge origin/8.0.x into feat/8.0.x-legacy-command-compat
add c798c93778 Add default-on legacyCommandSupport flag beside
cliAutoProvision
add cd6cbb81bb Stop inventing named Gradle tasks for legacy application
commands
add 3587ed6478 Prove Grails 7 Groovy 4 precompiled application-command
compatibility
add 1d8edac99e Fix CodeNarc style in legacy command compatibility layer
add 116b0efab3 Default legacyCommandSupport to false (opt-in Grails 7
bridge)
add 75ed39351b Harden legacy command compatibility diagnostics
add 1ed1a30a04 Move legacy command compatibility tests into an end-to-end
build
add e1b93a6927 Merge pull request #16059 from
jdaugherty/test/8.0.x-legacy-command-e2e
add b5d87ae5ea Merge branch '8.0.x' into feat/8.0.x-legacy-command-compat
add 08121444e3 chore: add license header to end-to-end properties
add ed1961adfc test: capture application command diagnostics from logger
add bdb98a6636 test: capture StackTrace filterer emissions via LogCapture
new 301b40c20a Merge pull request #16011 from
apache/feat/8.0.x-legacy-command-compat
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.github/workflows/end-to-end.yml | 144 ++++
AGENTS.md | 1 +
end-to-end/README.md | 111 +++
.../build.gradle | 44 +-
.../gradle.properties | 6 +-
.../gradle/wrapper/gradle-wrapper.jar | Bin
.../gradle/wrapper/gradle-wrapper.properties | 2 -
gradlew => end-to-end/gradlew | 4 +-
gradlew.bat => end-to-end/gradlew.bat | 4 +-
.../legacy-commands-plugin}/build.gradle | 18 +-
.../legacy/commands/plugin/GreetingService.groovy | 10 +-
.../commands/plugin/HelloLegacyAppCommand.groovy | 37 +-
.../plugin/HelloLegacyGrailsCommand.groovy | 31 +-
.../plugin/LegacyCommandsPluginGrailsPlugin.groovy | 14 +-
.../src/main/resources/META-INF/grails.factories | 9 +-
.../src/main/scripts/hello-legacy-script.groovy | 15 +-
.../legacy-commands}/build.gradle | 80 +-
.../grails-app/conf/application.yml | 17 +-
.../legacy-commands}/grails-app/conf/logback.xml | 0
.../controllers/legacycommands}/UrlMappings.groovy | 2 +-
.../init/legacycommands}/Application.groovy | 4 +-
.../services/legacycommands/GreetingService.groovy | 10 +-
...egacyCommandCompatibilityIntegrationSpec.groovy | 236 ++++++
end-to-end/legacy-g7-command-plugin/.sdkmanrc | 4 +
end-to-end/legacy-g7-command-plugin/build.gradle | 83 +++
.../gradle/wrapper/gradle-wrapper.jar | Bin
.../gradle/wrapper/gradle-wrapper.properties | 6 +
.../legacy-g7-command-plugin/gradlew | 4 +-
.../legacy-g7-command-plugin/gradlew.bat | 4 +-
.../legacy-g7-command-plugin}/settings.gradle | 40 +-
.../g7/commands/HelloDerivedNameCommand.groovy | 29 +-
.../g7/commands/HelloG7PrecompiledCommand.groovy | 43 +-
.../HelloG7PrecompiledGrailsCommand.groovy | 27 +-
.../src/main/resources/META-INF/grails.factories | 1 +
end-to-end/settings.gradle | 112 +++
gradle-bootstrap/build.gradle | 47 +-
gradle/publish-root-config.gradle | 1 +
.../GrailsApplicationContextCommandRunner.groovy | 49 +-
...railsApplicationContextCommandRunnerSpec.groovy | 100 +++
.../build.gradle | 36 +-
.../grails/dev/commands}/ApplicationCommand.groovy | 5 +-
.../grails/dev/commands}/ExecutionContext.groovy | 5 +-
.../dev/commands}/GrailsApplicationCommand.groovy | 14 +-
.../dev}/commands/io/FileSystemInteraction.groovy | 6 +-
.../commands}/io/FileSystemInteractionImpl.groovy | 5 +-
.../commands/template}/TemplateException.groovy | 4 +-
.../dev/commands}/template/TemplateRenderer.groovy | 4 +-
.../commands}/template/TemplateRendererImpl.groovy | 8 +-
.../compat/LegacyApplicationCommandAdapter.groovy | 90 +++
.../compat/LegacyApplicationCommandProvider.groovy | 163 ++++
.../main/resources/META-INF/grails-cli.factories | 2 +-
.../cli/LegacyCommandRegistryLoadingSpec.groovy | 601 +++++++++++++++
.../LegacyApplicationCommandAdapterSpec.groovy | 107 +++
.../core/cli/ApplicationCommandDiagnostics.groovy | 87 +++
.../ApplicationCommandFactoryKeyProvider.groovy | 10 +-
.../core/cli/ApplicationCommandProvider.groovy | 13 +-
.../core/cli/ApplicationCommandRegistrar.groovy | 14 +-
.../core/cli/ApplicationCommandTargetAware.groovy | 10 +-
.../cli/ApplicationContextCommandRegistry.groovy | 216 +++++-
.../compiler/CommandFactoriesTransformation.groovy | 14 +-
.../core/io/support/GrailsFactoriesLoader.groovy | 54 ++
.../grails/util/GrailsUtilStackFiltererSpec.groovy | 23 +-
.../GrailsBootstrapRegistryInitializerSpec.groovy | 19 +-
.../core/cli/ApplicationCommandProviderSpec.groovy | 822 +++++++++++++++++++++
.../CommandFactoriesTransformationSpec.groovy | 16 +
.../test/resources/META-INF/grails-cli.factories | 2 +-
grails-doc/src/en/guide/introduction/whatsNew.adoc | 26 +-
.../src/en/guide/upgrading/upgrading80x.adoc | 131 +++-
.../groovy/org/grails/forge/cli/CommandSpec.groovy | 50 +-
.../plugin/commands/GrailsCliGradlePlugin.groovy | 83 ++-
.../gradle/plugin/core/GrailsExtension.groovy | 15 +
.../plugin/commands/CliAutoDiscoverySpec.groovy | 129 +++-
.../commands/LegacyCommandTaskDiscoverySpec.groovy | 44 ++
.../cli-companion-autodiscovery/app/build.gradle | 37 +-
.../included-digit-bearing-plugin/build.gradle | 21 +
.../my-plugin-2fa-one/build.gradle | 1 +
.../my-plugin-2fa-snapshot/build.gradle | 1 +
.../my-plugin-2fa-timestamp/build.gradle | 1 +
.../my-plugin-2fa-unspecified/build.gradle | 1 +
.../included-digit-bearing-plugin/settings.gradle | 3 +
.../cli-companion-autodiscovery/settings.gradle | 9 +
.../legacy-command-discovery/app/build.gradle | 15 +
.../gradle.properties | 0
.../legacy-command-api/build.gradle | 3 +
.../grails/dev/commands/ApplicationCommand.java | 12 +-
.../java/grails/dev/commands/ExecutionContext.java | 6 +-
.../legacy-command-plugin/build.gradle | 14 +
.../example/legacy/HelloLegacyAppCommand.groovy | 22 +-
.../src/main/resources/META-INF/grails.factories | 1 +
.../legacy-command-discovery/settings.gradle | 3 +
.../org/grails/cli/profile/AbstractProfile.groovy | 4 +-
.../ApplicationContextCommandFactory.groovy | 62 +-
.../factory/GroovyScriptCommandFactory.groovy | 2 +
.../grails/cli/profile/AbstractProfileSpec.groovy | 119 +++
.../ApplicationContextCommandFactorySpec.groovy | 113 +++
.../factory/LegacyPluginScriptCompatSpec.groovy | 107 +++
settings.gradle | 1 +
97 files changed, 4313 insertions(+), 422 deletions(-)
create mode 100644 .github/workflows/end-to-end.yml
create mode 100644 end-to-end/README.md
copy
grails-databinding-core/src/main/groovy/org/grails/databinding/converters/FormattedLocalDateTimeValueConverter.groovy
=> end-to-end/build.gradle (50%)
copy
grails-test-suite-uber/src/test/resources/org/grails/commons/cfg/ExampleConfig.properties
=> end-to-end/gradle.properties (83%)
copy {build-logic => end-to-end}/gradle/wrapper/gradle-wrapper.jar (100%)
copy {build-logic => end-to-end}/gradle/wrapper/gradle-wrapper.properties (51%)
copy gradlew => end-to-end/gradlew (99%)
copy gradlew.bat => end-to-end/gradlew.bat (97%)
copy {grails-test-examples/views-functional-tests-plugin =>
end-to-end/legacy-commands-plugin}/build.gradle (61%)
copy grails-data-graphql/plugin/grails-app/views/graphql/invalidRequest.gson
=>
end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/GreetingService.groovy
(91%)
copy
grails-test-examples/hibernate5/spring-boot-hibernate/src/main/groovy/example/BookController.groovy
=>
end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyAppCommand.groovy
(61%)
copy grails-test-examples/demo33/src/test/groovy/demo/FirstTagLibSpec.groovy
=>
end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/HelloLegacyGrailsCommand.groovy
(60%)
copy
grails-test-examples/plugins/micronaut-singleton/src/main/groovy/micronaut/singleton/MicronautSingletonGrailsPlugin.groovy
=>
end-to-end/legacy-commands-plugin/src/main/groovy/legacy/commands/plugin/LegacyCommandsPluginGrailsPlugin.groovy
(71%)
copy
grails-data-neo4j/examples/neo4j-spring-boot/src/main/resources/application.yml
=>
end-to-end/legacy-commands-plugin/src/main/resources/META-INF/grails.factories
(85%)
copy grails-core/src/main/groovy/grails/boot/GrailsPluginApplication.groovy =>
end-to-end/legacy-commands-plugin/src/main/scripts/hello-legacy-script.groovy
(80%)
copy {grails-test-examples/geb => end-to-end/legacy-commands}/build.gradle
(53%)
copy {grails-test-examples/database-cleanup =>
end-to-end/legacy-commands}/grails-app/conf/application.yml (79%)
copy {grails-test-examples/config-report =>
end-to-end/legacy-commands}/grails-app/conf/logback.xml (100%)
copy {grails-test-examples/config-report/grails-app/controllers/configreport
=>
end-to-end/legacy-commands/grails-app/controllers/legacycommands}/UrlMappings.groovy
(97%)
copy
{grails-test-examples/hibernate5/grails-multitenant-multi-datasource/grails-app/init/example
=>
end-to-end/legacy-commands/grails-app/init/legacycommands}/Application.groovy
(97%)
copy
grails-data-graphql/plugin/grails-app/controllers/org/grails/gorm/graphql/plugin/UrlMappings.groovy
=>
end-to-end/legacy-commands/grails-app/services/legacycommands/GreetingService.groovy
(84%)
create mode 100644
end-to-end/legacy-commands/src/integration-test/groovy/legacycommands/LegacyCommandCompatibilityIntegrationSpec.groovy
create mode 100644 end-to-end/legacy-g7-command-plugin/.sdkmanrc
create mode 100644 end-to-end/legacy-g7-command-plugin/build.gradle
copy {build-logic =>
end-to-end/legacy-g7-command-plugin}/gradle/wrapper/gradle-wrapper.jar (100%)
create mode 100644
end-to-end/legacy-g7-command-plugin/gradle/wrapper/gradle-wrapper.properties
copy gradlew => end-to-end/legacy-g7-command-plugin/gradlew (99%)
copy gradlew.bat => end-to-end/legacy-g7-command-plugin/gradlew.bat (97%)
copy {grails-forge => end-to-end/legacy-g7-command-plugin}/settings.gradle
(66%)
copy grails-test-examples/demo33/src/test/groovy/demo/FirstTagLibSpec.groovy
=>
end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloDerivedNameCommand.groovy
(54%)
copy
grails-core/src/main/groovy/grails/core/GrailsApplicationLifeCycleAdapter.groovy
=>
end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledCommand.groovy
(56%)
copy
grails-test-examples/hibernate7/views-functional-tests/src/main/groovy/functional/tests/MyConverter.groovy
=>
end-to-end/legacy-g7-command-plugin/src/main/groovy/legacy/g7/commands/HelloG7PrecompiledGrailsCommand.groovy
(62%)
create mode 100644
end-to-end/legacy-g7-command-plugin/src/main/resources/META-INF/grails.factories
create mode 100644 end-to-end/settings.gradle
copy {grails-services => grails-core-cli-legacy}/build.gradle (78%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/ApplicationCommand.groovy
(89%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/ExecutionContext.groovy
(85%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/GrailsApplicationCommand.groovy
(75%)
copy {grails-shell-cli/src/main/groovy/org/grails/cli/profile =>
grails-core-cli-legacy/src/main/groovy/grails/dev}/commands/io/FileSystemInteraction.groovy
(93%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/io/FileSystemInteractionImpl.groovy
(96%)
copy
{grails-shell-cli/src/main/groovy/org/grails/cli/profile/commands/templates =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands/template}/TemplateException.groovy
(79%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/template/TemplateRenderer.groovy
(95%)
copy {grails-core/src/cli/groovy/org/apache/grails/core/cli =>
grails-core-cli-legacy/src/main/groovy/grails/dev/commands}/template/TemplateRendererImpl.groovy
(96%)
create mode 100644
grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapter.groovy
create mode 100644
grails-core-cli-legacy/src/main/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandProvider.groovy
copy grails-data-hibernate5/dbmigration/src/test/resources/logging.properties
=> grails-core-cli-legacy/src/main/resources/META-INF/grails-cli.factories (86%)
create mode 100644
grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/LegacyCommandRegistryLoadingSpec.groovy
create mode 100644
grails-core-cli-legacy/src/test/groovy/org/apache/grails/core/cli/compat/LegacyApplicationCommandAdapterSpec.groovy
create mode 100644
grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandDiagnostics.groovy
copy
grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/domain/hibernate/HibernatePackage.groovy
=>
grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandFactoryKeyProvider.groovy
(78%)
copy
grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/domain/hibernate/HibernatePackage.groovy
=>
grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandProvider.groovy
(72%)
copy
grails-async/core/src/main/groovy/grails/async/decorator/PromiseDecoratorProvider.groovy
=>
grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandRegistrar.groovy
(73%)
copy
grails-data-graphql/core/src/test/groovy/org/grails/gorm/graphql/domain/hibernate/HibernatePackage.groovy
=>
grails-core/src/cli/groovy/org/apache/grails/core/cli/ApplicationCommandTargetAware.groovy
(81%)
create mode 100644
grails-core/src/test/groovy/org/apache/grails/core/cli/ApplicationCommandProviderSpec.groovy
copy grails-data-hibernate5/dbmigration/src/test/resources/logging.properties
=> grails-core/src/test/resources/META-INF/grails-cli.factories (87%)
create mode 100644
grails-gradle/plugins/src/test/groovy/org/grails/gradle/plugin/commands/LegacyCommandTaskDiscoverySpec.groovy
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/build.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-one/build.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-snapshot/build.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-timestamp/build.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/my-plugin-2fa-unspecified/build.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/cli-companion-autodiscovery/included-digit-bearing-plugin/settings.gradle
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/app/build.gradle
copy
grails-gradle/plugins/src/test/resources/test-projects/{cli-companion-autodiscovery
=> legacy-command-discovery}/gradle.properties (100%)
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/build.gradle
copy
grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/autoimport/other/A.groovy
=>
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ApplicationCommand.java
(82%)
copy
grails-data-neo4j/examples/test-data-service/grails-app/domain/example/Book.groovy
=>
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-api/src/main/java/grails/dev/commands/ExecutionContext.java
(93%)
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/build.gradle
copy
grails-forge/grails-forge-core/src/main/java/org/grails/forge/build/Comment.java
=>
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/groovy/org/example/legacy/HelloLegacyAppCommand.groovy
(70%)
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/legacy-command-plugin/src/main/resources/META-INF/grails.factories
create mode 100644
grails-gradle/plugins/src/test/resources/test-projects/legacy-command-discovery/settings.gradle
create mode 100644
grails-shell-cli/src/test/groovy/org/grails/cli/profile/AbstractProfileSpec.groovy
create mode 100644
grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/ApplicationContextCommandFactorySpec.groovy
create mode 100644
grails-shell-cli/src/test/groovy/org/grails/cli/profile/commands/factory/LegacyPluginScriptCompatSpec.groovy