borinquenkid commented on code in PR #15683:
URL: https://github.com/apache/grails-core/pull/15683#discussion_r3334577359
##########
grails-datamapping-tck/src/main/groovy/org/apache/grails/data/testing/tck/base/GrailsDataTckManager.groovy:
##########
@@ -56,34 +31,36 @@ abstract class GrailsDataTckManager {
abstract Session createSession()
- List<Class> domainClasses = [
- Book,
- ChildEntity,
- City,
- ClassWithListArgBeforeValidate,
- ClassWithNoArgBeforeValidate,
- ClassWithOverloadedBeforeValidate,
- CommonTypes,
- Country,
- EnumThing,
- Face,
- Highway,
- Location,
- ModifyPerson,
- Nose,
- OptLockNotVersioned,
- OptLockVersioned,
- Person,
- PersonEvent,
- Pet,
- PetType,
- Plant,
- PlantCategory,
- Publication,
- Task,
- TestEntity
+ private List<Class> domainClasses = [
]
+/**
+ * Returns a defensive copy of the registered domain classes.
+ * Mutating this array will not affect the manager state.
+ */
+ Class[] getDomainClasses() {
+ return domainClasses as Class[]
+ }
+
+ @Deprecated
+ void addAllDomainClasses(Collection<Class> classes) {
+ if (classes) {
+ domainClasses.addAll(classes)
+ }
+ }
+
+ /**
+ * Adds all the specified classes to the domain classes list.
+ * Supports clean vararg syntax: manager.registerDomainClasses(Foo, Bar)
+ *
+ * @param classes The classes to register
+ */
+ void registerDomainClasses(Class... classes) {
Review Comment:
If we rename addAllDomainClasses in this repository, downstream callers
will not automatically update, and it will cause compile-time failures for
several reasons:
1. External Repository Breakages: GORM implementations and plugins that
reside in external repositories (such as Neo4j, Cassandra, or custom
third-party datastores) depend on grails-datamapping-tck
as a published library. If addAllDomainClasses is renamed or deleted,
their builds will break immediately upon upgrading because they still call the
old method.
2. IntelliJ Groovy Refactoring Limits: Even within the same monorepo,
IntelliJ's "Rename Refactoring" tool is notoriously unreliable for Groovy.
Because of Groovy's dynamic nature, the IDE frequently
misses dynamic call sites or uses of the method in dynamic test specs,
requiring a lot of manual search-and-replace anyway.
By keeping addAllDomainClasses as a @Deprecated wrapper delegation to
registerDomainClasses , we preserve backward compatibility for
downstream/external TCK consumers while indicating that they
should move to the new API.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]