diff --git a/hibernate-core/src/main/java/org/hibernate/type/AbstractType.java b/hibernate-core/src/main/java/org/hibernate/type/AbstractType.java index d845eba343f8..19cd05eab40b 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/AbstractType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/AbstractType.java @@ -119,7 +119,7 @@ public Object replace( private boolean needsReplacement(ForeignKeyDirection foreignKeyDirection) { // Collection and OneToOne are the only associations that could be TO_PARENT if ( this instanceof CollectionType || this instanceof OneToOneType ) { - final AssociationType associationType = (AssociationType) this; + final var associationType = (AssociationType) this; return associationType.getForeignKeyDirection() == foreignKeyDirection; } else { diff --git a/hibernate-core/src/main/java/org/hibernate/type/AnyType.java b/hibernate-core/src/main/java/org/hibernate/type/AnyType.java index aadea86f0b5c..714e511b8670 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/AnyType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/AnyType.java @@ -4,7 +4,6 @@ */ package org.hibernate.type; -import org.hibernate.EntityNameResolver; import org.hibernate.FetchMode; import org.hibernate.Hibernate; import org.hibernate.HibernateException; @@ -17,10 +16,8 @@ import org.hibernate.engine.spi.CascadeStyles; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.metamodel.spi.MappingMetamodelImplementor; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.persister.entity.Joinable; -import org.hibernate.proxy.LazyInitializer; import org.hibernate.type.spi.TypeConfiguration; import java.io.Serializable; @@ -166,7 +163,7 @@ else if ( y == null ) { } private Object extractIdentifier(Object entity, SessionFactoryImplementor factory) { - final EntityPersister concretePersister = guessEntityPersister( entity, factory ); + final var concretePersister = guessEntityPersister( entity, factory ); return concretePersister == null ? null : concretePersister.getIdentifier( entity ); @@ -181,7 +178,7 @@ private EntityPersister guessEntityPersister(Object object, SessionFactoryImplem // this code is largely copied from Session's bestGuessEntityName Object entity = object; - final LazyInitializer lazyInitializer = extractLazyInitializer( entity ); + final var lazyInitializer = extractLazyInitializer( entity ); if ( lazyInitializer != null ) { if ( lazyInitializer.isUninitialized() ) { entityName = lazyInitializer.getEntityName(); @@ -190,13 +187,7 @@ private EntityPersister guessEntityPersister(Object object, SessionFactoryImplem } if ( entityName == null ) { - final MappingMetamodelImplementor mappingMetamodel = factory.getMappingMetamodel(); - for ( EntityNameResolver resolver : mappingMetamodel.getEntityNameResolvers() ) { - entityName = resolver.resolveEntityName( entity ); - if ( entityName != null ) { - break; - } - } + entityName = entityNameFromResolvers( factory, entity ); } if ( entityName == null ) { @@ -207,6 +198,16 @@ private EntityPersister guessEntityPersister(Object object, SessionFactoryImplem return factory.getMappingMetamodel().getEntityDescriptor( entityName ); } + private static String entityNameFromResolvers(SessionFactoryImplementor factory, Object entity) { + for ( var resolver : factory.getMappingMetamodel().getEntityNameResolvers() ) { + final String entityName = resolver.resolveEntityName( entity ); + if ( entityName != null ) { + return entityName; + } + } + return null; + } + @Override public boolean isSame(Object x, Object y) throws HibernateException { return x == y; @@ -221,12 +222,13 @@ public boolean isModified(Object old, Object current, boolean[] checkable, Share else if ( old == null ) { return true; } - - final ObjectTypeCacheEntry holder = (ObjectTypeCacheEntry) old; - final boolean[] idCheckable = new boolean[checkable.length-1]; - System.arraycopy( checkable, 1, idCheckable, 0, idCheckable.length ); - return checkable[0] && !holder.entityName.equals( session.bestGuessEntityName( current ) ) + else { + final var holder = (ObjectTypeCacheEntry) old; + final boolean[] idCheckable = new boolean[checkable.length - 1]; + System.arraycopy( checkable, 1, idCheckable, 0, idCheckable.length ); + return checkable[0] && !holder.entityName.equals( session.bestGuessEntityName( current ) ) || identifierType.isModified( holder.id, getIdentifier( current, session ), idCheckable, session ); + } } @Override @@ -295,9 +297,10 @@ public String toLoggableString(Object value, SessionFactoryImplementor factory) } final String entityName = factory.bestGuessEntityName(value); - final EntityPersister descriptor = entityName == null - ? null - : factory.getMappingMetamodel().getEntityDescriptor( entityName ); + final var descriptor = + entityName == null + ? null + : factory.getMappingMetamodel().getEntityDescriptor( entityName ); return infoString( descriptor, value, factory ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java index 33cd993cd4cd..963bb7b436c2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicArrayType.java @@ -66,9 +66,9 @@ public BasicType resolveIndicatedType(JdbcTypeIndicators indicators, Java } @Override - public boolean equals(Object o) { - return o == this || o.getClass() == BasicArrayType.class - && Objects.equals( baseDescriptor, ( (BasicArrayType) o ).baseDescriptor ); + public boolean equals(Object object) { + return object == this || object.getClass() == BasicArrayType.class + && Objects.equals( baseDescriptor, ( (BasicArrayType) object ).baseDescriptor ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java b/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java index ad34e08ec35c..9e8c65b85fd6 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/BasicCollectionType.java @@ -47,20 +47,14 @@ public BasicCollectionType( private static String determineName(BasicCollectionJavaType collectionTypeDescriptor, BasicType baseDescriptor) { final String elementTypeName = determineElementTypeName( baseDescriptor ); - switch ( collectionTypeDescriptor.getSemantics().getCollectionClassification() ) { - case BAG: - case ID_BAG: - return "Collection<" + elementTypeName + ">"; - case LIST: - return "List<" + elementTypeName + ">"; - case SET: - return "Set<" + elementTypeName + ">"; - case SORTED_SET: - return "SortedSet<" + elementTypeName + ">"; - case ORDERED_SET: - return "OrderedSet<" + elementTypeName + ">"; - } - return null; + return switch ( collectionTypeDescriptor.getSemantics().getCollectionClassification() ) { + case BAG, ID_BAG -> "Collection<" + elementTypeName + ">"; + case LIST -> "List<" + elementTypeName + ">"; + case SET -> "Set<" + elementTypeName + ">"; + case SORTED_SET -> "SortedSet<" + elementTypeName + ">"; + case ORDERED_SET -> "OrderedSet<" + elementTypeName + ">"; + default -> null; + }; } @Override @@ -87,9 +81,9 @@ public BasicType resolveIndicatedType(JdbcTypeIndicators indicators, Java } @Override - public boolean equals(Object o) { - return o == this || o.getClass() == BasicCollectionType.class - && Objects.equals( baseDescriptor, ( (BasicCollectionType) o ).baseDescriptor ); + public boolean equals(Object object) { + return object == this || object.getClass() == BasicCollectionType.class + && Objects.equals( baseDescriptor, ( (BasicCollectionType) object ).baseDescriptor ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/CollectionType.java b/hibernate-core/src/main/java/org/hibernate/type/CollectionType.java index ff4f43d9b630..f57050038843 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/CollectionType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/CollectionType.java @@ -24,22 +24,15 @@ import org.hibernate.collection.spi.AbstractPersistentCollection; import org.hibernate.collection.spi.PersistentArrayHolder; import org.hibernate.collection.spi.PersistentCollection; -import org.hibernate.engine.spi.CollectionEntry; import org.hibernate.engine.spi.CollectionKey; -import org.hibernate.engine.spi.EntityEntry; -import org.hibernate.engine.spi.PersistenceContext; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.internal.CoreLogging; import org.hibernate.internal.CoreMessageLogger; import org.hibernate.internal.util.MarkerObject; import org.hibernate.metamodel.CollectionClassification; -import org.hibernate.metamodel.mapping.PluralAttributeMapping; import org.hibernate.persister.collection.CollectionPersister; -import org.hibernate.persister.entity.EntityPersister; import org.hibernate.persister.entity.Joinable; -import org.hibernate.proxy.LazyInitializer; -import org.hibernate.sql.results.graph.collection.LoadingCollectionEntry; import org.checkerframework.checker.nullness.qual.Nullable; @@ -88,11 +81,11 @@ public Object indexOf(Object collection, Object element) { public boolean contains(Object collection, Object childObject, SharedSessionContractImplementor session) { // we do not have to worry about queued additions to uninitialized // collections, since they can only occur for inverse collections! - final Iterator elems = getElementsIterator( collection ); + final var elems = getElementsIterator( collection ); while ( elems.hasNext() ) { final Object maybeProxy = elems.next(); // worrying about proxies is perhaps a little bit of overkill here... - final LazyInitializer initializer = extractLazyInitializer( maybeProxy ); + final var initializer = extractLazyInitializer( maybeProxy ); final Object element = initializer != null && !initializer.isUninitialized() ? initializer.getImplementation() @@ -176,7 +169,7 @@ public String toLoggableString(Object value, SessionFactoryImplementor factory) else { if ( !getReturnedClass().isInstance( value ) && !(value instanceof PersistentCollection) ) { - final CollectionPersister persister = getPersister( factory ); + final var persister = getPersister( factory ); final Type keyType = persister.getKeyType(); final Type identifierType = persister.getIdentifierType(); // its most likely the collection-key @@ -375,7 +368,7 @@ public ForeignKeyDirection getForeignKeyDirection() { * @return The collection owner's key */ public @Nullable Object getKeyOfOwner(Object owner, SharedSessionContractImplementor session) { - final EntityEntry entityEntry = session.getPersistenceContextInternal().getEntry( owner ); + final var entityEntry = session.getPersistenceContextInternal().getEntry( owner ); if ( entityEntry == null ) { // This just handles a particular case of component // projection, perhaps get rid of it and throw an exception @@ -406,9 +399,9 @@ public Object getIdOfOwnerOrNull(Object key, SharedSessionContractImplementor se return key; } else { - final EntityPersister ownerPersister = getPersister( session ).getOwnerEntityPersister(); + final var ownerPersister = getPersister( session ).getOwnerEntityPersister(); // TODO: Fix this so it will work for non-POJO entity mode - final Class keyClass = keyClass( session ); + final var keyClass = keyClass( session ); if ( ownerPersister.getMappedClass().isAssignableFrom( keyClass ) && keyClass.isInstance( key ) ) { // the key is the owning entity itself, so get the ID from the key @@ -460,7 +453,7 @@ public boolean isModified(Object old, Object current, boolean[] checkable, Share @Override public String getAssociatedEntityName(SessionFactoryImplementor factory) throws MappingException { - final CollectionPersister persister = factory.getMappingMetamodel().getCollectionDescriptor( role ); + final var persister = factory.getMappingMetamodel().getCollectionDescriptor( role ); if ( persister.getElementType().isEntityType() ) { return persister.getElementPersister().getEntityName(); } @@ -486,12 +479,12 @@ public Object replaceElements( Object owner, Map copyCache, SharedSessionContractImplementor session) { - final Collection result = (Collection) target; + final var result = (Collection) target; result.clear(); // copy elements into newly empty target collection final Type elemType = getElementType( session.getFactory() ); - for ( Object element : (Collection) original ) { + for ( Object element : (Collection) original ) { result.add( elemType.replace( element, null, session, owner, copyCache ) ); } @@ -521,9 +514,9 @@ private void preserveSnapshot( Object owner, Map copyCache, SharedSessionContractImplementor session) { - final CollectionEntry ce = session.getPersistenceContextInternal().getCollectionEntry( result ); - if ( ce != null ) { - ce.resetStoredSnapshot( result, + final var collectionEntry = session.getPersistenceContextInternal().getCollectionEntry( result ); + if ( collectionEntry != null ) { + collectionEntry.resetStoredSnapshot( result, createSnapshot( original, result, elemType, owner, copyCache, session ) ); } } @@ -582,8 +575,8 @@ private static Serializable createMapSnapshot( targetMap = hashMap; snapshot = hashMap; } - final Map resultSnapshot = (Map) result.getStoredSnapshot(); - for ( Map.Entry entry : map.entrySet() ) { + final var resultSnapshot = (Map) result.getStoredSnapshot(); + for ( var entry : map.entrySet() ) { final K key = entry.getKey(); final V value = entry.getValue(); final Object resultSnapshotValue = resultSnapshot == null ? null : resultSnapshot.get( key ); @@ -667,13 +660,13 @@ private Object replaceOriginal( target instanceof PersistentCollection collection && !collection.isDirty(); if ( target instanceof PersistentCollection oldCollection - && oldCollection.isDirectlyAccessible() ) { + && oldCollection.isDirectlyAccessible() ) { // When a replacement or merge is requested and the underlying collection is directly accessible, // use a new persistent collection, to avoid potential issues like the underlying collection being // unmodifiable and hence failing the element replacement - final CollectionPersister collectionPersister = getPersister( session ); + final var collectionPersister = getPersister( session ); final Object key = oldCollection.getKey(); - final PersistentCollection newCollection = instantiate( session, collectionPersister, key ); + final var newCollection = instantiate( session, collectionPersister, key ); newCollection.initializeEmptyCollection( collectionPersister ); newCollection.setSnapshot( key, oldCollection.getRole(), oldCollection.getStoredSnapshot() ); session.getPersistenceContextInternal() @@ -709,14 +702,14 @@ private Object replaceUninitializedOriginal( Object target, SharedSessionContractImplementor session, Map copyCache) { - final PersistentCollection collection = (PersistentCollection) original; + final var collection = (PersistentCollection) original; if ( collection.hasQueuedOperations() ) { if ( original == target ) { // A managed entity with an uninitialized collection is being merged, // We need to replace any detached entities in the queued operations // with managed copies. - final AbstractPersistentCollection pc = (AbstractPersistentCollection) original; - pc.replaceQueuedOperationValues( getPersister( session ), copyCache ); + final var apc = (AbstractPersistentCollection) original; + apc.replaceQueuedOperationValues( getPersister( session ), copyCache ); } else { // original is a detached copy of the collection; @@ -740,13 +733,13 @@ else if ( target instanceof Map map ) { return map; } else { - final PersistenceContext persistenceContext = session.getPersistenceContext(); - final PersistentCollection collectionHolder = persistenceContext.getCollectionHolder( target ); + final var persistenceContext = session.getPersistenceContext(); + final var collectionHolder = persistenceContext.getCollectionHolder( target ); if ( collectionHolder != null ) { if ( collectionHolder instanceof PersistentArrayHolder arrayHolder ) { persistenceContext.removeCollectionHolder( target ); arrayHolder.beginRead(); - final PluralAttributeMapping attributeMapping = + final var attributeMapping = persistenceContext.getCollectionEntry( collectionHolder ) .getLoadedPersister().getAttributeMapping(); arrayHolder.injectLoadedState( attributeMapping, null ); @@ -785,11 +778,11 @@ public String toString() { * @return The collection */ public Object getCollection(Object key, SharedSessionContractImplementor session, Object owner, Boolean overridingEager) { - final CollectionPersister persister = getPersister( session ); - final PersistenceContext persistenceContext = session.getPersistenceContextInternal(); - final CollectionKey collectionKey = new CollectionKey( persister, key ); + final var persister = getPersister( session ); + final var persistenceContext = session.getPersistenceContextInternal(); + final var collectionKey = new CollectionKey( persister, key ); // check if collection is currently being loaded - final LoadingCollectionEntry loadingCollectionEntry = + final var loadingCollectionEntry = persistenceContext.getLoadContexts().findLoadingCollectionEntry( collectionKey ); PersistentCollection collection = loadingCollectionEntry == null ? null @@ -816,8 +809,8 @@ private PersistentCollection createNewWrapper( Boolean overridingEager, CollectionPersister persister, SharedSessionContractImplementor session) { - final PersistenceContext persistenceContext = session.getPersistenceContextInternal(); - final PersistentCollection collection = instantiate( session, persister, key ); + final var persistenceContext = session.getPersistenceContextInternal(); + final var collection = instantiate( session, persister, key ); collection.setOwner( owner ); persistenceContext.addUninitializedCollection( persister, collection, key ); // some collections are not lazy: diff --git a/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicCollectionType.java b/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicCollectionType.java index 48417e4dcde1..3dcd846e35f5 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicCollectionType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ConvertedBasicCollectionType.java @@ -66,10 +66,10 @@ public JdbcLiteralFormatter getJdbcLiteralFormatter() { } @Override - public boolean equals(Object o) { - return o == this || super.equals( o ) - && o instanceof ConvertedBasicCollectionType that - && Objects.equals( converter, that.converter ); + public boolean equals(Object object) { + return object == this || super.equals( object ) + && object instanceof ConvertedBasicCollectionType that + && Objects.equals( converter, that.converter ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/CustomCollectionType.java b/hibernate-core/src/main/java/org/hibernate/type/CustomCollectionType.java index 5d993344ab10..82a3eb2e7e0a 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/CustomCollectionType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/CustomCollectionType.java @@ -84,8 +84,9 @@ public Object replaceElements( Object owner, Map copyCache, SharedSessionContractImplementor session) { - final CollectionPersister collectionDescriptor = - session.getFactory().getMappingMetamodel().getCollectionDescriptor( getRole() ); + final var collectionDescriptor = + session.getFactory().getMappingMetamodel() + .getCollectionDescriptor( getRole() ); return userType.replaceElements( original, target, collectionDescriptor, owner, copyCache, session ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/CustomType.java b/hibernate-core/src/main/java/org/hibernate/type/CustomType.java index 983e369e4c17..446157f45f9a 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/CustomType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/CustomType.java @@ -11,7 +11,6 @@ import java.util.Arrays; import java.util.Map; -import jakarta.persistence.AttributeConverter; import org.hibernate.HibernateException; import org.hibernate.MappingException; import org.hibernate.cache.MutableCacheKeyBuilder; @@ -76,7 +75,7 @@ public CustomType(UserType userType, String[] registrationKeys, TypeConfigura name = userType.getClass().getName(); mappedJavaType = getMappedJavaType( userType ); - final AttributeConverter valueConverter = userType.getValueConverter(); + final var valueConverter = userType.getValueConverter(); if ( valueConverter != null ) { converter = createValueConverter( valueConverter, typeConfiguration.getJavaTypeRegistry() ); // When an explicit value converter is given, diff --git a/hibernate-core/src/main/java/org/hibernate/type/EmbeddedComponentType.java b/hibernate-core/src/main/java/org/hibernate/type/EmbeddedComponentType.java index 2a6a2b7ba409..3525c22efa4a 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/EmbeddedComponentType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/EmbeddedComponentType.java @@ -7,9 +7,6 @@ import java.lang.reflect.Method; import org.hibernate.mapping.Component; -import org.hibernate.metamodel.mapping.AttributeMapping; -import org.hibernate.metamodel.mapping.EmbeddableMappingType; -import org.hibernate.property.access.spi.Getter; /** * @author Gavin King @@ -31,11 +28,12 @@ public boolean isMethodOf(Method method) { throw new IllegalStateException( "EmbeddableValuedModelPart not known yet" ); } - final EmbeddableMappingType embeddable = mappingModelPart().getEmbeddableTypeDescriptor(); + final var embeddable = mappingModelPart().getEmbeddableTypeDescriptor(); for ( int i = 0; i < embeddable.getNumberOfAttributeMappings(); i++ ) { - final AttributeMapping attributeMapping = embeddable.getAttributeMapping( i ); - final Getter getter = attributeMapping.getPropertyAccess().getGetter(); - final Method getterMethod = getter.getMethod(); + final var attributeMapping = embeddable.getAttributeMapping( i ); + final var getterMethod = + attributeMapping.getPropertyAccess() + .getGetter().getMethod(); if ( getterMethod != null && getterMethod.equals( method ) ) { return true; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/EntityType.java b/hibernate-core/src/main/java/org/hibernate/type/EntityType.java index 77e4fe8d7f65..f0dcaff0c920 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/EntityType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/EntityType.java @@ -13,14 +13,11 @@ import org.hibernate.MappingException; import org.hibernate.bytecode.enhance.spi.interceptor.EnhancementAsProxyLazinessInterceptor; import org.hibernate.engine.spi.EntityUniqueKey; -import org.hibernate.engine.spi.PersistenceContext; -import org.hibernate.engine.spi.PersistentAttributeInterceptor; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.internal.util.ReflectHelper; import org.hibernate.persister.entity.EntityPersister; import org.hibernate.persister.entity.Joinable; -import org.hibernate.proxy.LazyInitializer; import org.hibernate.type.spi.TypeConfiguration; import static org.hibernate.engine.internal.ForeignKeys.getEntityIdentifier; @@ -280,7 +277,7 @@ else if ( y == null ) { } private Object extractIdentifier(Object entity, SessionFactoryImplementor factory) { - final EntityPersister concretePersister = getAssociatedEntityPersister( factory ); + final var concretePersister = getAssociatedEntityPersister( factory ); return concretePersister == null ? null : concretePersister.getIdentifier( entity ); @@ -341,7 +338,7 @@ && isTransient( associatedEntityName, original, Boolean.FALSE, session ) ) { @Override public int getHashCode(Object x, SessionFactoryImplementor factory) { - final EntityPersister persister = getAssociatedEntityPersister( factory ); + final var persister = getAssociatedEntityPersister( factory ); if ( isReferenceToPrimaryKey() ) { return persister.getIdentifierType().getHashCode( getId( x, persister ), factory ); } @@ -362,7 +359,7 @@ else if ( x == y ) { return true; } else { - final EntityPersister persister = getAssociatedEntityPersister( factory ); + final var persister = getAssociatedEntityPersister( factory ); if ( isReferenceToPrimaryKey() ) { final Object xid = getId( x, persister ); final Object yid = getId( y, persister ); @@ -388,7 +385,7 @@ private Object getUniqueKey(Object entity, Type keyType, EntityPersister persist } private static Object getId(Object entity, EntityPersister persister) { - final LazyInitializer lazyInitializer = extractLazyInitializer( entity ); + final var lazyInitializer = extractLazyInitializer( entity ); if ( lazyInitializer != null ) { return lazyInitializer.getInternalIdentifier(); } @@ -418,7 +415,7 @@ else if ( uniqueKeyPropertyName != null ) { } public EntityPersister getAssociatedEntityPersister(final SessionFactoryImplementor factory) { - final EntityPersister persister = associatedEntityPersister; + final var persister = associatedEntityPersister; //The following branch implements a simple lazy-initialization, but rather than the canonical //form it returns the local variable to avoid a second volatile read: associatedEntityPersister //needs to be volatile as the initialization might happen by a different thread than the readers. @@ -460,7 +457,7 @@ else if ( value == null ) { } private Object getUniqueKey(Object value, SharedSessionContractImplementor session) { - final LazyInitializer lazyInitializer = extractLazyInitializer( value ); + final var lazyInitializer = extractLazyInitializer( value ); if ( lazyInitializer != null ) { // If the value is a Proxy and the property access is field, the value returned by // attributeMapping.getAttributeMetadata().getPropertyAccess().getGetter().get( object ) @@ -471,13 +468,12 @@ private Object getUniqueKey(Object value, SharedSessionContractImplementor sessi else if ( isPersistentAttributeInterceptable( value ) ) { // If the value is an instance of PersistentAttributeInterceptable, and it is // not initialized, we need to force initialization the get the property value - final PersistentAttributeInterceptor interceptor = - asPersistentAttributeInterceptable( value ).$$_hibernate_getInterceptor(); - if ( interceptor instanceof EnhancementAsProxyLazinessInterceptor lazinessInterceptor ) { + if ( asPersistentAttributeInterceptable( value ).$$_hibernate_getInterceptor() + instanceof EnhancementAsProxyLazinessInterceptor lazinessInterceptor ) { lazinessInterceptor.forceInitialize( value, null ); } } - final EntityPersister entityPersister = getAssociatedEntityPersister( session.getFactory() ); + final var entityPersister = getAssociatedEntityPersister( session.getFactory() ); final Object propertyValue = entityPersister.getPropertyValue( value, uniqueKeyPropertyName ); // We now have the value of the property-ref we reference. However, // we need to dig a little deeper, as that property might also be @@ -498,7 +494,7 @@ else if ( value == null ) { return null; } else { - final EntityPersister entityPersister = getAssociatedEntityPersister( sessionFactory ); + final var entityPersister = getAssociatedEntityPersister( sessionFactory ); final Object propertyValue = entityPersister.getPropertyValue( value, uniqueKeyPropertyName ); // We now have the value of the property-ref we reference. However, // we need to dig a little deeper, as that property might also be @@ -543,10 +539,11 @@ private String loggableString(Object entity, EntityPersister persister) { } private static String identifierString(Object entity, EntityPersister persister) { - final LazyInitializer lazyInitializer = extractLazyInitializer( entity ); - final Object id = lazyInitializer != null - ? lazyInitializer.getInternalIdentifier() - : persister.getIdentifier( entity ); + final var lazyInitializer = extractLazyInitializer( entity ); + final Object id = + lazyInitializer != null + ? lazyInitializer.getInternalIdentifier() + : persister.getIdentifier( entity ); return persister.getIdentifierType().toLoggableString( id, persister.getFactory() ); } @@ -666,26 +663,27 @@ public boolean isReferenceToIdentifierProperty() { */ protected final Object resolveIdentifier(Object id, SharedSessionContractImplementor session) throws HibernateException { - // If the association is lazy, retrieve the concrete type if required - final String entityName = eager - ? getAssociatedEntityName() - : getAssociatedEntityPersister( session.getFactory() ) - .resolveConcreteProxyTypeForId( id, session ) - .getEntityName(); - + final String entityName = associatedEntityName( id, session ); final Object proxyOrEntity = session.internalLoad( entityName, id, eager, isNullable() ); - - final LazyInitializer lazyInitializer = extractLazyInitializer( proxyOrEntity ); + final var lazyInitializer = extractLazyInitializer( proxyOrEntity ); if ( lazyInitializer != null ) { final boolean isProxyUnwrapEnabled = - unwrapProxy && getAssociatedEntityPersister( session.getFactory() ).isInstrumented(); + unwrapProxy + && getAssociatedEntityPersister( session.getFactory() ).isInstrumented(); lazyInitializer.setUnwrap( isProxyUnwrapEnabled ); } - return proxyOrEntity; } + private String associatedEntityName(Object id, SharedSessionContractImplementor session) { + return eager + ? getAssociatedEntityName() + : getAssociatedEntityPersister( session.getFactory() ) + .resolveConcreteProxyTypeForId( id, session ) + .getEntityName(); + } + protected boolean isNull(Object owner, SharedSessionContractImplementor session) { return false; } @@ -707,11 +705,11 @@ public Object loadByUniqueKey( String uniqueKeyPropertyName, Object key, SharedSessionContractImplementor session) throws HibernateException { - final SessionFactoryImplementor factory = session.getFactory(); + final var factory = session.getFactory(); //TODO: implement 2nd level caching?! natural id caching ?! proxies?! - final EntityUniqueKey entityUniqueKey = new EntityUniqueKey( + final var entityUniqueKey = new EntityUniqueKey( entityName, uniqueKeyPropertyName, key, @@ -719,7 +717,7 @@ public Object loadByUniqueKey( session.getFactory() ); - final PersistenceContext persistenceContext = session.getPersistenceContextInternal(); + final var persistenceContext = session.getPersistenceContextInternal(); final Object entity = persistenceContext.getEntity( entityUniqueKey ); final Object result; if ( entity == null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/ListType.java b/hibernate-core/src/main/java/org/hibernate/type/ListType.java index d3547355446a..e93f6b0d76e7 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/ListType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/ListType.java @@ -48,10 +48,10 @@ public Object instantiate(int anticipatedSize) { @Override public Object indexOf(Object collection, Object element) { - List list = (List) collection; + final var list = (List) collection; for ( int i=0; i copyCache, final SharedSessionContractImplementor session) throws HibernateException { - final CollectionPersister persister = + final var persister = session.getFactory().getMappingMetamodel() .getCollectionDescriptor( getRole() ); - final Map source = (Map) original; + final var source = (Map) original; final Map result = (Map) target; result.clear(); - for ( Object entry : source.entrySet() ) { - final Map.Entry me = (Map.Entry) entry; - final Object key = persister.getIndexType().replace( me.getKey(), null, session, owner, copyCache ); - final Object value = persister.getElementType().replace( me.getValue(), null, session, owner, copyCache ); + for ( var entry : source.entrySet() ) { + final Object key = persister.getIndexType().replace( entry.getKey(), null, session, owner, copyCache ); + final Object value = persister.getElementType().replace( entry.getValue(), null, session, owner, copyCache ); result.put( key, value ); } @@ -83,14 +82,13 @@ public Object replaceElements( } - @Override @SuppressWarnings("rawtypes") + @Override public Object indexOf(Object collection, Object element) { - final Map map = (Map) collection; - for ( Object entry : map.entrySet() ) { - final Map.Entry me = (Map.Entry) entry; + final var map = (Map) collection; + for ( var entry : map.entrySet() ) { //TODO: proxies! - if ( me.getValue() == element ) { - return me.getKey(); + if ( entry.getValue() == element ) { + return entry.getKey(); } } return null; diff --git a/hibernate-core/src/main/java/org/hibernate/type/MetaType.java b/hibernate-core/src/main/java/org/hibernate/type/MetaType.java index 41182740925f..225f03978915 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/MetaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/MetaType.java @@ -37,13 +37,13 @@ public MetaType( this.implicitValueStrategy = implicitValueStrategy; if ( explicitValueMappings == null || explicitValueMappings.isEmpty() ) { - this.discriminatorValuesToEntityNameMap = new HashMap<>(); - this.entityNameToDiscriminatorValueMap = new HashMap<>(); + discriminatorValuesToEntityNameMap = new HashMap<>(); + entityNameToDiscriminatorValueMap = new HashMap<>(); } else { - this.discriminatorValuesToEntityNameMap = explicitValueMappings; - this.entityNameToDiscriminatorValueMap = new HashMap<>(); - for ( Map.Entry entry : discriminatorValuesToEntityNameMap.entrySet() ) { + discriminatorValuesToEntityNameMap = explicitValueMappings; + entityNameToDiscriminatorValueMap = new HashMap<>(); + for ( var entry : discriminatorValuesToEntityNameMap.entrySet() ) { entityNameToDiscriminatorValueMap.put( entry.getValue(), entry.getKey() ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/NumericBooleanConverter.java b/hibernate-core/src/main/java/org/hibernate/type/NumericBooleanConverter.java index 65bb951d4487..009b80052b20 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/NumericBooleanConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/type/NumericBooleanConverter.java @@ -37,16 +37,13 @@ public Boolean toDomainValue(Integer relationalForm) { if ( relationalForm == null ) { return null; } - - if ( 1 == relationalForm ) { - return true; - } - - if ( 0 == relationalForm ) { - return false; + else { + return switch ( relationalForm ) { + case 0 -> false; + case 1 -> true; + default -> null; + }; } - - return null; } @Override @@ -54,8 +51,9 @@ public Integer toRelationalValue(Boolean domainForm) { if ( domainForm == null ) { return null; } - - return domainForm ? 1 : 0; + else { + return domainForm ? 1 : 0; + } } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/OneToOneType.java b/hibernate-core/src/main/java/org/hibernate/type/OneToOneType.java index 63d48ef1b958..919690ef9af5 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/OneToOneType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/OneToOneType.java @@ -9,10 +9,8 @@ import org.hibernate.HibernateException; import org.hibernate.MappingException; -import org.hibernate.engine.spi.EntityKey; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; -import org.hibernate.persister.entity.EntityPersister; import org.hibernate.type.spi.TypeConfiguration; import static org.hibernate.internal.util.collections.ArrayHelper.EMPTY_BOOLEAN_ARRAY; @@ -64,11 +62,11 @@ public String getPropertyName() { @Override public boolean isNull(Object owner, SharedSessionContractImplementor session) { if ( propertyName != null ) { - final EntityPersister ownerPersister = + final var ownerPersister = session.getFactory().getMappingMetamodel() .getEntityDescriptor( entityName ); final Object id = session.getContextEntityIdentifier( owner ); - final EntityKey entityKey = session.generateEntityKey( id, ownerPersister ); + final var entityKey = session.generateEntityKey( id, ownerPersister ); return session.getPersistenceContextInternal().isPropertyNull( entityKey, getPropertyName() ); } else { diff --git a/hibernate-core/src/main/java/org/hibernate/type/OrderedMapType.java b/hibernate-core/src/main/java/org/hibernate/type/OrderedMapType.java index 7f0955d949fd..28e676bbf459 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/OrderedMapType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/OrderedMapType.java @@ -4,9 +4,11 @@ */ package org.hibernate.type; -import org.hibernate.internal.util.collections.CollectionHelper; import org.hibernate.metamodel.CollectionClassification; +import static org.hibernate.internal.util.collections.CollectionHelper.linkedMap; +import static org.hibernate.internal.util.collections.CollectionHelper.linkedMapOfSize; + /** * A specialization of the map type, with (resultset-based) ordering. */ @@ -23,9 +25,7 @@ public CollectionClassification getCollectionClassification() { @Override public Object instantiate(int anticipatedSize) { - return anticipatedSize > 0 - ? CollectionHelper.linkedMap() - : CollectionHelper.linkedMapOfSize( anticipatedSize ); + return anticipatedSize > 0 ? linkedMap() : linkedMapOfSize( anticipatedSize ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/SpecialOneToOneType.java b/hibernate-core/src/main/java/org/hibernate/type/SpecialOneToOneType.java index bdc928d493f7..9a5f2233b6c8 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/SpecialOneToOneType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/SpecialOneToOneType.java @@ -9,11 +9,12 @@ import org.hibernate.AssertionFailure; import org.hibernate.HibernateException; import org.hibernate.MappingException; -import org.hibernate.engine.internal.ForeignKeys; import org.hibernate.engine.spi.SessionFactoryImplementor; import org.hibernate.engine.spi.SharedSessionContractImplementor; import org.hibernate.type.spi.TypeConfiguration; +import static org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved; + /** * A one-to-one association that maps to specific formula(s) * instead of the primary key column of the owning entity. @@ -74,14 +75,14 @@ public Serializable disassemble(Object value, SharedSessionContractImplementor s else { // cache the actual id of the object, not the value of the // property-ref, which might not be initialized - Object id = ForeignKeys.getEntityIdentifierIfNotUnsaved( getAssociatedEntityName(), value, session ); - if (id==null) { + final Object id = getEntityIdentifierIfNotUnsaved( getAssociatedEntityName(), value, session ); + if ( id==null ) { throw new AssertionFailure( "cannot cache a reference to an object with a null id: " + getAssociatedEntityName() ); } - return getIdentifierType(session).disassemble(id, session, owner); + return getIdentifierType( session ).disassemble( id, session, owner ); } } @@ -93,7 +94,7 @@ public Serializable disassemble(Object value, SessionFactoryImplementor sessionF else { // cache the actual id of the object, not the value of the // property-ref, which might not be initialized - Object id = getIdentifier( value, sessionFactory ); + final Object id = getIdentifier( value, sessionFactory ); if ( id == null ) { throw new AssertionFailure( "cannot cache a reference to an object with a null id: " + @@ -109,14 +110,8 @@ public Object assemble(Serializable oid, SharedSessionContractImplementor sessio throws HibernateException { //TODO: currently broken for unique-key references (does not detect // change to unique key property of the associated object) - Object id = getIdentifierType(session).assemble(oid, session, null); //the owner of the association is not the owner of the id - - if (id==null) { - return null; - } - else { - return resolveIdentifier(id, session); - } + final Object id = getIdentifierType(session).assemble(oid, session, null); //the owner of the association is not the owner of the id + return id == null ? null : resolveIdentifier( id, session ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypeTemplate.java b/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypeTemplate.java index ab036b0e0e4e..5b81f21e6dc9 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypeTemplate.java +++ b/hibernate-core/src/main/java/org/hibernate/type/StandardBasicTypeTemplate.java @@ -26,8 +26,10 @@ public StandardBasicTypeTemplate( super( jdbcType, javaType ); this.registrationKeys = registrationKeys; - this.name = javaType.getJavaType() == null ? "(map-mode)" : javaType.getTypeName() - + " -> " + jdbcType.getDefaultSqlTypeCode(); + this.name = + javaType.getJavaType() == null + ? "(map-mode)" + : javaType.getTypeName() + " -> " + jdbcType.getDefaultSqlTypeCode(); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/TrueFalseConverter.java b/hibernate-core/src/main/java/org/hibernate/type/TrueFalseConverter.java index 7424bac9df23..4a1a666cc539 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/TrueFalseConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/type/TrueFalseConverter.java @@ -30,14 +30,13 @@ public Boolean toDomainValue(Character relationalForm) { if ( relationalForm == null ) { return null; } - - switch ( relationalForm ) { - case 'T': - return true; - case 'F': - return false; + else { + return switch ( relationalForm ) { + case 'T' -> true; + case 'F' -> false; + default -> null; + }; } - return null; } @Override @@ -45,7 +44,8 @@ public Character toRelationalValue(Boolean domainForm) { if ( domainForm == null ) { return null; } - - return domainForm ? 'T' : 'F'; + else { + return domainForm ? 'T' : 'F'; + } } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/YesNoConverter.java b/hibernate-core/src/main/java/org/hibernate/type/YesNoConverter.java index 9ce854f258bc..e0413cd0841d 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/YesNoConverter.java +++ b/hibernate-core/src/main/java/org/hibernate/type/YesNoConverter.java @@ -30,15 +30,13 @@ public Boolean toDomainValue(Character relationalForm) { if ( relationalForm == null ) { return null; } - - switch ( relationalForm ) { - case 'Y': - return true; - case 'N': - return false; + else { + return switch ( relationalForm ) { + case 'Y' -> true; + case 'N' -> false; + default -> null; + }; } - - return null; } @Override @@ -46,7 +44,8 @@ public Character toRelationalValue(Boolean domainForm) { if ( domainForm == null ) { return null; } - - return domainForm ? 'Y' : 'N'; + else { + return domainForm ? 'Y' : 'N'; + } } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractArrayJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractArrayJavaType.java index 7f30d54221fe..e1dc65bddc5d 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractArrayJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractArrayJavaType.java @@ -46,8 +46,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { + " (attribute is not annotated '@ElementCollection', '@OneToMany', or '@ManyToMany')"); } // Always determine the recommended type to make sure this is a valid basic java type - final JdbcType recommendedComponentJdbcType = componentJavaType.getRecommendedJdbcType( indicators ); - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var recommendedComponentJdbcType = componentJavaType.getRecommendedJdbcType( indicators ); + final var typeConfiguration = indicators.getTypeConfiguration(); return typeConfiguration.getJdbcTypeRegistry() .resolveTypeConstructorDescriptor( indicators.getPreferredSqlTypeCodeForArray( recommendedComponentJdbcType.getDefaultSqlTypeCode() ), @@ -69,7 +69,7 @@ public BasicType resolveType( BasicType elementType, ColumnTypeInformation columnTypeInformation, JdbcTypeIndicators stdIndicators) { - final Class elementJavaTypeClass = elementType.getJavaTypeDescriptor().getJavaTypeClass(); + final var elementJavaTypeClass = elementType.getJavaTypeDescriptor().getJavaTypeClass(); if ( elementType instanceof BasicPluralType || elementJavaTypeClass != null && elementJavaTypeClass.isArray() ) { return null; @@ -97,11 +97,11 @@ BasicType createTypeUsingConverter( ColumnTypeInformation columnTypeInformation, JdbcTypeIndicators indicators, BasicValueConverter valueConverter) { - final Class convertedElementClass = valueConverter.getRelationalJavaType().getJavaTypeClass(); - final Class convertedArrayClass = newInstance( convertedElementClass, 0 ).getClass(); - final JavaType relationalJavaType = + final var convertedElementClass = valueConverter.getRelationalJavaType().getJavaTypeClass(); + final var convertedArrayClass = newInstance( convertedElementClass, 0 ).getClass(); + final var relationalJavaType = typeConfiguration.getJavaTypeRegistry() - .getDescriptor( convertedArrayClass ); + .getDescriptor( convertedArrayClass ); return new ConvertedBasicArrayType<>( elementType, arrayJdbcType( typeConfiguration, elementType, columnTypeInformation, indicators ), @@ -116,7 +116,7 @@ BasicType resolveType( BasicType elementType, ColumnTypeInformation columnTypeInformation, JdbcTypeIndicators indicators) { - final JdbcType arrayJdbcType = + final var arrayJdbcType = arrayJdbcType( typeConfiguration, elementType, columnTypeInformation, indicators ); return typeConfiguration.getBasicTypeRegistry() .resolve( arrayJavaType, arrayJdbcType, diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractJavaType.java index 3443fdaed6cf..0ca7e1090cd8 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractJavaType.java @@ -48,9 +48,10 @@ protected AbstractJavaType(Type type) { protected AbstractJavaType(Type type, MutabilityPlan mutabilityPlan) { this.type = type; this.mutabilityPlan = mutabilityPlan; - this.comparator = type != null && Comparable.class.isAssignableFrom( getJavaTypeClass() ) - ? (Comparator) ComparableComparator.INSTANCE - : null; + this.comparator = + type != null && Comparable.class.isAssignableFrom( getJavaTypeClass() ) + ? (Comparator) ComparableComparator.INSTANCE + : null; } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractTemporalJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractTemporalJavaType.java index 1c1a12f79ebf..79c8c24ca7a0 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractTemporalJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/AbstractTemporalJavaType.java @@ -39,20 +39,13 @@ public final TemporalJavaType resolveTypeForPrecision( if ( precision == null ) { return forMissingPrecision( typeConfiguration ); } - - switch ( precision ) { - case DATE: { - return forDatePrecision( typeConfiguration ); - } - case TIME: { - return forTimePrecision( typeConfiguration ); - } - case TIMESTAMP: { - return forTimestampPrecision( typeConfiguration ); - } + else { + return switch ( precision ) { + case DATE -> forDatePrecision( typeConfiguration ); + case TIME -> forTimePrecision( typeConfiguration ); + case TIMESTAMP -> forTimestampPrecision( typeConfiguration ); + }; } - - throw new IllegalArgumentException( "Unrecognized JPA TemporalType precision [" + precision + "]" ); } private TemporalJavaType forMissingPrecision(TypeConfiguration typeConfiguration) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ArrayJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ArrayJavaType.java index ca0a3bcfc59c..15fc1675d5ec 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ArrayJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ArrayJavaType.java @@ -19,7 +19,6 @@ import org.hibernate.type.BasicPluralType; import org.hibernate.type.BasicType; import org.hibernate.type.descriptor.WrapperOptions; -import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators; import org.hibernate.type.spi.TypeConfiguration; @@ -67,8 +66,8 @@ public BasicType resolveType( ); } } - final JavaType elementTypeJavaType = elementType.getJavaTypeDescriptor(); - final Class elementJavaTypeClass = elementTypeJavaType.getJavaTypeClass(); + final var elementTypeJavaType = elementType.getJavaTypeDescriptor(); + final var elementJavaTypeClass = elementTypeJavaType.getJavaTypeClass(); if ( elementType instanceof BasicPluralType || elementJavaTypeClass != null && elementJavaTypeClass.isArray() @@ -85,7 +84,7 @@ public BasicType resolveType( // Register the array type as that will be resolved in the next step typeConfiguration.getJavaTypeRegistry().addDescriptor( arrayJavaType ); } - final BasicValueConverter valueConverter = elementType.getValueConverter(); + final var valueConverter = elementType.getValueConverter(); return valueConverter == null ? resolveType( typeConfiguration, arrayJavaType, elementType, columnTypeInformation, stdIndicators ) : createTypeUsingConverter( typeConfiguration, elementType, columnTypeInformation, stdIndicators, valueConverter ); @@ -100,7 +99,7 @@ public String extractLoggableRepresentation(T[] value) { if ( iMax == -1 ) { return "[]"; } - final StringBuilder sb = new StringBuilder(); + final var sb = new StringBuilder(); sb.append( '[' ); for ( int i = 0; ; i++ ) { sb.append( getElementJavaType().extractLoggableRepresentation( value[i] ) ); @@ -181,7 +180,7 @@ public T[] fromString(CharSequence charSequence) { if ( charSequence == null ) { return null; } - final java.util.ArrayList lst = new java.util.ArrayList<>(); + final var lst = new java.util.ArrayList(); StringBuilder sb = null; char lastChar = charSequence.charAt( charSequence.length() - 1 ); char firstChar = charSequence.charAt( 0 ); @@ -241,7 +240,7 @@ else if ( c == '\\' && i + 2 < len && (charSequence.charAt( i + 1 ) == '\\' || c sb.append( c ); } //noinspection unchecked - final T[] result = (T[]) newInstance( getElementJavaType().getJavaTypeClass(), lst.size() ); + final var result = (T[]) newInstance( getElementJavaType().getJavaTypeClass(), lst.size() ); for ( int i = 0; i < result.length; i ++ ) { if ( lst.get( i ) != null ) { result[i] = getElementJavaType().fromString( lst.get( i ) ); @@ -268,7 +267,7 @@ else if ( type == BinaryStream.class ) { return (X) new ArrayBackedBinaryStream( toBytes( value ) ); } else if ( type.isArray() ) { - final Class preferredJavaTypeClass = type.getComponentType(); + final var preferredJavaTypeClass = type.getComponentType(); final Object[] unwrapped = (Object[]) newInstance( preferredJavaTypeClass, value.length ); for ( int i = 0; i < value.length; i++ ) { unwrapped[i] = getElementJavaType().unwrap( value[i], preferredJavaTypeClass, options ); @@ -297,11 +296,11 @@ public T[] wrap(X value, WrapperOptions options) { } } - final JavaType elementJavaType = getElementJavaType(); + final var elementJavaType = getElementJavaType(); if ( value instanceof Object[] raw ) { - final Class componentClass = elementJavaType.getJavaTypeClass(); + final var componentClass = elementJavaType.getJavaTypeClass(); //noinspection unchecked - final T[] wrapped = (T[]) newInstance( componentClass, raw.length ); + final var wrapped = (T[]) newInstance( componentClass, raw.length ); if ( componentClass.isAssignableFrom( value.getClass().getComponentType() ) ) { for (int i = 0; i < raw.length; i++) { //noinspection unchecked @@ -325,14 +324,14 @@ else if ( value instanceof BinaryStream binaryStream ) { else if ( elementJavaType.isInstance( value ) ) { // Support binding a single element as parameter value //noinspection unchecked - final T[] wrapped = (T[]) newInstance( elementJavaType.getJavaTypeClass(), 1 ); + final var wrapped = (T[]) newInstance( elementJavaType.getJavaTypeClass(), 1 ); //noinspection unchecked wrapped[0] = (T) value; return wrapped; } else if ( value instanceof Collection collection ) { //noinspection unchecked - final T[] wrapped = (T[]) newInstance( elementJavaType.getJavaTypeClass(), collection.size() ); + final var wrapped = (T[]) newInstance( elementJavaType.getJavaTypeClass(), collection.size() ); int i = 0; for ( Object e : collection ) { wrapped[i++] = elementJavaType.wrap( e, options ); @@ -361,10 +360,10 @@ private static byte[] toBytes(T[] array) { } private T[] fromBytes(byte[] bytes) { - final Class elementClass = getElementJavaType().getJavaTypeClass(); + final var elementClass = getElementJavaType().getJavaTypeClass(); if ( elementClass.isEnum() ) { final T[] enumConstants = elementClass.getEnumConstants(); - final Object[] array = (Object[]) newInstance( elementClass, bytes.length ); + final var array = (Object[]) newInstance( elementClass, bytes.length ); for (int i = 0; i < bytes.length; i++ ) { // null enum value was encoded as -1 array[i] = bytes[i] == -1 ? null : enumConstants[bytes[i]]; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BasicJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BasicJavaType.java index acd88110c9b2..4abfd1b28d29 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BasicJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BasicJavaType.java @@ -26,7 +26,7 @@ public interface BasicJavaType extends JavaType { default JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { // match legacy behavior int jdbcTypeCode = JdbcTypeJavaClassMappings.INSTANCE.determineJdbcTypeCodeForJavaClass( getJavaTypeClass() ); - final JdbcType descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( jdbcTypeCode ) ); + final var descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( jdbcTypeCode ) ); return descriptor instanceof AdjustableJdbcType adjustableJdbcType ? adjustableJdbcType.resolveIndicatedType( indicators, this ) : descriptor; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BooleanJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BooleanJavaType.java index aa87d03be33d..49466879b8a3 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BooleanJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/BooleanJavaType.java @@ -5,12 +5,14 @@ package org.hibernate.type.descriptor.java; import org.hibernate.dialect.Dialect; -import org.hibernate.internal.util.CharSequenceHelper; import org.hibernate.type.descriptor.WrapperOptions; import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; import org.hibernate.type.descriptor.java.spi.PrimitiveJavaType; import org.hibernate.type.descriptor.jdbc.JdbcType; +import static java.lang.Character.toUpperCase; +import static org.hibernate.internal.util.CharSequenceHelper.regionMatchesIgnoreCase; + /** * Descriptor for {@link Boolean} handling. * @@ -36,8 +38,8 @@ public BooleanJavaType() { public BooleanJavaType(char characterValueTrue, char characterValueFalse) { super( Boolean.class ); - this.characterValueTrue = Character.toUpperCase( characterValueTrue ); - this.characterValueFalse = Character.toUpperCase( characterValueFalse ); + this.characterValueTrue = toUpperCase( characterValueTrue ); + this.characterValueFalse = toUpperCase( characterValueFalse ); characterValueTrueLC = Character.toLowerCase( characterValueTrue ); @@ -67,15 +69,11 @@ public boolean isInstance(Object value) { @Override public Boolean fromEncodedString(CharSequence charSequence, int start, int end) { - switch ( charSequence.charAt( start ) ) { - case 't': - case 'T': - return CharSequenceHelper.regionMatchesIgnoreCase( charSequence, start + 1, "rue", 0, 3 ); - case 'y': - case 'Y': - return end == start + 1; - } - return false; + return switch ( charSequence.charAt( start ) ) { + case 't', 'T' -> regionMatchesIgnoreCase( charSequence, start + 1, "rue", 0, 3 ); + case 'y', 'Y' -> end == start + 1; + default -> false; + }; } @SuppressWarnings("unchecked") @@ -133,7 +131,8 @@ private boolean isTrue(String strValue) { } private boolean isTrue(char charValue) { - return charValue == characterValueTrue || charValue == characterValueTrueLC; + return charValue == characterValueTrue + || charValue == characterValueTrueLC; } public int toInt(Boolean value) { @@ -202,8 +201,7 @@ public String getCheckCondition(String columnName, JdbcType jdbcType, BasicValue } else if ( jdbcType.isInteger() ) { @SuppressWarnings("unchecked") - final BasicValueConverter numericConverter = - (BasicValueConverter) converter; + final var numericConverter = (BasicValueConverter) converter; final Number falseValue = numericConverter.toRelationalValue( false ); final Number trueValue = numericConverter.toRelationalValue( true ); final Long[] values = getPossibleNumericValues( numericConverter, falseValue, trueValue ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ByteArrayJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ByteArrayJavaType.java index 07dd4e4c7b7c..ed0ca91b2e74 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ByteArrayJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/ByteArrayJavaType.java @@ -56,7 +56,7 @@ public int extractHashCode(Byte[] bytes) { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { // match legacy behavior - final JdbcType descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( SqlTypes.VARBINARY ) ); + final var descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( SqlTypes.VARBINARY ) ); return descriptor instanceof AdjustableJdbcType ? ( (AdjustableJdbcType) descriptor ).resolveIndicatedType( indicators, this ) : descriptor; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CharacterArrayJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CharacterArrayJavaType.java index 61bdf589bb64..1f75125b1db2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CharacterArrayJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/CharacterArrayJavaType.java @@ -65,7 +65,7 @@ public int extractHashCode(Character[] chars) { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { // match legacy behavior - final JdbcType descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( SqlTypes.VARCHAR ) ); + final var descriptor = indicators.getJdbcType( indicators.resolveJdbcTypeCode( SqlTypes.VARCHAR ) ); return descriptor instanceof AdjustableJdbcType ? ( (AdjustableJdbcType) descriptor ).resolveIndicatedType( indicators, this ) : descriptor; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DataHelper.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DataHelper.java index 99e49f4f309d..1efa1654f1a5 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DataHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DataHelper.java @@ -60,7 +60,7 @@ public static String extractString(Reader reader) { public static String extractString(Reader reader, int lengthHint) { // read the Reader contents into a buffer and return the complete string final int bufferSize = getSuggestedBufferSize( lengthHint ); - final StringBuilder stringBuilder = new StringBuilder( bufferSize ); + final var stringBuilder = new StringBuilder( bufferSize ); try { final char[] buffer = new char[bufferSize]; while (true) { @@ -98,7 +98,7 @@ private static String extractString(Reader characterStream, long start, int leng if ( length == 0 ) { return ""; } - final StringBuilder stringBuilder = new StringBuilder( length ); + final var stringBuilder = new StringBuilder( length ); try { final long skipped = characterStream.skip( start ); if ( skipped != start ) { @@ -155,7 +155,7 @@ public static byte[] extractBytes(InputStream inputStream) { } // read the stream contents into a buffer and return the complete byte[] - final ByteArrayOutputStream outputStream = new ByteArrayOutputStream(BUFFER_SIZE); + final var outputStream = new ByteArrayOutputStream(BUFFER_SIZE); try { final byte[] buffer = new byte[BUFFER_SIZE]; while (true) { @@ -205,7 +205,7 @@ public static byte[] extractBytes(InputStream inputStream, long start, int lengt return result; } - final ByteArrayOutputStream outputStream = new ByteArrayOutputStream( length ); + final var outputStream = new ByteArrayOutputStream( length ); try { final long skipped = inputStream.skip( start ); if ( skipped != start ) { @@ -253,7 +253,7 @@ public static InputStream subStream(InputStream inputStream, long start, int len */ public static String extractString(final Clob value) { try { - final Reader characterStream = value.getCharacterStream(); + final var characterStream = value.getCharacterStream(); final long length = determineLengthForBufferSizing( value ); return length > Integer.MAX_VALUE ? extractString( characterStream, Integer.MAX_VALUE ) diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DurationJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DurationJavaType.java index 8d6f8d23f9ca..fa26767f4f6f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DurationJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/DurationJavaType.java @@ -66,10 +66,10 @@ public String toString(Duration value) { return null; } else { - final String seconds = String.valueOf( value.getSeconds() ); - final String nanos = String.valueOf( value.getNano() ); - final String zeros = StringHelper.repeat( '0', 9 - nanos.length() ); - return seconds + zeros + nanos; + final String seconds = String.valueOf( value.getSeconds() ); + final String nanos = String.valueOf( value.getNano() ); + final String zeros = StringHelper.repeat( '0', 9 - nanos.length() ); + return seconds + zeros + nanos; } } @@ -171,12 +171,9 @@ public int getDefaultSqlPrecision(Dialect dialect, JdbcType jdbcType) { @Override public int getDefaultSqlScale(Dialect dialect, JdbcType jdbcType) { - if ( jdbcType.getDdlTypeCode() == SqlTypes.INTERVAL_SECOND ) { - return dialect.getDefaultIntervalSecondScale(); - } - else { - // For non-interval types, we use the type numeric(21) - return 0; - } + return jdbcType.getDdlTypeCode() == SqlTypes.INTERVAL_SECOND + ? dialect.getDefaultIntervalSecondScale() + : 0; // For non-interval types, we use the type numeric(21) + } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/EnumJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/EnumJavaType.java index c50ecdbcd701..6f8edb9dfe94 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/EnumJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/EnumJavaType.java @@ -13,9 +13,7 @@ import org.hibernate.type.descriptor.converter.spi.BasicValueConverter; import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators; -import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; -import jakarta.persistence.EnumType; import static jakarta.persistence.EnumType.ORDINAL; import static org.hibernate.internal.util.collections.CollectionHelper.setOfSize; @@ -47,9 +45,9 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) { } private int sqlType(JdbcTypeIndicators context) { - final EnumType enumType = context.getEnumeratedType(); + final var enumType = context.getEnumeratedType(); final boolean preferNativeEnumTypes = context.isPreferNativeEnumTypesEnabled(); - final JdbcTypeRegistry jdbcTypeRegistry = context.getTypeConfiguration().getJdbcTypeRegistry(); + final var jdbcTypeRegistry = context.getTypeConfiguration().getJdbcTypeRegistry(); return switch ( enumType == null ? ORDINAL : enumType ) { case ORDINAL: if ( preferNativeEnumTypes && jdbcTypeRegistry.hasRegisteredDescriptor( ORDINAL_ENUM ) ) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/InstantJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/InstantJavaType.java index 3d1b49220345..5b78c6fa8e6f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/InstantJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/InstantJavaType.java @@ -117,7 +117,7 @@ public X unwrap(Instant instant, Class type, WrapperOptions options) { * (on DST end), so conversion must be done using the number of milliseconds since the epoch. * - around 1905, both methods are equally valid, so we don't really care which one is used. */ - ZonedDateTime zonedDateTime = instant.atZone( ZoneId.systemDefault() ); + final ZonedDateTime zonedDateTime = instant.atZone( ZoneId.systemDefault() ); if ( zonedDateTime.getYear() < 1905 ) { return (X) Timestamp.valueOf( zonedDateTime.toLocalDateTime() ); } @@ -186,8 +186,8 @@ public Instant wrap(X value, WrapperOptions options) { return ZonedDateTime.ofInstant( calendar.toInstant(), calendar.getTimeZone().toZoneId() ).toInstant(); } - if ( value instanceof Date ) { - return ( (Date) value ).toInstant(); + if ( value instanceof Date date ) { + return date.toInstant(); } throw unknownWrap( value.getClass() ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java index 58a990fec108..c23349d2ce80 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcDateJavaType.java @@ -11,7 +11,6 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeParseException; -import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -82,8 +81,8 @@ public boolean areEqual(Date one, Date another) { return true; } - final Calendar calendar1 = Calendar.getInstance(); - final Calendar calendar2 = Calendar.getInstance(); + final var calendar1 = Calendar.getInstance(); + final var calendar2 = Calendar.getInstance(); calendar1.setTime( one ); calendar2.setTime( another ); @@ -94,7 +93,7 @@ public boolean areEqual(Date one, Date another) { @Override public int extractHashCode(Date value) { - final Calendar calendar = Calendar.getInstance(); + final var calendar = Calendar.getInstance(); calendar.setTime( value ); int hashCode = 1; hashCode = 31 * hashCode + calendar.get( Calendar.MONTH ); @@ -223,8 +222,8 @@ public String toString(Date value) { @Override public Date fromString(CharSequence string) { try { - final TemporalAccessor accessor = LITERAL_FORMATTER.parse( string ); - return java.sql.Date.valueOf( accessor.query( LocalDate::from ) ); + final var temporalAccessor = LITERAL_FORMATTER.parse( string ); + return java.sql.Date.valueOf( temporalAccessor.query( LocalDate::from ) ); } catch ( DateTimeParseException pe) { throw new HibernateException( "could not parse date string " + string, pe ); @@ -234,8 +233,8 @@ public Date fromString(CharSequence string) { @Override public Date fromEncodedString(CharSequence charSequence, int start, int end) { try { - final TemporalAccessor accessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); - return java.sql.Date.valueOf( accessor.query( LocalDate::from ) ); + final var temporalAccessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); + return java.sql.Date.valueOf( temporalAccessor.query( LocalDate::from ) ); } catch ( DateTimeParseException pe) { throw new HibernateException( "could not parse time string " + subSequence( charSequence, start, end ), pe ); @@ -271,8 +270,9 @@ public Date deepCopyNotNull(Date value) { if ( value instanceof java.sql.Date ) { return value; } - - return new java.sql.Date( value.getTime() ); + else { + return new java.sql.Date( value.getTime() ); + } } } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java index 66dd05612700..85154cdbe277 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimeJavaType.java @@ -12,7 +12,6 @@ import java.time.format.DateTimeFormatterBuilder; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoField; -import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -94,8 +93,8 @@ public boolean areEqual(Date one, Date another) { return true; } - final Calendar calendar1 = Calendar.getInstance(); - final Calendar calendar2 = Calendar.getInstance(); + final var calendar1 = Calendar.getInstance(); + final var calendar2 = Calendar.getInstance(); calendar1.setTime( one ); calendar2.setTime( another ); @@ -216,9 +215,9 @@ public String toString(Date value) { @Override public Date fromString(CharSequence string) { try { - final TemporalAccessor accessor = LITERAL_FORMATTER.parse( string ); - final LocalTime localTime = LocalTime.from( accessor ); - final Time time = Time.valueOf( localTime ); + final var temporalAccessor = LITERAL_FORMATTER.parse( string ); + final var localTime = LocalTime.from( temporalAccessor ); + final var time = Time.valueOf( localTime ); time.setTime( time.getTime() + localTime.getNano() / 1_000_000 ); return time; } @@ -230,8 +229,8 @@ public Date fromString(CharSequence string) { @Override public Date fromEncodedString(CharSequence charSequence, int start, int end) { try { - final TemporalAccessor accessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); - return java.sql.Time.valueOf( accessor.query( LocalTime::from ) ); + final var temporalAccessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); + return java.sql.Time.valueOf( temporalAccessor.query( LocalTime::from ) ); } catch ( DateTimeParseException pe) { throw new HibernateException( "could not parse time string " + subSequence( charSequence, start, end ), pe ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java index ade64a05d7fd..e7eb584c363f 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/JdbcTimestampJavaType.java @@ -13,7 +13,6 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; import java.time.temporal.ChronoField; -import java.time.temporal.TemporalAccessor; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; @@ -205,9 +204,9 @@ public String toString(Date value) { @Override public Date fromString(CharSequence string) { try { - final TemporalAccessor accessor = LITERAL_FORMATTER.parse( string ); - final Timestamp timestamp = new Timestamp( accessor.getLong( ChronoField.INSTANT_SECONDS ) * 1000L ); - timestamp.setNanos( accessor.get( ChronoField.NANO_OF_SECOND ) ); + final var temporalAccessor = LITERAL_FORMATTER.parse( string ); + final var timestamp = new Timestamp( temporalAccessor.getLong( ChronoField.INSTANT_SECONDS ) * 1000L ); + timestamp.setNanos( temporalAccessor.get( ChronoField.NANO_OF_SECOND ) ); return timestamp; } catch ( DateTimeParseException pe) { @@ -223,14 +222,14 @@ public void appendEncodedString(SqlAppender sb, Date value) { @Override public Date fromEncodedString(CharSequence charSequence, int start, int end) { try { - final TemporalAccessor accessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); + final var temporalAccessor = ENCODED_FORMATTER.parse( subSequence( charSequence, start, end ) ); final Timestamp timestamp; - if ( accessor.isSupported( ChronoField.INSTANT_SECONDS ) ) { - timestamp = new Timestamp( accessor.getLong( ChronoField.INSTANT_SECONDS ) * 1000L ); - timestamp.setNanos( accessor.get( ChronoField.NANO_OF_SECOND ) ); + if ( temporalAccessor.isSupported( ChronoField.INSTANT_SECONDS ) ) { + timestamp = new Timestamp( temporalAccessor.getLong( ChronoField.INSTANT_SECONDS ) * 1000L ); + timestamp.setNanos( temporalAccessor.get( ChronoField.NANO_OF_SECOND ) ); } else { - timestamp = Timestamp.valueOf( LocalDateTime.from( accessor ) ); + timestamp = Timestamp.valueOf( LocalDateTime.from( temporalAccessor ) ); } return timestamp; } @@ -285,7 +284,7 @@ public static class TimestampMutabilityPlan extends MutableMutabilityPlan public Date deepCopyNotNull(Date value) { if ( value instanceof Timestamp timestamp ) { // make sure to get the nanos - final Timestamp copy = new Timestamp( timestamp.getTime() ); + final var copy = new Timestamp( timestamp.getTime() ); copy.setNanos( timestamp.getNanos() ); return copy; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateJavaType.java index 2ace6939351f..93658de28f30 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateJavaType.java @@ -10,7 +10,6 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.Calendar; import java.util.Date; @@ -51,10 +50,9 @@ public TemporalType getPrecision() { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) { - if ( context.isPreferJavaTimeJdbcTypesEnabled() ) { - return context.getJdbcType( SqlTypes.LOCAL_DATE ); - } - return context.getJdbcType( Types.DATE ); + return context.isPreferJavaTimeJdbcTypesEnabled() + ? context.getJdbcType( SqlTypes.LOCAL_DATE ) + : context.getJdbcType( Types.DATE ); } @Override @@ -106,13 +104,13 @@ public X unwrap(LocalDate value, Class type, WrapperOptions options) { return (X) Timestamp.valueOf( localDateTime ); } - final ZonedDateTime zonedDateTime = localDateTime.atZone( ZoneId.systemDefault() ); + final var zonedDateTime = localDateTime.atZone( ZoneId.systemDefault() ); if ( Calendar.class.isAssignableFrom( type ) ) { return (X) GregorianCalendar.from( zonedDateTime ); } - final Instant instant = zonedDateTime.toInstant(); + final var instant = zonedDateTime.toInstant(); if ( Date.class.equals( type ) ) { return (X) Date.from( instant ); @@ -147,7 +145,7 @@ public LocalDate wrap(X value, WrapperOptions options) { } if (value instanceof Long longValue) { - final Instant instant = Instant.ofEpochMilli( longValue ); + final var instant = Instant.ofEpochMilli( longValue ); return LocalDateTime.ofInstant( instant, ZoneId.systemDefault() ).toLocalDate(); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateTimeJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateTimeJavaType.java index 1a6abfdbf8e1..8a4d64752a54 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateTimeJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalDateTimeJavaType.java @@ -52,10 +52,9 @@ public TemporalType getPrecision() { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) { - if ( context.isPreferJavaTimeJdbcTypesEnabled() ) { - return context.getJdbcType( SqlTypes.LOCAL_DATE_TIME ); - } - return context.getJdbcType( Types.TIMESTAMP ); + return context.isPreferJavaTimeJdbcTypesEnabled() + ? context.getJdbcType( SqlTypes.LOCAL_DATE_TIME ) + : context.getJdbcType( Types.TIMESTAMP ); } @Override @SuppressWarnings("unchecked") @@ -101,17 +100,17 @@ public X unwrap(LocalDateTime value, Class type, WrapperOptions options) } if ( java.sql.Date.class.isAssignableFrom( type ) ) { - Instant instant = value.atZone( ZoneId.systemDefault() ).toInstant(); + final var instant = value.atZone( ZoneId.systemDefault() ).toInstant(); return (X) java.sql.Date.from( instant ); } if ( java.sql.Time.class.isAssignableFrom( type ) ) { - Instant instant = value.atZone( ZoneId.systemDefault() ).toInstant(); + final var instant = value.atZone( ZoneId.systemDefault() ).toInstant(); return (X) java.sql.Time.from( instant ); } if ( Date.class.isAssignableFrom( type ) ) { - Instant instant = value.atZone( ZoneId.systemDefault() ).toInstant(); + final var instant = value.atZone( ZoneId.systemDefault() ).toInstant(); return (X) Date.from( instant ); } @@ -120,7 +119,7 @@ public X unwrap(LocalDateTime value, Class type, WrapperOptions options) } if ( Long.class.isAssignableFrom( type ) ) { - Instant instant = value.atZone( ZoneId.systemDefault() ).toInstant(); + final var instant = value.atZone( ZoneId.systemDefault() ).toInstant(); return (X) Long.valueOf( instant.toEpochMilli() ); } @@ -149,7 +148,7 @@ public LocalDateTime wrap(X value, WrapperOptions options) { } if (value instanceof Long longValue) { - final Instant instant = Instant.ofEpochMilli( longValue ); + final var instant = Instant.ofEpochMilli( longValue ); return LocalDateTime.ofInstant( instant, ZoneId.systemDefault() ); } @@ -158,7 +157,7 @@ public LocalDateTime wrap(X value, WrapperOptions options) { } if (value instanceof Date timestamp) { - final Instant instant = timestamp.toInstant(); + final var instant = timestamp.toInstant(); return LocalDateTime.ofInstant( instant, ZoneId.systemDefault() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalTimeJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalTimeJavaType.java index 9a1076dd7701..e7d981fbd723 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalTimeJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/LocalTimeJavaType.java @@ -12,7 +12,6 @@ import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId; -import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoField; import java.util.Calendar; @@ -56,10 +55,9 @@ public TemporalType getPrecision() { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) { - if ( context.isPreferJavaTimeJdbcTypesEnabled() ) { - return context.getJdbcType( SqlTypes.LOCAL_TIME ); - } - return context.getJdbcType( Types.TIME ); + return context.isPreferJavaTimeJdbcTypesEnabled() + ? context.getJdbcType( SqlTypes.LOCAL_TIME ) + : context.getJdbcType( Types.TIME ); } @Override @@ -95,7 +93,7 @@ public X unwrap(LocalTime value, Class type, WrapperOptions options) { } if ( Time.class.isAssignableFrom( type ) ) { - final Time time = Time.valueOf( value ); + final var time = Time.valueOf( value ); if ( value.getNano() == 0 ) { return (X) time; } @@ -108,13 +106,13 @@ public X unwrap(LocalTime value, Class type, WrapperOptions options) { // the legacy Date/Time types... - final ZonedDateTime zonedDateTime = value.atDate( LocalDate.of( 1970, 1, 1 ) ).atZone( ZoneId.systemDefault() ); + final var zonedDateTime = value.atDate( LocalDate.of( 1970, 1, 1 ) ).atZone( ZoneId.systemDefault() ); if ( Calendar.class.isAssignableFrom( type ) ) { return (X) GregorianCalendar.from( zonedDateTime ); } - final Instant instant = zonedDateTime.toInstant(); + final var instant = zonedDateTime.toInstant(); if ( Timestamp.class.isAssignableFrom( type ) ) { return (X) Timestamp.from( instant ); @@ -160,7 +158,7 @@ public LocalTime wrap(X value, WrapperOptions options) { } if (value instanceof Long longValue) { - final Instant instant = Instant.ofEpochMilli( longValue ); + final var instant = Instant.ofEpochMilli( longValue ); return LocalDateTime.ofInstant( instant, ZoneId.systemDefault() ).toLocalTime(); } @@ -169,7 +167,7 @@ public LocalTime wrap(X value, WrapperOptions options) { } if (value instanceof Date timestamp ) { - final Instant instant = Instant.ofEpochMilli( timestamp.getTime() ); + final var instant = Instant.ofEpochMilli( timestamp.getTime() ); return LocalDateTime.ofInstant( instant, ZoneId.systemDefault() ).toLocalTime(); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/SerializableJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/SerializableJavaType.java index 23c84010359d..58bbd22656bb 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/SerializableJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/SerializableJavaType.java @@ -29,7 +29,7 @@ */ public class SerializableJavaType extends AbstractClassJavaType { - // unfortunately the param types cannot be the same so use something other than 'T' here to make that obvious + // unfortunately, the param types cannot be the same so use something other than 'T' here to make that obvious public static class SerializableMutabilityPlan extends MutableMutabilityPlan { public static final SerializableMutabilityPlan INSTANCE = new SerializableMutabilityPlan<>(); @@ -66,9 +66,7 @@ public boolean isInstance(Object value) { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { - final int typeCode = indicators.isLob() - ? Types.BLOB - : Types.VARBINARY; + final int typeCode = indicators.isLob() ? Types.BLOB : Types.VARBINARY; return indicators.getJdbcType( typeCode ); } @@ -85,11 +83,13 @@ public boolean areEqual(T one, T another) { if ( one == another ) { return true; } - if ( one == null || another == null ) { + else if ( one == null || another == null ) { return false; } - return one.equals( another ) + else { + return one.equals( another ) || Arrays.equals( toBytes( one ), toBytes( another ) ); + } } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/StringJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/StringJavaType.java index 5248e33ccbe9..d3ef4969aefd 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/StringJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/StringJavaType.java @@ -15,8 +15,6 @@ import org.hibernate.type.descriptor.WrapperOptions; import org.hibernate.type.descriptor.jdbc.JdbcType; import org.hibernate.type.descriptor.jdbc.JdbcTypeIndicators; -import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; -import org.hibernate.type.spi.TypeConfiguration; import static java.nio.charset.StandardCharsets.UTF_8; @@ -52,16 +50,16 @@ public boolean isInstance(Object value) { @Override public JdbcType getRecommendedJdbcType(JdbcTypeIndicators stdIndicators) { - final TypeConfiguration typeConfiguration = stdIndicators.getTypeConfiguration(); - final JdbcTypeRegistry stdRegistry = typeConfiguration.getJdbcTypeRegistry(); + final var typeConfiguration = stdIndicators.getTypeConfiguration(); + final var jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry(); if ( stdIndicators.isLob() ) { return stdIndicators.isNationalized() - ? stdRegistry.getDescriptor( Types.NCLOB ) - : stdRegistry.getDescriptor( Types.CLOB ); + ? jdbcTypeRegistry.getDescriptor( Types.NCLOB ) + : jdbcTypeRegistry.getDescriptor( Types.CLOB ); } else if ( stdIndicators.isNationalized() ) { - return stdRegistry.getDescriptor( Types.NVARCHAR ); + return jdbcTypeRegistry.getDescriptor( Types.NVARCHAR ); } return super.getRecommendedJdbcType( stdIndicators ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/BasicCollectionJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/BasicCollectionJavaType.java index 258c35d45b1a..4e5ffce5e0dc 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/BasicCollectionJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/BasicCollectionJavaType.java @@ -75,8 +75,8 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators indicators) { } // Always determine the recommended type to make sure this is a valid basic java type // (even though we only use this inside the if block, we want it to throw here if something wrong) - final JdbcType recommendedComponentJdbcType = componentJavaType.getRecommendedJdbcType( indicators ); - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var recommendedComponentJdbcType = componentJavaType.getRecommendedJdbcType( indicators ); + final var typeConfiguration = indicators.getTypeConfiguration(); return typeConfiguration.getJdbcTypeRegistry() .resolveTypeConstructorDescriptor( indicators.getPreferredSqlTypeCodeForArray( recommendedComponentJdbcType.getDefaultSqlTypeCode() ), @@ -123,7 +123,7 @@ public BasicType resolveType( } final BasicValueConverter valueConverter = elementType.getValueConverter(); final int arrayTypeCode = stdIndicators.getPreferredSqlTypeCodeForArray( elementType.getJdbcType().getDefaultSqlTypeCode() ); - final JdbcType arrayJdbcType = + final var arrayJdbcType = typeConfiguration.getJdbcTypeRegistry() .resolveTypeConstructorDescriptor( arrayTypeCode, elementType, columnTypeInformation ); if ( valueConverter == null ) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/EmbeddableAggregateJavaType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/EmbeddableAggregateJavaType.java index d3dfb8e39b14..b663bf081193 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/EmbeddableAggregateJavaType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/java/spi/EmbeddableAggregateJavaType.java @@ -52,14 +52,14 @@ public JdbcType getRecommendedJdbcType(JdbcTypeIndicators context) { if ( context.getExplicitJdbcTypeCode() != null && context.getExplicitJdbcTypeCode() == SqlTypes.XML_ARRAY // Also prefer XML is the Dialect prefers XML arrays || context.getDialect().getPreferredSqlTypeCodeForArray() == SqlTypes.XML_ARRAY ) { - final JdbcType descriptor = context.getJdbcType( SqlTypes.SQLXML ); + final var descriptor = context.getJdbcType( SqlTypes.SQLXML ); if ( descriptor != null ) { return descriptor; } } else { // Otherwise use json by default for now - final JdbcType descriptor = context.getJdbcType( SqlTypes.JSON ); + final var descriptor = context.getJdbcType( SqlTypes.JSON ); if ( descriptor != null ) { return descriptor; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ArrayJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ArrayJdbcType.java index 2e39ec400938..7a849771dee9 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ArrayJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ArrayJdbcType.java @@ -137,7 +137,7 @@ protected String getElementTypeName(JavaType javaType, SharedSessionContractI protected Object[] getArray(BasicBinder binder, ValueBinder elementBinder, T value, WrapperOptions options) throws SQLException { - final JdbcType elementJdbcType = ( (ArrayJdbcType) binder.getJdbcType() ).getElementJdbcType(); + final var elementJdbcType = ( (ArrayJdbcType) binder.getJdbcType() ).getElementJdbcType(); //noinspection unchecked final JavaType javaType = (JavaType) binder.getJavaType(); if ( elementJdbcType instanceof AggregateJdbcType ) { @@ -151,8 +151,8 @@ protected Object[] getArray(BasicBinder binder, ValueBinder elementBin return objects; } else { - final TypeConfiguration typeConfiguration = options.getTypeConfiguration(); - final JdbcType underlyingJdbcType = + final var typeConfiguration = options.getTypeConfiguration(); + final var underlyingJdbcType = typeConfiguration.getJdbcTypeRegistry() .getDescriptor( elementJdbcType.getDefaultSqlTypeCode() ); final Class preferredJavaTypeClass = elementJdbcType.getPreferredJavaTypeClass( options ); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/BlobJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/BlobJdbcType.java index 8d814b31167e..2f04ef74e8e5 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/BlobJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/BlobJdbcType.java @@ -198,7 +198,7 @@ public BasicBinder getBlobBinder(final JavaType javaType) { protected void doBind(PreparedStatement st, X value, int index, WrapperOptions options) throws SQLException { // the use of BinaryStream here instead of InputStream seems to be only necessary on Oracle - final BinaryStream binaryStream = javaType.unwrap( value, BinaryStream.class, options ); + final var binaryStream = javaType.unwrap( value, BinaryStream.class, options ); st.setBinaryStream( index, binaryStream.getInputStream(), binaryStream.getLength() ); } @@ -206,7 +206,7 @@ protected void doBind(PreparedStatement st, X value, int index, WrapperOptions o protected void doBind(CallableStatement st, X value, String name, WrapperOptions options) throws SQLException { // the use of BinaryStream here instead of InputStream seems to be only necessary on Oracle - final BinaryStream binaryStream = javaType.unwrap( value, BinaryStream.class, options ); + final var binaryStream = javaType.unwrap( value, BinaryStream.class, options ); st.setBinaryStream( name, binaryStream.getInputStream(), binaryStream.getLength() ); } }; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ClobJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ClobJdbcType.java index abfd82a6e521..b5dcc938eff2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ClobJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/ClobJdbcType.java @@ -251,14 +251,14 @@ public BasicBinder getClobBinder(final JavaType javaType) { @Override protected void doBind(PreparedStatement st, X value, int index, WrapperOptions options) throws SQLException { - final CharacterStream characterStream = javaType.unwrap( value, CharacterStream.class, options ); + final var characterStream = javaType.unwrap( value, CharacterStream.class, options ); st.setCharacterStream( index, characterStream.asReader(), characterStream.getLength() ); } @Override protected void doBind(CallableStatement st, X value, String name, WrapperOptions options) throws SQLException { - final CharacterStream characterStream = javaType.unwrap( value, CharacterStream.class, options ); + final var characterStream = javaType.unwrap( value, CharacterStream.class, options ); st.setCharacterStream( name, characterStream.asReader(), characterStream.getLength() ); } }; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DateJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DateJdbcType.java index 446a141419ba..55afae6cfca6 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DateJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DateJdbcType.java @@ -53,9 +53,10 @@ public JavaType getJdbcRecommendedJavaTypeMapping( Integer length, Integer scale, TypeConfiguration typeConfiguration) { + final var javaTypeRegistry = typeConfiguration.getJavaTypeRegistry(); return typeConfiguration.getCurrentBaseSqlTypeIndicators().preferJdbcDatetimeTypes() - ? typeConfiguration.getJavaTypeRegistry().getDescriptor( Date.class ) - : typeConfiguration.getJavaTypeRegistry().getDescriptor( LocalDate.class ); + ? javaTypeRegistry.getDescriptor( Date.class ) + : javaTypeRegistry.getDescriptor( LocalDate.class ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DelegatingJdbcTypeIndicators.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DelegatingJdbcTypeIndicators.java index 001dbbc39e57..95eb6b80e411 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DelegatingJdbcTypeIndicators.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/DelegatingJdbcTypeIndicators.java @@ -132,14 +132,6 @@ public TypeConfiguration getTypeConfiguration() { return delegate.getTypeConfiguration(); } - public static int getZonedTimeSqlType(TimeZoneStorageStrategy storageStrategy) { - return JdbcTypeIndicators.getZonedTimeSqlType( storageStrategy ); - } - - public static int getZonedTimestampSqlType(TimeZoneStorageStrategy storageStrategy) { - return JdbcTypeIndicators.getZonedTimestampSqlType( storageStrategy ); - } - @Override public int getDefaultZonedTimeSqlType() { return delegate.getDefaultZonedTimeSqlType(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LobTypeMappings.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LobTypeMappings.java index fc64ef76371d..e69c01053f50 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LobTypeMappings.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LobTypeMappings.java @@ -40,35 +40,21 @@ public static boolean isMappedToKnownLobCode(final int jdbcTypeCode) { } public static int getLobCodeTypeMapping(final int jdbcTypeCode) { - switch ( jdbcTypeCode ) { - + return switch ( jdbcTypeCode ) { // BLOB mappings - case Types.BLOB : - case Types.BINARY : - case Types.VARBINARY : - case Types.LONGVARBINARY : return Types.BLOB; - + case Types.BLOB, Types.BINARY, Types.VARBINARY, Types.LONGVARBINARY -> Types.BLOB; // CLOB mappings - case Types.CLOB : - case Types.CHAR : - case Types.VARCHAR : - case Types.LONGVARCHAR : return Types.CLOB; - + case Types.CLOB, Types.CHAR, Types.VARCHAR, Types.LONGVARCHAR -> Types.CLOB; // NCLOB mappings - case Types.NCLOB : - case Types.NCHAR : - case Types.NVARCHAR : - case Types.LONGNVARCHAR : return Types.NCLOB; - + case Types.NCLOB, Types.NCHAR, Types.NVARCHAR, Types.LONGNVARCHAR -> Types.NCLOB; // Anything else: - default: - throw new IllegalArgumentException( - String.format( - Locale.ROOT, - "JDBC type-code [%s (%s)] not known to have a corresponding LOB equivalent", - jdbcTypeCode, - JdbcTypeNameMapper.getTypeName( jdbcTypeCode ) - ) ); - } + default -> throw new IllegalArgumentException( + String.format( + Locale.ROOT, + "JDBC type-code [%s (%s)] not known to have a corresponding LOB equivalent", + jdbcTypeCode, + JdbcTypeNameMapper.getTypeName( jdbcTypeCode ) + ) ); + }; } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongNVarcharJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongNVarcharJdbcType.java index 77a956d83cde..5c3e6d5455de 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongNVarcharJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongNVarcharJdbcType.java @@ -9,7 +9,6 @@ import org.hibernate.type.SqlTypes; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; -import org.hibernate.type.spi.TypeConfiguration; /** * Descriptor for {@link Types#LONGNVARCHAR LONGNVARCHAR} handling. @@ -38,7 +37,7 @@ public JdbcType resolveIndicatedType( JavaType domainJtd) { assert domainJtd != null; - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var typeConfiguration = indicators.getTypeConfiguration(); final JdbcTypeRegistry jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry(); final int jdbcTypeCode; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongVarcharJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongVarcharJdbcType.java index b95942015a03..3d76fb929846 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongVarcharJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/LongVarcharJdbcType.java @@ -7,7 +7,6 @@ import org.hibernate.type.SqlTypes; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; -import org.hibernate.type.spi.TypeConfiguration; import java.sql.Types; @@ -50,7 +49,7 @@ public JdbcType resolveIndicatedType( JavaType domainJtd) { assert domainJtd != null; - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var typeConfiguration = indicators.getTypeConfiguration(); final JdbcTypeRegistry jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry(); final int jdbcTypeCode; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NCharJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NCharJdbcType.java index e40d6044a016..f161a11de4a2 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NCharJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NCharJdbcType.java @@ -8,7 +8,6 @@ import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; -import org.hibernate.type.spi.TypeConfiguration; /** * Descriptor for {@link Types#NCHAR NCHAR} handling. @@ -37,7 +36,7 @@ public JdbcType resolveIndicatedType( JavaType domainJtd) { assert domainJtd != null; - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var typeConfiguration = indicators.getTypeConfiguration(); final JdbcTypeRegistry jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry(); final int jdbcTypeCode; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NClobJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NClobJdbcType.java index ce3ef5841ea5..889b90ace661 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NClobJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NClobJdbcType.java @@ -268,7 +268,7 @@ public BasicBinder getNClobBinder(final JavaType javaType) { @Override protected void doBind(PreparedStatement st, X value, int index, WrapperOptions options) throws SQLException { - final CharacterStream characterStream = javaType.unwrap( value, CharacterStream.class, options ); + final var characterStream = javaType.unwrap( value, CharacterStream.class, options ); if ( options.getDialect().supportsNationalizedMethods() ) { st.setNCharacterStream( index, characterStream.asReader(), characterStream.getLength() ); } @@ -280,7 +280,7 @@ protected void doBind(PreparedStatement st, X value, int index, WrapperOptions o @Override protected void doBind(CallableStatement st, X value, String name, WrapperOptions options) throws SQLException { - final CharacterStream characterStream = javaType.unwrap( value, CharacterStream.class, options ); + final var characterStream = javaType.unwrap( value, CharacterStream.class, options ); if ( options.getDialect().supportsNationalizedMethods() ) { st.setNCharacterStream( name, characterStream.asReader(), characterStream.getLength() ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NVarcharJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NVarcharJdbcType.java index f0070ef49bc7..0ad1134cb674 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NVarcharJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NVarcharJdbcType.java @@ -68,7 +68,7 @@ public JdbcType resolveIndicatedType( JavaType domainJtd) { assert domainJtd != null; - final TypeConfiguration typeConfiguration = indicators.getTypeConfiguration(); + final var typeConfiguration = indicators.getTypeConfiguration(); final JdbcTypeRegistry jdbcTypeRegistry = typeConfiguration.getJdbcTypeRegistry(); final int jdbcTypeCode; diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NationalizedTypeMappings.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NationalizedTypeMappings.java index f821a2e6c8c9..54bf6f8788c6 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NationalizedTypeMappings.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/NationalizedTypeMappings.java @@ -25,16 +25,17 @@ private NationalizedTypeMappings() { } public static int toNationalizedTypeCode(final int jdbcCode) { - switch ( jdbcCode ) { - case Types.CHAR: return Types.NCHAR; - case Types.CLOB: return Types.NCLOB; - case Types.LONGVARCHAR: return Types.LONGNVARCHAR; - case Types.VARCHAR: return Types.NVARCHAR; - default: + return switch ( jdbcCode ) { + case Types.CHAR -> Types.NCHAR; + case Types.CLOB -> Types.NCLOB; + case Types.LONGVARCHAR -> Types.LONGNVARCHAR; + case Types.VARCHAR -> Types.NVARCHAR; + default -> { if ( LOG.isDebugEnabled() ) { LOG.debug( "Unable to locate nationalized jdbc-code equivalent for given jdbc code : " + jdbcCode ); } - return jdbcCode; - } + yield jdbcCode; + } + }; } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructHelper.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructHelper.java index 2e9d7f6e3f9d..445a779203df 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructHelper.java @@ -40,8 +40,7 @@ public static StructAttributeValues getAttributeValues( WrapperOptions options) throws SQLException { final int numberOfAttributeMappings = embeddableMappingType.getNumberOfAttributeMappings(); final int size = numberOfAttributeMappings + ( embeddableMappingType.isPolymorphic() ? 1 : 0 ); - final StructAttributeValues attributeValues = - new StructAttributeValues( numberOfAttributeMappings, rawJdbcValues ); + final var attributeValues = new StructAttributeValues( numberOfAttributeMappings, rawJdbcValues ); int jdbcIndex = 0; for ( int i = 0; i < size; i++ ) { jdbcIndex += injectAttributeValue( @@ -89,7 +88,7 @@ private static int injectAttributeValueSimple( Object[] rawJdbcValues, int jdbcIndex, WrapperOptions options) { - final JdbcMapping jdbcMapping = modelPart.getSingleJdbcMapping(); + final var jdbcMapping = modelPart.getSingleJdbcMapping(); final Object jdbcValue = jdbcMapping.getJdbcJavaType().wrap( rawJdbcValues[jdbcIndex], options ); attributeValues.setAttributeValue( attributeIndex, jdbcMapping.convertToDomainValue( jdbcValue ) ); return 1; @@ -111,7 +110,7 @@ private static int injectAttributeValueEmbeddable( final int jdbcValueCount = embeddableMappingType.getJdbcValueCount(); final Object[] subJdbcValues = new Object[jdbcValueCount]; System.arraycopy( rawJdbcValues, jdbcIndex, subJdbcValues, 0, subJdbcValues.length ); - final StructAttributeValues subValues = getAttributeValues( embeddableMappingType, subJdbcValues, options ); + final var subValues = getAttributeValues( embeddableMappingType, subJdbcValues, options ); attributeValues.setAttributeValue( attributeIndex, instantiate( embeddableMappingType, subValues ) ); return jdbcValueCount; } @@ -199,7 +198,7 @@ private static EmbeddableInstantiator embeddableInstantiator( } else { // the discriminator here is the composite class because it gets converted to the domain type when extracted - final Class discriminatorClass = (Class) attributeValues.getDiscriminator(); + final var discriminatorClass = (Class) attributeValues.getDiscriminator(); return representationStrategy.getInstantiatorForClass( discriminatorClass.getName() ); } } @@ -224,8 +223,8 @@ private static int injectJdbcValue( if ( toOneAttributeMapping.getSideNature() == ForeignKeyDescriptor.Nature.TARGET ) { return 0; } - final ForeignKeyDescriptor foreignKeyDescriptor = toOneAttributeMapping.getForeignKeyDescriptor(); - final ValuedModelPart keyPart = foreignKeyDescriptor.getKeyPart(); + final var foreignKeyDescriptor = toOneAttributeMapping.getForeignKeyDescriptor(); + final var keyPart = foreignKeyDescriptor.getKeyPart(); final Object foreignKeyValue = foreignKeyDescriptor.getAssociationKeyFromSide( attributeValues[attributeIndex], ForeignKeyDescriptor.Nature.TARGET, @@ -284,10 +283,10 @@ else if ( attributeMapping instanceof EmbeddableValuedModelPart embeddableValued else { assert attributeMapping.getJdbcTypeCount() == 1; jdbcValueCount = 1; - final JdbcMapping jdbcMapping = attributeMapping.getSingleJdbcMapping(); + final var jdbcMapping = attributeMapping.getSingleJdbcMapping(); final Object relationalValue = jdbcMapping.convertToRelationalValue( attributeValues[attributeIndex] ); if ( relationalValue != null ) { - final JavaType javaType = jdbcMapping.getJdbcJavaType(); + final var javaType = jdbcMapping.getJdbcJavaType(); injectCastJdbcValue( jdbcValues, jdbcIndex, options, jdbcMapping, javaType, relationalValue ); } } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructJdbcType.java index 32966a536221..980a0028c470 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/StructJdbcType.java @@ -322,7 +322,7 @@ private int injectAttributeValue( break; case SqlTypes.ARRAY: final BasicType elementType = ( (BasicPluralType) jdbcMapping ).getElementType(); - final JdbcType elementJdbcType = elementType.getJdbcType(); + final var elementJdbcType = elementType.getJdbcType(); final Object[] array; final Object[] newArray; switch ( elementJdbcType.getDefaultSqlTypeCode() ) { @@ -462,7 +462,7 @@ private void wrapRawJdbcValue( break; case SqlTypes.ARRAY: final BasicType elementType = ( (BasicPluralType) jdbcMapping ).getElementType(); - final JdbcType elementJdbcType = elementType.getJdbcType(); + final var elementJdbcType = elementType.getJdbcType(); final Object[] array; final Object[] newArray; switch ( elementJdbcType.getDefaultSqlTypeCode() ) { diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimeJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimeJdbcType.java index a112ee3aff10..a31f17144629 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimeJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimeJdbcType.java @@ -53,9 +53,10 @@ public JavaType getJdbcRecommendedJavaTypeMapping( Integer length, Integer scale, TypeConfiguration typeConfiguration) { + final var javaTypeRegistry = typeConfiguration.getJavaTypeRegistry(); return typeConfiguration.getCurrentBaseSqlTypeIndicators().preferJdbcDatetimeTypes() - ? typeConfiguration.getJavaTypeRegistry().getDescriptor( Time.class ) - : typeConfiguration.getJavaTypeRegistry().getDescriptor( LocalTime.class ); + ? javaTypeRegistry.getDescriptor( Time.class ) + : javaTypeRegistry.getDescriptor( LocalTime.class ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimestampJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimestampJdbcType.java index 6c273dacc6f8..43f1922633c6 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimestampJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/TimestampJdbcType.java @@ -53,9 +53,10 @@ public JavaType getJdbcRecommendedJavaTypeMapping( Integer length, Integer scale, TypeConfiguration typeConfiguration) { + final var javaTypeRegistry = typeConfiguration.getJavaTypeRegistry(); return typeConfiguration.getCurrentBaseSqlTypeIndicators().preferJdbcDatetimeTypes() - ? typeConfiguration.getJavaTypeRegistry().getDescriptor( Timestamp.class ) - : typeConfiguration.getJavaTypeRegistry().getDescriptor( LocalDateTime.class ); + ? javaTypeRegistry.getDescriptor( Timestamp.class ) + : javaTypeRegistry.getDescriptor( LocalDateTime.class ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarbinaryJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarbinaryJdbcType.java index 85a26925da5a..b8f588aa8908 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarbinaryJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarbinaryJdbcType.java @@ -17,7 +17,6 @@ import org.hibernate.type.descriptor.WrapperOptions; import org.hibernate.type.descriptor.java.JavaType; import org.hibernate.type.descriptor.jdbc.internal.JdbcLiteralFormatterBinary; -import org.hibernate.type.descriptor.jdbc.spi.JdbcTypeRegistry; import org.hibernate.type.spi.TypeConfiguration; /** @@ -73,7 +72,7 @@ public JdbcLiteralFormatter getJdbcLiteralFormatter(JavaType javaType) @Override public JdbcType resolveIndicatedType(JdbcTypeIndicators indicators, JavaType domainJtd) { - final JdbcTypeRegistry jdbcTypeRegistry = indicators.getTypeConfiguration().getJdbcTypeRegistry(); + final var jdbcTypeRegistry = indicators.getTypeConfiguration().getJdbcTypeRegistry(); if ( indicators.isLob() ) { return jdbcTypeRegistry.getDescriptor( indicators.resolveJdbcTypeCode( SqlTypes.BLOB ) ); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarcharJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarcharJdbcType.java index 153a314b9dde..7015b5a2c442 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarcharJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/VarcharJdbcType.java @@ -81,9 +81,10 @@ else if ( shouldUseMaterializedLob( indicators ) ) { protected boolean shouldUseMaterializedLob(JdbcTypeIndicators indicators) { final Dialect dialect = indicators.getDialect(); final long length = indicators.getColumnLength(); - final long maxLength = indicators.isNationalized() ? - dialect.getMaxNVarcharCapacity() : - dialect.getMaxVarcharCapacity(); + final long maxLength = + indicators.isNationalized() + ? dialect.getMaxNVarcharCapacity() + : dialect.getMaxVarcharCapacity(); return length > maxLength && dialect.useMaterializedLobWhenCapacityExceeded(); } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlArrayJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlArrayJdbcType.java index 2162cad75dec..006718721ca9 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlArrayJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlArrayJdbcType.java @@ -71,7 +71,7 @@ protected X fromString(String string, JavaType javaType, WrapperOptions o } protected String toString(X value, JavaType javaType, WrapperOptions options) { - final JdbcType elementJdbcType = getElementJdbcType(); + final var elementJdbcType = getElementJdbcType(); final Object[] domainObjects = javaType.unwrap( value, Object[].class, options ); if ( elementJdbcType instanceof XmlJdbcType xmlElementJdbcType ) { final EmbeddableMappingType embeddableMappingType = xmlElementJdbcType.getEmbeddableMappingType(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlHelper.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlHelper.java index 07d0af20058a..e3bb1dfc1ec1 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlHelper.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/XmlHelper.java @@ -471,7 +471,7 @@ private static int fromString( final SelectableMapping selectable = embeddableMappingType.getJdbcValueSelectable( selectableIndex ); - final JdbcType jdbcType = selectable.getJdbcMapping().getJdbcType(); + final var jdbcType = selectable.getJdbcMapping().getJdbcType(); if ( jdbcType instanceof AggregateJdbcType aggregateJdbcType ) { final EmbeddableMappingType subMappingType = aggregateJdbcType.getEmbeddableMappingType(); final Object[] subValues; @@ -918,7 +918,7 @@ private static void convertedBasicValueToString( if ( length != 0 ) { //noinspection unchecked final JavaType elementJavaType = ( (BasicPluralJavaType) jdbcJavaType ).getElementJavaType(); - final JdbcType elementJdbcType = ( (ArrayJdbcType) jdbcType ).getElementJdbcType(); + final var elementJdbcType = ( (ArrayJdbcType) jdbcType ).getElementJdbcType(); if ( elementJdbcType instanceof AggregateJdbcType aggregateJdbcType ) { final EmbeddableMappingType embeddableMappingType = aggregateJdbcType.getEmbeddableMappingType(); diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/internal/DelayedStructJdbcType.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/internal/DelayedStructJdbcType.java index 5db136c6a2eb..8cba3c394859 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/internal/DelayedStructJdbcType.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/internal/DelayedStructJdbcType.java @@ -114,9 +114,9 @@ public String toString() { @Override public boolean equals(Object o) { - return o != null && - getClass() == o.getClass() && - structName.equals( ( (DelayedStructJdbcType) o ).structName ); + return o != null + && getClass() == o.getClass() + && structName.equals( ( (DelayedStructJdbcType) o ).structName ); } @Override diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java index d69376868916..b7faf209a1ce 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JdbcTypeRegistry.java @@ -66,7 +66,7 @@ public TypeConfiguration getTypeConfiguration() { @Override public void addDescriptor(JdbcType jdbcType) { - final JdbcType previous = descriptorMap.put( jdbcType.getDefaultSqlTypeCode(), jdbcType ); + final var previous = descriptorMap.put( jdbcType.getDefaultSqlTypeCode(), jdbcType ); // if ( previous != null && previous != jdbcType ) { // LOG.tracef( "addDescriptor(%s) replaced previous registration(%s)", jdbcType, previous ); // } @@ -74,7 +74,7 @@ public void addDescriptor(JdbcType jdbcType) { @Override public void addDescriptor(int typeCode, JdbcType jdbcType) { - final JdbcType previous = descriptorMap.put( typeCode, jdbcType ); + final var previous = descriptorMap.put( typeCode, jdbcType ); // if ( previous != null && previous != jdbcType ) { // LOG.tracef( "addDescriptor(%d, %s) replaced previous registration(%s)", typeCode, jdbcType, previous ); // } @@ -93,7 +93,7 @@ public JdbcType findDescriptor(int jdbcTypeCode) { } public JdbcType getDescriptor(int jdbcTypeCode) { - final JdbcType descriptor = descriptorMap.get( jdbcTypeCode ); + final var descriptor = descriptorMap.get( jdbcTypeCode ); if ( descriptor != null ) { return descriptor; } @@ -104,7 +104,7 @@ public JdbcType getDescriptor(int jdbcTypeCode) { // } // see if the typecode is part of a known type family... - final JdbcType potentialAlternateDescriptor = getFamilyDescriptor( jdbcTypeCode ); + final var potentialAlternateDescriptor = getFamilyDescriptor( jdbcTypeCode ); if ( potentialAlternateDescriptor != null ) { return potentialAlternateDescriptor; } @@ -123,7 +123,7 @@ private JdbcType getFamilyDescriptor(int jdbcTypeCode) { if ( family != null ) { for ( int potentialAlternateTypeCode : family.getTypeCodes() ) { if ( potentialAlternateTypeCode != jdbcTypeCode ) { - final JdbcType potentialAlternateDescriptor = descriptorMap.get( potentialAlternateTypeCode ); + final var potentialAlternateDescriptor = descriptorMap.get( potentialAlternateTypeCode ); if ( potentialAlternateDescriptor != null ) { // todo (6.0) : add a SqlTypeDescriptor#canBeAssignedFrom method ? return potentialAlternateDescriptor; @@ -174,7 +174,7 @@ private AggregateJdbcType resolveAggregateDescriptor( EmbeddableMappingType embeddableMappingType, RuntimeModelCreationContext context, String registrationKey) { - final JdbcType descriptor = getDescriptor( jdbcTypeCode ); + final var descriptor = getDescriptor( jdbcTypeCode ); if ( descriptor instanceof AggregateJdbcType aggregateJdbcType ) { final AggregateJdbcType resolvedJdbcType = aggregateJdbcType.resolveAggregateJdbcType( embeddableMappingType, typeName, context ); @@ -241,15 +241,15 @@ private JdbcType resolveTypeConstructorDescriptor( columnTypeInformation == null ? new TypeConstructedJdbcTypeKey( jdbcTypeConstructorCode, elementType ) : new TypeConstructedJdbcTypeKey( jdbcTypeConstructorCode, elementType, columnTypeInformation ); - final JdbcType descriptor = typeConstructorDescriptorMap.get( key ); + final var descriptor = typeConstructorDescriptorMap.get( key ); if ( descriptor != null ) { return descriptor; } else { final JdbcTypeConstructor jdbcTypeConstructor = getConstructor( jdbcTypeConstructorCode ); if ( jdbcTypeConstructor != null ) { - final JdbcType jdbcType = jdbcElementType( elementType, columnTypeInformation, jdbcTypeConstructor ); - final JdbcType existingType = typeConstructorDescriptorMap.putIfAbsent( key, jdbcType ); + final var jdbcType = jdbcElementType( elementType, columnTypeInformation, jdbcTypeConstructor ); + final var existingType = typeConstructorDescriptorMap.putIfAbsent( key, jdbcType ); if ( existingType != null ) { return existingType; } diff --git a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JsonGeneratingVisitor.java b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JsonGeneratingVisitor.java index c237c4f9a63d..f84111f1884c 100644 --- a/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JsonGeneratingVisitor.java +++ b/hibernate-core/src/main/java/org/hibernate/type/descriptor/jdbc/spi/JsonGeneratingVisitor.java @@ -112,7 +112,7 @@ else if ( mappedType instanceof BasicType basicType ) { if ( length != 0 ) { //noinspection unchecked final JavaType elementJavaType = ((BasicPluralJavaType) basicType.getJdbcJavaType()).getElementJavaType(); - final JdbcType elementJdbcType = ((ArrayJdbcType) basicType.getJdbcType()).getElementJdbcType(); + final var elementJdbcType = ((ArrayJdbcType) basicType.getJdbcType()).getElementJdbcType(); final Object domainArray = basicType.convertToRelationalValue( value ); for ( int j = 0; j < length; j++ ) { writer.serializeJsonValue( Array.get( domainArray, j ), elementJavaType, elementJdbcType, options );