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]

Reply via email to