Skip to content

feat: wire GraphQL and support module adapters to GormRegistry O(M+N) scaling#15786

Closed
borinquenkid wants to merge 1 commit into
feat/gorm-registry-simplefrom
feat/gorm-registry-misc
Closed

feat: wire GraphQL and support module adapters to GormRegistry O(M+N) scaling#15786
borinquenkid wants to merge 1 commit into
feat/gorm-registry-simplefrom
feat/gorm-registry-misc

Conversation

@borinquenkid

Copy link
Copy Markdown
Member

Summary

Wires the remaining adapters and support modules into the GormRegistry introduced in #15780.

Modules updated:

  • grails-data-graphql — registers GraphQL GORM APIs with the registry; adds GraphqlTenantContextProfilingSpec
  • grails-datamapping-async — async GORM operations wired through registry-based API resolution
  • grails-datamapping-rx — RxGORM static/instance APIs sourced from the registry
  • grails-views-gson — JSON views resolve GORM entity APIs via the registry
  • grails-scaffolding — scaffold data binding uses registry-based API lookup
  • grails-converters — JSON/XML converters resolve domain class APIs via the registry
  • grails-test-suite-uber — integration test NonDefaultDatasourceFlushSpec exercises the registry path across multiple datastores

Test plan

  • ./gradlew :grails-data-graphql:test passes
  • ./gradlew :grails-test-suite-uber:test passes

Stack

🤖 Generated with Claude Code

@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from d58178b to 4aab065 Compare June 27, 2026 17:37
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from 6f5c31f to 590e21c Compare June 27, 2026 17:37
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from 4aab065 to 9ad7741 Compare June 27, 2026 18:15
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from 590e21c to b97eaeb Compare June 27, 2026 18:15
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from 9ad7741 to ac65d23 Compare June 27, 2026 20:47
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from b97eaeb to 3cc9135 Compare June 27, 2026 20:47
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from ac65d23 to 4e92db6 Compare June 27, 2026 22:03
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from 3cc9135 to a884511 Compare June 27, 2026 22:04
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from 4e92db6 to c2534ca Compare June 27, 2026 22:23
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from a884511 to cba09b6 Compare June 27, 2026 22:23
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from c2534ca to 6227f96 Compare June 27, 2026 22:59
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from cba09b6 to d663ee9 Compare June 27, 2026 22:59
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from 6227f96 to bbfc639 Compare June 28, 2026 00:19
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from d663ee9 to 6d53d02 Compare June 28, 2026 00:19
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from bbfc639 to 4aa8561 Compare June 28, 2026 00:53
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from 6d53d02 to edbbbb4 Compare June 28, 2026 00:54
… scaling

Register GORM APIs with GormRegistry for GraphQL, async, RxGORM, JSON views,
scaffolding, and converters modules. Update grails-test-suite-uber integration
tests to exercise the registry-based API path across all datastores.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-simple branch from 4aa8561 to 7abbedc Compare June 28, 2026 01:36
@borinquenkid borinquenkid force-pushed the feat/gorm-registry-misc branch from edbbbb4 to 54d8eaa Compare June 28, 2026 01:36
@testlens-app

testlens-app Bot commented Jun 28, 2026

Copy link
Copy Markdown

🚨 TestLens detected 234 failed tests 🚨

Here is what you can do:

  1. Inspect the test failures carefully.
  2. If you are convinced that some of the tests are flaky, you can mute them below.
  3. Finally, trigger a rerun by checking the rerun checkbox.

Test Summary

CI / Build Grails-Core (macos-latest, 21) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (macos-latest, 21) > :grails-data-simple:test

Test Runs
SimpleMapQuerySpec > test query isolation in DISCRIMINATOR mode

CI / Build Grails-Core (macos-latest, 21) > :grails-datamapping-core:test

Test Runs
GormEnhancerAllQualifiersSpec > registerEntity can resolve through injected registry without touching global singleton
GormEntityTransformSpec > test property/method missing
GormRegistrySpec > test withTenant and exists with multi-tenant entity in DISCRIMINATOR mode
TenantContextProfilingSpec > profile tenant wrapping overhead

CI / Build Grails-Core (macos-latest, 21) > :grails-fields:test (first 40 of 173)

Test Runs
AssociationTypeTemplatesSpec > property name trumps association type
AssociationTypeTemplatesSpec > resolves template for association type
AssociationTypeTemplatesSpec > theme: property name trumps association type
AssociationTypeTemplatesSpec > theme: resolves template for association type
DefaultInputRenderingPersistentSpec > a one-to-many property has a list of links instead of an input
DefaultInputRenderingPersistentSpec > an enum with a toString method uses name instead of toString for the keys
DefaultInputRenderingPersistentSpec > enum select has correct selected option
DefaultInputRenderingPersistentSpec > enum select should respect constraint inList > enum select should respect constraint inList [inListConstraint: [first, second], notAllowed: [third], #0]
DefaultInputRenderingPersistentSpec > enum select should respect constraint inList > enum select should respect constraint inList [inListConstraint: [first], notAllowed: [third, second], #1]
DefaultInputRenderingPersistentSpec > enum with toString select and #type value has correct selected option > enum with toString select and Enum value has correct selected option
DefaultInputRenderingPersistentSpec > enum with toString select and #type value has correct selected option > enum with toString select and String value has correct selected option
DefaultInputRenderingPersistentSpec > input for #{invalid ? 'an invalid' : 'a valid'} property #{invalid ? 'has' : 'does not have'} the invalid attribute > input for #{invalid ? 'an invalid' : 'a valid'} property #{invalid ? 'has' : 'does not have'} the invalid attribute
DefaultInputRenderingPersistentSpec > input for #{invalid ? 'an invalid' : 'a valid'} property #{invalid ? 'has' : 'does not have'} the invalid attribute > input for #{invalid ? 'an invalid' : 'a valid'} property #{invalid ? 'has' : 'does not have'} the invalid attribute
DefaultInputRenderingPersistentSpec > input for #{required ? 'a required' : 'an optional'} #description property #{required ? 'has' : 'does not have'} a no-selection option > input for #{required ? 'a required' : 'an optional'} many-to-one property #{required ? 'has' : 'does not have'} a no-selection option
DefaultInputRenderingPersistentSpec > input for #{required ? 'a required' : 'an optional'} #description property #{required ? 'has' : 'does not have'} a no-selection option > input for #{required ? 'a required' : 'an optional'} many-to-one property #{required ? 'has' : 'does not have'} a no-selection option
DefaultInputRenderingPersistentSpec > input for #{required ? 'a required' : 'an optional'} #description property #{required ? 'has' : 'does not have'} a no-selection option > input for #{required ? 'a required' : 'an optional'} one-to-one property #{required ? 'has' : 'does not have'} a no-selection option
DefaultInputRenderingPersistentSpec > input for #{required ? 'a required' : 'an optional'} #description property #{required ? 'has' : 'does not have'} a no-selection option > input for #{required ? 'a required' : 'an optional'} one-to-one property #{required ? 'has' : 'does not have'} a no-selection option
DefaultInputRenderingPersistentSpec > input for a #description property does have `.id` at the end of the name > input for a many-to-one property does have `.id` at the end of the name
DefaultInputRenderingPersistentSpec > input for a #description property does have `.id` at the end of the name > input for a one-to-one property does have `.id` at the end of the name
DefaultInputRenderingPersistentSpec > input for a #description property doesn't have `.id` at the end of the name > input for a many-to-many property doesn't have `.id` at the end of the name
DefaultInputRenderingPersistentSpec > input for a #description property is a select > input for a many-to-many property is a select
DefaultInputRenderingPersistentSpec > input for a #description property is a select > input for a many-to-one property is a select
DefaultInputRenderingPersistentSpec > input for a #description property is a select > input for a one-to-one property is a select
DefaultInputRenderingPersistentSpec > input for a #description property is a select containing only entries specified in from parameter > input for a many-to-many property is a select containing only entries specified in from parameter
DefaultInputRenderingPersistentSpec > input for a #description property is a select containing only entries specified in from parameter > input for a many-to-one property is a select containing only entries specified in from parameter
DefaultInputRenderingPersistentSpec > input for a #description property is a select containing only entries specified in from parameter > input for a one-to-one property is a select containing only entries specified in from parameter
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Calendar property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Currency property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Date property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Date property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Locale property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a Time property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected > input for a TimeZone property has the correct option(s) selected
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Calendar property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Currency property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Date property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Date property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Locale property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a Time property is a special select type
DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type > input for a TimeZone property is a special select type

CI / Build Grails-Core (ubuntu-latest, 21) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (ubuntu-latest, 21) > :grails-data-simple:test

Test Runs
SimpleMapQuerySpec > test query isolation in DISCRIMINATOR mode

CI / Build Grails-Core (ubuntu-latest, 25) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core (ubuntu-latest, 25) > :grails-data-simple:test

Test Runs
SimpleMapQuerySpec > test query isolation in DISCRIMINATOR mode

CI / Build Grails-Core (windows-latest, 25) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

CI / Build Grails-Core Rerunning all Tasks (ubuntu-latest, 21) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

SiteMesh 2 Compatibility / SiteMesh 2 Core Tests (Java 21) > :grails-data-graphql-core:test

Test Runs
CreateEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get
DeleteEntityDataFetcherSpec > test get invalid
EntityDataFetcherSpec
SingleEntityDataFetcherSpec
SoftDeleteEntityDataFetcherSpec
UpdateEntityDataFetcherSpec > test get
UpdateEntityDataFetcherSpec > test optimistic locking
UpdateEntityDataFetcherSpec > test optimistic locking with null version

🏷️ Commit: 54d8eaa
▶️ Tests: 9094 executed
⚪️ Checks: 41/41 completed

Test Failures (first 10 of 234)

AssociationTypeTemplatesSpec > property name trumps association type (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Author]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormStaticApi(GormEntity.groovy:1492)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.getGormPersistentEntity(GormEntity.groovy:456)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.addTo(GormEntity.groovy:368)
	at grails.plugin.formfields.AssociationTypeTemplatesSpec.setup(AssociationTypeTemplatesSpec.groovy:37)
AssociationTypeTemplatesSpec > resolves template for association type (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Author]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormStaticApi(GormEntity.groovy:1492)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.getGormPersistentEntity(GormEntity.groovy:456)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.addTo(GormEntity.groovy:368)
	at grails.plugin.formfields.AssociationTypeTemplatesSpec.setup(AssociationTypeTemplatesSpec.groovy:37)
AssociationTypeTemplatesSpec > theme: property name trumps association type (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Author]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormStaticApi(GormEntity.groovy:1492)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.getGormPersistentEntity(GormEntity.groovy:456)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.addTo(GormEntity.groovy:368)
	at grails.plugin.formfields.AssociationTypeTemplatesSpec.setup(AssociationTypeTemplatesSpec.groovy:37)
AssociationTypeTemplatesSpec > theme: resolves template for association type (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Author]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormStaticApi(GormEntity.groovy:1492)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.getGormPersistentEntity(GormEntity.groovy:456)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.addTo(GormEntity.groovy:368)
	at grails.plugin.formfields.AssociationTypeTemplatesSpec.setup(AssociationTypeTemplatesSpec.groovy:37)
CreateEntityDataFetcherSpec > test get (:grails-data-graphql-core:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.NullPointerException: Cannot invoke "org.grails.datastore.mapping.services.ServiceRegistry.getService(java.lang.Class)" because "datastore" is null
	at org.grails.gorm.graphql.fetcher.DefaultGormDataFetcher.withTransaction(DefaultGormDataFetcher.groovy:135)
	at org.grails.gorm.graphql.fetcher.impl.CreateEntityDataFetcher.get(CreateEntityDataFetcher.groovy:46)
	at org.grails.gorm.graphql.fetcher.impl.CreateEntityDataFetcherSpec.test get(CreateEntityDataFetcherSpec.groovy:42)
DefaultInputRenderingPersistentSpec > a one-to-many property has a list of links instead of an input (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Person]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1482)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:169)
	at grails.plugin.formfields.DefaultInputRenderingPersistentSpec.setup(DefaultInputRenderingPersistentSpec.groovy:79)
DefaultInputRenderingPersistentSpec > an enum with a toString method uses name instead of toString for the keys (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Person]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1482)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:169)
	at grails.plugin.formfields.DefaultInputRenderingPersistentSpec.setup(DefaultInputRenderingPersistentSpec.groovy:79)
DefaultInputRenderingPersistentSpec > enum select has correct selected option (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Person]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1482)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:169)
	at grails.plugin.formfields.DefaultInputRenderingPersistentSpec.setup(DefaultInputRenderingPersistentSpec.groovy:79)
DefaultInputRenderingPersistentSpec > enum select should respect constraint inList > enum select should respect constraint inList [inListConstraint: [first, second], notAllowed: [third], #0] (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Person]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1482)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:169)
	at grails.plugin.formfields.DefaultInputRenderingPersistentSpec.setup(DefaultInputRenderingPersistentSpec.groovy:79)
DefaultInputRenderingPersistentSpec > enum select should respect constraint inList > enum select should respect constraint inList [inListConstraint: [first], notAllowed: [third, second], #1] (:grails-fields:test in CI / Build Grails-Core (macos-latest, 21))
java.lang.IllegalStateException: No GORM implementation configured for class [grails.plugin.formfields.mock.Person]. Ensure GORM has been initialized correctly
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.currentGormInstanceApi(GormEntity.groovy:1482)
	at org.grails.datastore.gorm.GormEntity$Trait$Helper.save(GormEntity.groovy:169)
	at grails.plugin.formfields.DefaultInputRenderingPersistentSpec.setup(DefaultInputRenderingPersistentSpec.groovy:79)

Muted Tests (first 20 of 234)

Select tests to mute in this pull request:

  • AssociationTypeTemplatesSpec > property name trumps association type
  • AssociationTypeTemplatesSpec > resolves template for association type
  • AssociationTypeTemplatesSpec > theme: property name trumps association type
  • AssociationTypeTemplatesSpec > theme: resolves template for association type
  • CreateEntityDataFetcherSpec > test get
  • DefaultInputRenderingPersistentSpec > a one-to-many property has a list of links instead of an input
  • DefaultInputRenderingPersistentSpec > an enum with a toString method uses name instead of toString for the keys
  • DefaultInputRenderingPersistentSpec > enum select has correct selected option
  • DefaultInputRenderingPersistentSpec > enum select should respect constraint inList
  • DefaultInputRenderingPersistentSpec > enum with toString select and #type value has correct selected option
  • DefaultInputRenderingPersistentSpec > input for #{invalid ? 'an invalid' : 'a valid'} property #{invalid ? 'has' : 'does not have'} the invalid attribute
  • DefaultInputRenderingPersistentSpec > input for #{required ? 'a required' : 'an optional'} #description property #{required ? 'has' : 'does not have'} a no-selection option
  • DefaultInputRenderingPersistentSpec > input for a #description property does have `.id` at the end of the name
  • DefaultInputRenderingPersistentSpec > input for a #description property doesn't have `.id` at the end of the name
  • DefaultInputRenderingPersistentSpec > input for a #description property is a select
  • DefaultInputRenderingPersistentSpec > input for a #description property is a select containing only entries specified in from parameter
  • DefaultInputRenderingPersistentSpec > input for a #type.simpleName property has the correct option(s) selected
  • DefaultInputRenderingPersistentSpec > input for a #type.simpleName property is a special select type
  • DefaultInputRenderingPersistentSpec > input for a #type.simpleName property matches '#outputPattern'
  • DefaultInputRenderingPersistentSpec > input for a #type.simpleName property with #constraints constraints matches #outputPattern

Reuse successful test results:

  • ♻️ Only rerun the tests that failed or were muted before

Click the checkbox to trigger a rerun:

  • Rerun jobs

Learn more about TestLens at testlens.app.

@borinquenkid

Copy link
Copy Markdown
Member Author

Superseded by #15780 — the consolidated GormRegistry core-impl PR wires the in-build adapters directly (Hibernate 5/7 and MongoDB via a registered GormApiFactory; SimpleMap and GraphQL via the base GormStaticApi) and is stabilized green. The unique unit-test coverage from this stack was harvested into #15790. Closing as superseded; the branch is retained for reference (not deleted).

@borinquenkid borinquenkid deleted the feat/gorm-registry-misc branch July 4, 2026 22:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant