Skip to content

Commit 82d61e7

Browse files
committed
minor cleanups around replace()
1 parent fa398cc commit 82d61e7

File tree

5 files changed

+78
-84
lines changed

5 files changed

+78
-84
lines changed

hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorType.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -126,32 +126,27 @@ public void nullSafeSet(
126126
}
127127

128128
@Override
129-
public String toLoggableString(Object value, SessionFactoryImplementor factory) throws HibernateException {
129+
public String toLoggableString(Object value, SessionFactoryImplementor factory) {
130130
return value == null ? "[null]" : value.toString();
131131
}
132132

133133
@Override
134-
public Object deepCopy(Object value, SessionFactoryImplementor factory)
135-
throws HibernateException {
134+
public Object deepCopy(Object value, SessionFactoryImplementor factory) {
136135
return value;
137136
}
138137

139138
@Override
140-
public Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner, Map<Object, Object> copyCache)
141-
throws HibernateException {
139+
public Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner, Map<Object, Object> copyCache) {
142140
return original;
143141
}
144142

145143
@Override
146144
public boolean[] toColumnNullness(Object value, MappingContext mapping) {
147-
return value == null
148-
? ArrayHelper.FALSE
149-
: ArrayHelper.TRUE;
145+
return value == null ? ArrayHelper.FALSE : ArrayHelper.TRUE;
150146
}
151147

152148
@Override
153-
public boolean isDirty(Object old, Object current, boolean[] checkable, SharedSessionContractImplementor session)
154-
throws HibernateException {
149+
public boolean isDirty(Object old, Object current, boolean[] checkable, SharedSessionContractImplementor session) {
155150
return Objects.equals( old, current );
156151
}
157152

hibernate-core/src/main/java/org/hibernate/type/AbstractStandardBasicType.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -298,11 +298,10 @@ public final void beforeAssemble(Serializable cached, SharedSessionContractImple
298298
@Override
299299
@SuppressWarnings("unchecked")
300300
public final Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner, Map<Object, Object> copyCache) {
301-
if ( original == null && target == null ) {
302-
return null;
303-
}
301+
return original == null && target == null
302+
? null
303+
: javaType.getReplacement( (T) original, (T) target, session );
304304

305-
return javaType.getReplacement( (T) original, (T) target, session );
306305
}
307306

308307
@Override

hibernate-core/src/main/java/org/hibernate/type/ComponentType.java

Lines changed: 62 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -355,9 +355,7 @@ public boolean isModified(
355355
@Override
356356
public void nullSafeSet(PreparedStatement st, Object value, int begin, SharedSessionContractImplementor session)
357357
throws HibernateException, SQLException {
358-
359-
Object[] subvalues = nullSafeGetValues( value );
360-
358+
final Object[] subvalues = nullSafeGetValues( value );
361359
for ( int i = 0; i < propertySpan; i++ ) {
362360
propertyTypes[i].nullSafeSet( st, subvalues[i], begin, session );
363361
begin += propertyTypes[i].getColumnSpan( session.getFactory().getRuntimeMetamodels() );
@@ -372,7 +370,6 @@ public void nullSafeSet(
372370
boolean[] settable,
373371
SharedSessionContractImplementor session)
374372
throws HibernateException, SQLException {
375-
376373
final Object[] subvalues = nullSafeGetValues( value );
377374
int loc = 0;
378375
for ( int i = 0; i < propertySpan; i++ ) {
@@ -481,18 +478,19 @@ public String toLoggableString(Object value, SessionFactoryImplementor factory)
481478
if ( value == null ) {
482479
return "null";
483480
}
484-
485-
final Map<String, String> result = new HashMap<>();
486-
final Object[] values = getPropertyValues( value );
487-
for ( int i = 0; i < propertyTypes.length; i++ ) {
488-
if ( values[i] == LazyPropertyInitializer.UNFETCHED_PROPERTY ) {
489-
result.put( propertyNames[i], "<uninitialized>" );
490-
}
491-
else {
492-
result.put( propertyNames[i], propertyTypes[i].toLoggableString( values[i], factory ) );
481+
else {
482+
final Map<String, String> result = new HashMap<>();
483+
final Object[] values = getPropertyValues( value );
484+
for ( int i = 0; i < propertyTypes.length; i++ ) {
485+
if ( values[i] == LazyPropertyInitializer.UNFETCHED_PROPERTY ) {
486+
result.put( propertyNames[i], "<uninitialized>" );
487+
}
488+
else {
489+
result.put( propertyNames[i], propertyTypes[i].toLoggableString( values[i], factory ) );
490+
}
493491
}
492+
return unqualify( getName() ) + result;
494493
}
495-
return unqualify( getName() ) + result;
496494
}
497495

498496
@Override
@@ -505,22 +503,23 @@ public Object deepCopy(Object component, SessionFactoryImplementor factory) {
505503
if ( component == null ) {
506504
return null;
507505
}
506+
else {
507+
final Object[] values = getPropertyValues( component );
508+
for ( int i = 0; i < propertySpan; i++ ) {
509+
values[i] = propertyTypes[i].deepCopy( values[i], factory );
510+
}
508511

509-
final Object[] values = getPropertyValues( component );
510-
for ( int i = 0; i < propertySpan; i++ ) {
511-
values[i] = propertyTypes[i].deepCopy( values[i], factory );
512-
}
512+
final Object result = instantiator( component ).instantiate( () -> values );
513513

514-
final Object result = instantiator( component ).instantiate( () -> values );
514+
//not absolutely necessary, but helps for some
515+
//equals()/hashCode() implementations
516+
final PropertyAccess parentAccess = mappingModelPart().getParentInjectionAttributePropertyAccess();
517+
if ( parentAccess != null ) {
518+
parentAccess.getSetter().set( result, parentAccess.getGetter().get( component ) );
519+
}
515520

516-
//not absolutely necessary, but helps for some
517-
//equals()/hashCode() implementations
518-
final PropertyAccess parentAccess = mappingModelPart().getParentInjectionAttributePropertyAccess();
519-
if ( parentAccess != null ) {
520-
parentAccess.getSetter().set( result, parentAccess.getGetter().get( component ) );
521+
return result;
521522
}
522-
523-
return result;
524523
}
525524

526525
@Override
@@ -530,28 +529,28 @@ public Object replace(
530529
SharedSessionContractImplementor session,
531530
Object owner,
532531
Map<Object, Object> copyCache) {
533-
534532
if ( original == null ) {
535533
return null;
536534
}
537-
538-
final Object[] originalValues = getPropertyValues( original );
539-
final Object[] resultValues = getPropertyValues( target );
540-
final Object[] replacedValues = TypeHelper.replace(
541-
originalValues,
542-
resultValues,
543-
propertyTypes,
544-
session,
545-
owner,
546-
copyCache
547-
);
548-
549-
if ( target == null || !isMutable() ) {
550-
return instantiator( original ).instantiate( () -> replacedValues );
551-
}
552535
else {
553-
setPropertyValues( target, replacedValues );
554-
return target;
536+
final Object[] originalValues = getPropertyValues( original );
537+
final Object[] resultValues = getPropertyValues( target );
538+
final Object[] replacedValues = TypeHelper.replace(
539+
originalValues,
540+
resultValues,
541+
propertyTypes,
542+
session,
543+
owner,
544+
copyCache
545+
);
546+
547+
if ( target == null || !isMutable() ) {
548+
return instantiator( original ).instantiate( () -> replacedValues );
549+
}
550+
else {
551+
setPropertyValues( target, replacedValues );
552+
return target;
553+
}
555554
}
556555
}
557556

@@ -563,28 +562,29 @@ public Object replace(
563562
Object owner,
564563
Map<Object, Object> copyCache,
565564
ForeignKeyDirection foreignKeyDirection) {
566-
567565
if ( original == null ) {
568566
return null;
569567
}
570-
final Object[] originalValues = getPropertyValues( original );
571-
final Object[] resultValues = getPropertyValues( target );
572-
final Object[] replacedValues = TypeHelper.replace(
573-
originalValues,
574-
resultValues,
575-
propertyTypes,
576-
session,
577-
owner,
578-
copyCache,
579-
foreignKeyDirection
580-
);
581-
582-
if ( target == null || !isMutable() ) {
583-
return instantiator( original ).instantiate( () -> replacedValues );
584-
}
585568
else {
586-
setPropertyValues( target, replacedValues );
587-
return target;
569+
final Object[] originalValues = getPropertyValues( original );
570+
final Object[] resultValues = getPropertyValues( target );
571+
final Object[] replacedValues = TypeHelper.replace(
572+
originalValues,
573+
resultValues,
574+
propertyTypes,
575+
session,
576+
owner,
577+
copyCache,
578+
foreignKeyDirection
579+
);
580+
581+
if ( target == null || !isMutable() ) {
582+
return instantiator( original ).instantiate( () -> replacedValues );
583+
}
584+
else {
585+
setPropertyValues( target, replacedValues );
586+
return target;
587+
}
588588
}
589589
}
590590

hibernate-core/src/main/java/org/hibernate/type/TypeHelper.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,11 +108,12 @@ public static void replace(
108108
final Type[] types = persister.getPropertyTypes();
109109
for ( int i = 0; i < types.length; i++ ) {
110110
final Object oldValue = values[i];
111-
final Object newValue;
112111
if ( oldValue != LazyPropertyInitializer.UNFETCHED_PROPERTY
113-
&& oldValue != PropertyAccessStrategyBackRefImpl.UNKNOWN
114-
&& ( newValue = types[i].replace( values[i], values[i], session, owner, copyCache ) ) != oldValue ) {
115-
persister.setValue( entity, i, newValue );
112+
&& oldValue != PropertyAccessStrategyBackRefImpl.UNKNOWN ) {
113+
final Object newValue = types[i].replace( values[i], values[i], session, owner, copyCache );
114+
if ( newValue != oldValue ) {
115+
persister.setValue( entity, i, newValue );
116+
}
116117
}
117118
}
118119
}

hibernate-core/src/main/java/org/hibernate/type/internal/ConvertedBasicTypeImpl.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -318,11 +318,10 @@ public Object disassemble(Object value, SharedSessionContractImplementor session
318318
@Override
319319
@SuppressWarnings("unchecked")
320320
public final Object replace(Object original, Object target, SharedSessionContractImplementor session, Object owner, Map<Object, Object> copyCache) {
321-
if ( original == null && target == null ) {
322-
return null;
323-
}
321+
return original == null && target == null
322+
? null
323+
: converter.getDomainJavaType().getReplacement( (J) original, (J) target, session );
324324

325-
return converter.getDomainJavaType().getReplacement( (J) original, (J) target, session );
326325
}
327326

328327
@Override

0 commit comments

Comments
 (0)