This is an automated email from the ASF dual-hosted git repository.

borinquenkid pushed a commit to branch 8.0.x-hibernate7
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit b2b024ce856dae1bf8e2f45086f6e68261e69cc5
Author: Walter Duque de Estrada <[email protected]>
AuthorDate: Thu Jun 18 17:21:24 2026 -0500

    Address H5 review comments: fix exception type, issue URLs, test cleanup
    
    - Hibernate5OptimisticLockingSpec: restore 
HibernateOptimisticLockingFailureException
      (SessionFactoryUtils still produces this specific type), restore typed 
manager, remove
      debug System.getProperties() dump that leaked into review
    - SaveWithInvalidEntitySpec: remove stale //TODO comment and outdated NPE 
Javadoc;
      accept ConstraintViolationException in addition to existing exception 
list (what H5
      actually throws at flush time); remove unused @Ignore import
    - UniqueConstraintHibernateSpec: merge two adjacent Javadoc blocks into one
    - CompositeIdWithJoinTableSpec: remove commented-out //    @Rollback (dead 
code)
    - CompositeIdWithManyToOneAndSequenceSpec: revert @Issue URL back to 
apache/ org
    - CascadeValidationSpec, UniqueFalseConstraintSpec, 
SubclassMultipleListCollectionSpec,
      PersistentPropertySpec: fix @Issue URLs that were incorrectly changed 
from apache/ to
      grails/ — all grails-data-mapping references belong to the apache/ org 
post-ASF move
    - HibernateDatastoreMultiTenancySpec: adopt @RestoreSystemProperties at 
class level;
      remove now-redundant System.clearProperty() cleanup blocks
    - GrailsDomainBinder.java: use var instead of explicit List<ColumnConfig> 
and
      ArrayList<> declarations (Java 21 local variable type inference)
    - HibernateProxyHandler.java: remove unnecessary (T) cast from createProxy —
      Session.getReference(Class<T>, Serializable) already returns T in 
Hibernate 5
    
    Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
---
 .../orm/hibernate/cfg/GrailsDomainBinder.java      |  4 +-
 .../orm/hibernate/proxy/HibernateProxyHandler.java |  2 +-
 .../gorm/tests/CompositeIdWithJoinTableSpec.groovy |  1 -
 .../CompositeIdWithManyToOneAndSequenceSpec.groovy |  2 +-
 .../tests/Hibernate5OptimisticLockingSpec.groovy   | 50 ++++++++++------------
 .../SubclassMultipleListCollectionSpec.groovy      |  2 +-
 .../tests/UniqueConstraintHibernateSpec.groovy     | 11 ++---
 .../tests/validation/CascadeValidationSpec.groovy  |  2 +-
 .../validation/SaveWithInvalidEntitySpec.groovy    |  7 +--
 .../validation/UniqueFalseConstraintSpec.groovy    |  2 +-
 .../mapping/model/PersistentPropertySpec.groovy    |  2 +-
 .../HibernateDatastoreMultiTenancySpec.groovy      |  8 +---
 12 files changed, 37 insertions(+), 56 deletions(-)

diff --git 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
index 69f3dcb020..3623a94c7f 100644
--- 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
+++ 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/cfg/GrailsDomainBinder.java
@@ -499,7 +499,7 @@ public class GrailsDomainBinder implements 
MetadataContributor {
             }
         } else {
             if (hasJoinKeyMapping(propConfig)) {
-                List<ColumnConfig> keys = propConfig.getJoinTable().getKeys();
+                var keys = propConfig.getJoinTable().getKeys();
                 bindSimpleValue("long", key, false, keys.getFirst().getName(), 
mappings);
             } else {
                 bindDependentKeyValue(property, key, mappings, 
sessionFactoryBeanName);
@@ -2393,7 +2393,7 @@ public class GrailsDomainBinder implements 
MetadataContributor {
                     final ColumnConfig columnConfig = new ColumnConfig();
                     
columnConfig.setName(namingStrategy.propertyToColumnName(property.getName()) +
                             UNDERSCORE + FOREIGN_KEY_SUFFIX);
-                    List<ColumnConfig> keys = new ArrayList<>();
+                    var keys = new ArrayList<>();
                     keys.add(columnConfig);
                     jt.setKeys(keys);
                     pc.setJoinTable(jt);
diff --git 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/proxy/HibernateProxyHandler.java
 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/proxy/HibernateProxyHandler.java
index a0d03d7c39..fc4fa25e67 100644
--- 
a/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/proxy/HibernateProxyHandler.java
+++ 
b/grails-data-hibernate5/core/src/main/groovy/org/grails/orm/hibernate/proxy/HibernateProxyHandler.java
@@ -202,7 +202,7 @@ public class HibernateProxyHandler implements ProxyHandler, 
ProxyFactory {
         if (hibSession == null) {
             throw new IllegalStateException("Could not obtain native Hibernate 
Session from Session#getNativeInterface()");
         }
-        return (T) hibSession.getReference(type, key);
+        return hibSession.getReference(type, key);
     }
 
     @Override
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithJoinTableSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithJoinTableSpec.groovy
index 274849dac2..325722ad28 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithJoinTableSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithJoinTableSpec.groovy
@@ -31,7 +31,6 @@ class CompositeIdWithJoinTableSpec extends 
HibernateGormDatastoreSpec {
         manager.registerDomainClasses(CompositeIdParent, CompositeIdChild)
     }
 
-    //    @Rollback
     void "test composite id with join table"() {
         when: "A parent with a composite id and a join table is saved"
         new CompositeIdParent(name: "Test", last: "Test 2")
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithManyToOneAndSequenceSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithManyToOneAndSequenceSpec.groovy
index 08c6ef6e7c..6a7bff10a0 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithManyToOneAndSequenceSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/CompositeIdWithManyToOneAndSequenceSpec.groovy
@@ -34,7 +34,7 @@ class CompositeIdWithManyToOneAndSequenceSpec extends 
HibernateGormDatastoreSpec
     }
 
     @Rollback
-    @Issue('https://github.com/grails/grails-data-mapping/issues/835')
+    @Issue('https://github.com/apache/grails-data-mapping/issues/835')
     void "Test composite id one to many and sequence"() {
 
         when:"a one to many association is created"
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5OptimisticLockingSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5OptimisticLockingSpec.groovy
index 645fe45414..78afce4dea 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5OptimisticLockingSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/Hibernate5OptimisticLockingSpec.groovy
@@ -18,15 +18,16 @@
  */
 package grails.gorm.tests
 
+import org.apache.grails.data.hibernate5.core.GrailsDataHibernate5TckManager
 import org.apache.grails.data.testing.tck.base.GrailsDataTckSpec
 import org.apache.grails.data.testing.tck.domains.OptLockNotVersioned
 import org.apache.grails.data.testing.tck.domains.OptLockVersioned
-import org.springframework.dao.OptimisticLockingFailureException
+import 
org.grails.orm.hibernate.support.hibernate5.HibernateOptimisticLockingFailureException
 
 /**
  * @author Burt Beckwith
  */
-class Hibernate5OptimisticLockingSpec extends GrailsDataTckSpec {
+class Hibernate5OptimisticLockingSpec extends 
GrailsDataTckSpec<GrailsDataHibernate5TckManager> {
 
     void setupSpec() {
         manager.registerDomainClasses(OptLockVersioned, OptLockNotVersioned)
@@ -69,36 +70,29 @@ class Hibernate5OptimisticLockingSpec extends 
GrailsDataTckSpec {
 
         when:
         OptLockVersioned.withTransaction {
-            try {
-                o = OptLockVersioned.get(o.id)
-
-                Thread.start {
-                    OptLockVersioned.withTransaction { s ->
-                        def reloaded = OptLockVersioned.get(o.id)
-                        assert reloaded
-                        assert reloaded != o
-                        reloaded.name += ' in new session'
-                        reloaded.save(flush: true)
-                        assert reloaded.version == 1
-                        assert o.version == 0
-                    }
-
-                }.join()
-
-                o.name += ' in main session'
-                o.save(flush: true)
+            o = OptLockVersioned.get(o.id)
 
-                manager.session.clear()
-                o = OptLockVersioned.get(o.id)
-            } catch (Throwable e) {
-                System.getProperties().each { key, value ->
-                    println "${key}: ${value}"
+            Thread.start {
+                OptLockVersioned.withTransaction { s ->
+                    def reloaded = OptLockVersioned.get(o.id)
+                    assert reloaded
+                    assert reloaded != o
+                    reloaded.name += ' in new session'
+                    reloaded.save(flush: true)
+                    assert reloaded.version == 1
+                    assert o.version == 0
                 }
-                throw e
-            }
+
+            }.join()
+
+            o.name += ' in main session'
+            o.save(flush: true)
+
+            manager.session.clear()
+            o = OptLockVersioned.get(o.id)
         }
         then:
-        thrown OptimisticLockingFailureException
+        thrown HibernateOptimisticLockingFailureException
     }
 
     void "Test optimistic locking disabled with 'version false'"() {
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/SubclassMultipleListCollectionSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/SubclassMultipleListCollectionSpec.groovy
index 107ef91bb6..57dc8c77db 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/SubclassMultipleListCollectionSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/SubclassMultipleListCollectionSpec.groovy
@@ -42,7 +42,7 @@ class SubclassMultipleListCollectionSpec extends 
Specification {
     }
 
     @Rollback
-    @Issue(['https://github.com/grails/grails-data-mapping/issues/882',
+    @Issue(['https://github.com/apache/grails-data-mapping/issues/882',
             'https://github.com/apache/grails-core/issues/14624'])
     void "test inheritance with multiple list collections"() {
         when:
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/UniqueConstraintHibernateSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/UniqueConstraintHibernateSpec.groovy
index f98cc7c4c3..fb08e07369 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/UniqueConstraintHibernateSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/UniqueConstraintHibernateSpec.groovy
@@ -30,14 +30,11 @@ import spock.lang.Shared
 import spock.lang.Specification
 
 /**
- * Tests the unique constraint
- */
-/**
- *
- *  NOTE: This test is disabled because in order for the test suite to run 
quickly we need to run each test in a transaction.
- *  This makes it not possible to test the scenario outlined here, however 
tests for this use case exist in the hibernate plugin itself
- *  so we are covered.
+ * Tests the unique constraint.
  *
+ * NOTE: This test is disabled because in order for the test suite to run 
quickly we need to run each test in a transaction.
+ * This makes it not possible to test the scenario outlined here, however 
tests for this use case exist in the hibernate plugin itself
+ * so we are covered.
  */
 class UniqueConstraintHibernateSpec extends Specification {
 
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/CascadeValidationSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/CascadeValidationSpec.groovy
index 69569881c3..cba9e6254a 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/CascadeValidationSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/CascadeValidationSpec.groovy
@@ -35,7 +35,7 @@ class CascadeValidationSpec extends Specification {
     @Shared @AutoCleanup HibernateDatastore hibernateDatastore = new 
HibernateDatastore(Business, Person, Employee)
 
     @Rollback
-    @Issue('https://github.com/grails/grails-data-mapping/issues/926')
+    @Issue('https://github.com/apache/grails-data-mapping/issues/926')
     void "validation cascades correctly"() {
         given: "an invalid business"
         Business b = new Business(name: null)
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/SaveWithInvalidEntitySpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/SaveWithInvalidEntitySpec.groovy
index d1f7bc7a9b..171cdb21e7 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/SaveWithInvalidEntitySpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/SaveWithInvalidEntitySpec.groovy
@@ -23,7 +23,6 @@ import grails.gorm.annotation.Entity
 import grails.gorm.transactions.Rollback
 import org.grails.orm.hibernate.HibernateDatastore
 import spock.lang.AutoCleanup
-import spock.lang.Ignore
 import spock.lang.Issue
 import spock.lang.Shared
 import spock.lang.Specification
@@ -31,14 +30,10 @@ import spock.lang.Specification
 /**
  * Created by graemerocher on 03/05/2017.
  */
-//TODO Should this test be rewritten?
 class SaveWithInvalidEntitySpec extends Specification {
 
     @Shared @AutoCleanup HibernateDatastore hibernateDatastore = new 
HibernateDatastore(A, B)
 
-    /**
-     * This currently fails with a NPE. See explanation 
https://github.com/apache/grails-core/issues/10604#issuecomment-298943022
-     */
     @Rollback
     @Issue(['https://github.com/apache/grails-core/issues/10604',
             'https://github.com/apache/grails-core/issues/14616'])
@@ -53,7 +48,7 @@ class SaveWithInvalidEntitySpec extends Specification {
 
         then:
         Exception e = thrown()
-        e.getClass().simpleName in ['EntityActionVetoException', 
'HibernateSystemException', 'IllegalStateException']
+        e.getClass().simpleName in ['EntityActionVetoException', 
'HibernateSystemException', 'IllegalStateException', 
'ConstraintViolationException']
         b.hasErrors()
         b.errors.hasFieldErrors('field1')
     }
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/UniqueFalseConstraintSpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/UniqueFalseConstraintSpec.groovy
index 78362832a1..e4d36b36d3 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/UniqueFalseConstraintSpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/grails/gorm/tests/validation/UniqueFalseConstraintSpec.groovy
@@ -31,7 +31,7 @@ class UniqueFalseConstraintSpec extends Specification {
 
     @Shared @AutoCleanup HibernateDatastore hibernateDatastore = new 
HibernateDatastore(User)
 
-    @Issue('https://github.com/grails/grails-data-mapping/issues/1059')
+    @Issue('https://github.com/apache/grails-data-mapping/issues/1059')
     void 'unique:false constraint is ignored and does not behave as 
unique:true'() {
         given: 'a user'
         def user1 = new User(name: 'John')
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/org/grails/datastore/mapping/model/PersistentPropertySpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/org/grails/datastore/mapping/model/PersistentPropertySpec.groovy
index af89827f7b..d14743ee38 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/org/grails/datastore/mapping/model/PersistentPropertySpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/org/grails/datastore/mapping/model/PersistentPropertySpec.groovy
@@ -23,7 +23,7 @@ import grails.gorm.tests.HibernateGormDatastoreSpec
 import grails.persistence.Entity
 import spock.lang.Issue
 
-@Issue('https://github.com/grails/grails-data-mapping/issues/1299')
+@Issue('https://github.com/apache/grails-data-mapping/issues/1299')
 class PersistentPropertySpec extends HibernateGormDatastoreSpec {
 
     void "test isUnidirectionalOneToMany"() {
diff --git 
a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/HibernateDatastoreMultiTenancySpec.groovy
 
b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/HibernateDatastoreMultiTenancySpec.groovy
index 69a5c9c575..e2fd76ad9d 100644
--- 
a/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/HibernateDatastoreMultiTenancySpec.groovy
+++ 
b/grails-data-hibernate5/core/src/test/groovy/org/grails/orm/hibernate/HibernateDatastoreMultiTenancySpec.groovy
@@ -24,7 +24,9 @@ import grails.gorm.multitenancy.Tenants
 import grails.gorm.tests.HibernateGormDatastoreSpec
 import org.grails.datastore.mapping.multitenancy.MultiTenancySettings
 import 
org.grails.datastore.mapping.multitenancy.resolvers.SystemPropertyTenantResolver
+import spock.util.environment.RestoreSystemProperties
 
+@RestoreSystemProperties
 class HibernateDatastoreMultiTenancySpec extends HibernateGormDatastoreSpec {
 
     def setupSpec() {
@@ -62,9 +64,6 @@ class HibernateDatastoreMultiTenancySpec extends 
HibernateGormDatastoreSpec {
         then:
         result.size() == 1
         result[0].tenantId == "tenant2"
-
-        cleanup:
-        System.clearProperty(SystemPropertyTenantResolver.PROPERTY_NAME)
     }
 
     void "test getDatastoreForConnection throws exception for invalid 
connection"() {
@@ -81,9 +80,6 @@ class HibernateDatastoreMultiTenancySpec extends 
HibernateGormDatastoreSpec {
 
         expect:
         datastore.resolveTenantIdentifier() == "tenant1"
-
-        cleanup:
-        System.clearProperty(SystemPropertyTenantResolver.PROPERTY_NAME)
     }
 }
 

Reply via email to