From 1ad913387156112305b3ab6292b890fbf021323d Mon Sep 17 00:00:00 2001 From: Steve Ebersole Date: Tue, 18 Jan 2022 14:10:15 -0600 Subject: [PATCH] clean up remaining test suite failures --- .../internal/UserTypeJavaTypeWrapper.java | 6 ++-- .../type/internal/UserTypeSqlTypeAdapter.java | 6 ++-- .../test/type/BasicTypeRegistryTest.java | 34 ++++++++++++------- 3 files changed, 30 insertions(+), 16 deletions(-) rename hibernate-core/src/test/java/org/hibernate/{ => orm}/test/type/BasicTypeRegistryTest.java (77%) diff --git a/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeJavaTypeWrapper.java b/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeJavaTypeWrapper.java index dec2cf1de4..ca4d2bfadb 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeJavaTypeWrapper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeJavaTypeWrapper.java @@ -46,8 +46,10 @@ public UserTypeJavaTypeWrapper(UserType userType) { if ( resolvedMutabilityPlan == null ) { final Class jClass = userType.returnedClass(); - if ( jClass.getAnnotation( Immutable.class ) != null ) { - resolvedMutabilityPlan = ImmutableMutabilityPlan.instance(); + if ( jClass != null ) { + if ( jClass.getAnnotation( Immutable.class ) != null ) { + resolvedMutabilityPlan = ImmutableMutabilityPlan.instance(); + } } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeSqlTypeAdapter.java b/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeSqlTypeAdapter.java index 6c1c272e45..cfb921c3bf 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeSqlTypeAdapter.java +++ b/hibernate-core/src/main/java/org/hibernate/type/internal/UserTypeSqlTypeAdapter.java @@ -59,14 +59,16 @@ public int getJdbcTypeCode() { @Override @SuppressWarnings({ "unchecked" }) public ValueBinder getBinder(JavaType javaTypeDescriptor) { - assert jtd.getJavaTypeClass().isAssignableFrom( javaTypeDescriptor.getJavaTypeClass() ); + assert javaTypeDescriptor.getJavaTypeClass() == null + || jtd.getJavaTypeClass().isAssignableFrom( javaTypeDescriptor.getJavaTypeClass() ); return (ValueBinder) valueBinder; } @Override @SuppressWarnings({ "unchecked" }) public ValueExtractor getExtractor(JavaType javaTypeDescriptor) { - assert javaTypeDescriptor.getJavaTypeClass().isAssignableFrom( jtd.getJavaTypeClass() ); + assert javaTypeDescriptor.getJavaTypeClass() == null + || javaTypeDescriptor.getJavaTypeClass().isAssignableFrom( jtd.getJavaTypeClass() ); return (ValueExtractor) valueExtractor; } diff --git a/hibernate-core/src/test/java/org/hibernate/test/type/BasicTypeRegistryTest.java b/hibernate-core/src/test/java/org/hibernate/orm/test/type/BasicTypeRegistryTest.java similarity index 77% rename from hibernate-core/src/test/java/org/hibernate/test/type/BasicTypeRegistryTest.java rename to hibernate-core/src/test/java/org/hibernate/orm/test/type/BasicTypeRegistryTest.java index 069e00e52a..be03d590ba 100644 --- a/hibernate-core/src/test/java/org/hibernate/test/type/BasicTypeRegistryTest.java +++ b/hibernate-core/src/test/java/org/hibernate/orm/test/type/BasicTypeRegistryTest.java @@ -1,10 +1,10 @@ /* * Hibernate, Relational Persistence for Idiomatic Java * - * License: GNU Lesser General Public License (LGPL), version 2.1 or later. - * See the lgpl.txt file in the root directory or . + * License: GNU Lesser General Public License (LGPL), version 2.1 or later + * See the lgpl.txt file in the root directory or http://www.gnu.org/licenses/lgpl-2.1.html */ -package org.hibernate.test.type; +package org.hibernate.orm.test.type; import java.io.Serializable; import java.sql.PreparedStatement; @@ -22,6 +22,7 @@ import org.hibernate.type.descriptor.java.UUIDJavaTypeDescriptor; import org.hibernate.type.descriptor.jdbc.BinaryJdbcType; import org.hibernate.type.descriptor.jdbc.CharJdbcType; +import org.hibernate.type.descriptor.jdbc.ObjectJdbcType; import org.hibernate.type.descriptor.jdbc.VarcharJdbcType; import org.hibernate.type.internal.BasicTypeImpl; import org.hibernate.type.spi.TypeConfiguration; @@ -30,6 +31,7 @@ import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.Test; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNotSame; @@ -46,15 +48,22 @@ public void testOverriding() { TypeConfiguration typeConfiguration = new TypeConfiguration(); BasicTypeRegistry registry = typeConfiguration.getBasicTypeRegistry(); - BasicType type = registry.getRegisteredType( "uuid-binary" ); - assertTrue( type.getJavaTypeDescriptor() instanceof UUIDJavaTypeDescriptor ); - assertTrue( type.getJdbcTypeDescriptor() instanceof BinaryJdbcType ); - assertSame( type, registry.getRegisteredType( UUID.class.getName() ) ); + BasicType uuidBinaryRegistration = registry.getRegisteredType( "uuid-binary" ); + assertTrue( uuidBinaryRegistration.getJavaTypeDescriptor() instanceof UUIDJavaTypeDescriptor ); + assertTrue( uuidBinaryRegistration.getJdbcTypeDescriptor() instanceof BinaryJdbcType ); - BasicType override = new BasicTypeImpl<>( UUIDJavaTypeDescriptor.INSTANCE, CharJdbcType.INSTANCE ); + final BasicType uuidRegistration = registry.getRegisteredType( UUID.class.getName() ); + assertTrue( uuidRegistration.getJavaTypeDescriptor() instanceof UUIDJavaTypeDescriptor ); + assertTrue( uuidRegistration.getJdbcTypeDescriptor() instanceof ObjectJdbcType ); + + final BasicType override = new BasicTypeImpl<>( UUIDJavaTypeDescriptor.INSTANCE, CharJdbcType.INSTANCE ); registry.register( override, UUID.class.getName() ); - assertNotSame( type, registry.getRegisteredType( UUID.class.getName() ) ); - assertSame( override, registry.getRegisteredType( UUID.class.getName() ) ); + + final BasicType overrideRegistration = registry.getRegisteredType( UUID.class.getName() ); + + assertSame( override, overrideRegistration ); + assertNotSame( uuidBinaryRegistration, overrideRegistration ); + assertNotSame( uuidRegistration, overrideRegistration ); } @Test @@ -83,8 +92,9 @@ public void testRegisteringUserTypes() { assertEquals( TotallyIrrelevantUserType.class, ( (CustomType) customType ).getUserType().getClass() ); BasicType type = registry.getRegisteredType( UUID.class.getName() ); - assertTrue( type.getJavaTypeDescriptor() instanceof UUIDJavaTypeDescriptor ); - assertTrue( type.getJdbcTypeDescriptor() instanceof BinaryJdbcType ); + assertThat( type.getJavaTypeDescriptor() ).isInstanceOf( UUIDJavaTypeDescriptor.class ); + assertThat( type.getJdbcTypeDescriptor() ).isInstanceOf( ObjectJdbcType.class ); + registry.register( new TotallyIrrelevantUserType(), UUID.class.getName() ); assertNotSame( type, registry.getRegisteredType( UUID.class.getName() ) ); assertEquals( CustomType.class, registry.getRegisteredType( UUID.class.getName() ).getClass() );