Skip to content

Commit 342cde5

Browse files
committed
clean up converter adaptors
1 parent 2d28b90 commit 342cde5

File tree

11 files changed

+94
-108
lines changed

11 files changed

+94
-108
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/AbstractConverterDescriptor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.hibernate.boot.model.convert.spi.AutoApplicableConverterDescriptor;
99
import org.hibernate.boot.model.convert.spi.ConverterDescriptor;
1010
import org.hibernate.boot.model.convert.spi.JpaAttributeConverterCreationContext;
11-
import org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl;
11+
import org.hibernate.type.descriptor.converter.internal.AttributeConverterBean;
1212
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
1313
import org.hibernate.resource.beans.spi.ManagedBean;
1414

@@ -82,7 +82,7 @@ public AutoApplicableConverterDescriptor getAutoApplyDescriptor() {
8282

8383
@Override
8484
public JpaAttributeConverter<X,Y> createJpaAttributeConverter(JpaAttributeConverterCreationContext context) {
85-
return new JpaAttributeConverterImpl<>(
85+
return new AttributeConverterBean<>(
8686
createManagedBean( context ),
8787
context.getJavaTypeRegistry().getDescriptor( converterClass ),
8888
getDomainClass(),

hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/ConverterDescriptorImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import org.hibernate.boot.model.convert.spi.AutoApplicableConverterDescriptor;
1010
import org.hibernate.boot.model.convert.spi.ConverterDescriptor;
1111
import org.hibernate.boot.model.convert.spi.JpaAttributeConverterCreationContext;
12-
import org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl;
12+
import org.hibernate.type.descriptor.converter.internal.AttributeConverterBean;
1313
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
1414
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
1515

@@ -56,7 +56,7 @@ public AutoApplicableConverterDescriptor getAutoApplyDescriptor() {
5656
public JpaAttributeConverter<X, Y> createJpaAttributeConverter(JpaAttributeConverterCreationContext context) {
5757
final JavaTypeRegistry javaTypeRegistry = context.getTypeConfiguration().getJavaTypeRegistry();
5858
final var converterBean = context.getManagedBeanRegistry().getBean( converterType );
59-
return new JpaAttributeConverterImpl<>(
59+
return new AttributeConverterBean<>(
6060
converterBean,
6161
javaTypeRegistry.getDescriptor( converterBean.getBeanClass() ),
6262
javaTypeRegistry.resolveDescriptor( domainTypeToMatch.getErasedType() ),

hibernate-core/src/main/java/org/hibernate/boot/model/convert/internal/ConverterHelper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
*/
3131
public class ConverterHelper {
3232
public static ParameterizedType extractAttributeConverterParameterizedType(Class<? extends AttributeConverter<?,?>> base) {
33-
return GenericsHelper.extractParameterizedType( base );
33+
return GenericsHelper.extractParameterizedType( base, AttributeConverter.class );
3434
}
3535

3636
public static ResolvedType resolveAttributeType(MemberDetails memberDetails, MetadataBuildingContext context) {

hibernate-core/src/main/java/org/hibernate/boot/model/process/internal/NamedConverterResolution.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import org.hibernate.mapping.BasicValue;
2020
import org.hibernate.metamodel.mapping.JdbcMapping;
2121
import org.hibernate.type.BasicType;
22-
import org.hibernate.type.descriptor.converter.internal.AttributeConverterMutabilityPlanImpl;
22+
import org.hibernate.type.descriptor.converter.internal.AttributeConverterMutabilityPlan;
2323
import org.hibernate.type.descriptor.converter.spi.BasicValueConverter;
2424
import org.hibernate.type.descriptor.converter.spi.JpaAttributeConverter;
2525
import org.hibernate.type.descriptor.java.BasicJavaType;
@@ -167,7 +167,7 @@ else if ( !domainJtd.getMutabilityPlan().isMutable()
167167
return ImmutableMutabilityPlan.instance();
168168
}
169169
else {
170-
return new AttributeConverterMutabilityPlanImpl<>( converter, true );
170+
return new AttributeConverterMutabilityPlan<>( converter, true );
171171
}
172172
}
173173

hibernate-core/src/main/java/org/hibernate/internal/util/GenericsHelper.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,9 @@
1111
import java.util.Arrays;
1212
import java.util.List;
1313

14-
import jakarta.persistence.AttributeConverter;
15-
1614
public class GenericsHelper {
1715

18-
public static ParameterizedType extractParameterizedType(Type base) {
16+
public static ParameterizedType extractParameterizedType(Type base, Class<?> genericType) {
1917
if ( base == null ) {
2018
return null;
2119
}
@@ -32,12 +30,12 @@ public static ParameterizedType extractParameterizedType(Type base) {
3230
for ( Type type : types ) {
3331
type = resolveType( type, base );
3432
if ( type instanceof ParameterizedType parameterizedType ) {
35-
if ( AttributeConverter.class.equals( parameterizedType.getRawType() ) ) {
33+
if ( genericType.equals( parameterizedType.getRawType() ) ) {
3634
return parameterizedType;
3735
}
3836
}
3937

40-
final ParameterizedType parameterizedType = extractParameterizedType( type );
38+
final ParameterizedType parameterizedType = extractParameterizedType( type, genericType );
4139
if ( parameterizedType != null ) {
4240
return parameterizedType;
4341
}

hibernate-core/src/main/java/org/hibernate/query/results/internal/complete/CompleteResultBuilderBasicValuedConverted.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import org.hibernate.sql.results.graph.DomainResultCreationState;
1818
import org.hibernate.sql.results.graph.basic.BasicResult;
1919
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMetadata;
20-
import org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl;
20+
import org.hibernate.type.descriptor.converter.internal.AttributeConverterBean;
2121
import org.hibernate.type.descriptor.java.BasicJavaType;
2222
import org.hibernate.type.descriptor.java.JavaType;
2323

@@ -36,7 +36,7 @@
3636
public class CompleteResultBuilderBasicValuedConverted<O,R> implements CompleteResultBuilderBasicValued {
3737
private final String explicitColumnName;
3838
private final BasicValuedMapping underlyingMapping;
39-
private final JpaAttributeConverterImpl<O, R> valueConverter;
39+
private final AttributeConverterBean<O, R> valueConverter;
4040

4141
public CompleteResultBuilderBasicValuedConverted(
4242
String explicitColumnName,
@@ -49,7 +49,7 @@ public CompleteResultBuilderBasicValuedConverted(
4949
@SuppressWarnings("unchecked")
5050
final JavaType<R> relationalType =
5151
underlyingMapping.getJdbcMapping().getJavaTypeDescriptor();
52-
this.valueConverter = new JpaAttributeConverterImpl<>(
52+
this.valueConverter = new AttributeConverterBean<>(
5353
converterBean,
5454
converterJtd,
5555
domainJavaType,

hibernate-core/src/main/java/org/hibernate/query/results/internal/dynamic/DynamicResultBuilderBasicConverted.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import org.hibernate.sql.results.graph.basic.BasicResult;
1919
import org.hibernate.sql.results.jdbc.spi.JdbcValuesMetadata;
2020
import org.hibernate.type.BasicType;
21-
import org.hibernate.type.descriptor.converter.internal.JpaAttributeConverterImpl;
21+
import org.hibernate.type.descriptor.converter.internal.AttributeConverterBean;
2222
import org.hibernate.type.descriptor.converter.spi.BasicValueConverter;
2323
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
2424
import org.hibernate.type.spi.TypeConfiguration;
@@ -42,7 +42,7 @@ public DynamicResultBuilderBasicConverted(
4242
SessionFactoryImplementor sessionFactory) {
4343
this.columnAlias = columnAlias;
4444
final JavaTypeRegistry javaTypeRegistry = sessionFactory.getTypeConfiguration().getJavaTypeRegistry();
45-
this.basicValueConverter = new JpaAttributeConverterImpl<>(
45+
this.basicValueConverter = new AttributeConverterBean<>(
4646
new ProvidedInstanceManagedBeanImpl<>( converter ),
4747
javaTypeRegistry.getDescriptor( converter.getClass() ),
4848
javaTypeRegistry.getDescriptor( domainJavaType ),
@@ -59,7 +59,7 @@ public DynamicResultBuilderBasicConverted(
5959
this.columnAlias = columnAlias;
6060
final ManagedBeanRegistry beans = sessionFactory.getManagedBeanRegistry();
6161
final JavaTypeRegistry javaTypeRegistry = sessionFactory.getTypeConfiguration().getJavaTypeRegistry();
62-
this.basicValueConverter = new JpaAttributeConverterImpl<>(
62+
this.basicValueConverter = new AttributeConverterBean<>(
6363
beans.getBean( converterJavaType ),
6464
javaTypeRegistry.getDescriptor( converterJavaType ),
6565
javaTypeRegistry.getDescriptor( domainJavaType ),
Lines changed: 37 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -15,42 +15,48 @@
1515
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
1616
import org.hibernate.type.descriptor.java.spi.RegistryHelper;
1717

18+
import java.util.Objects;
19+
1820
/**
19-
* Standard implementation of {@link JpaAttributeConverter}.
21+
* Standard implementation of {@link JpaAttributeConverter} backed by
22+
* a {@link ManagedBean}.
23+
* <p>
24+
* JPA requires support for injection into {@link AttributeConverter}
25+
* instances via CDI.
2026
*
21-
* @see AttributeConverterMutabilityPlanImpl
27+
* @see AttributeConverterMutabilityPlan
2228
*
2329
* @author Steve Ebersole
2430
*/
25-
public class JpaAttributeConverterImpl<O,R> implements JpaAttributeConverter<O,R> {
31+
public final class AttributeConverterBean<O,R> implements JpaAttributeConverter<O,R> {
2632
private final ManagedBean<? extends AttributeConverter<O,R>> attributeConverterBean;
27-
private final JavaType<? extends AttributeConverter<O, R>> converterJtd;
28-
private final JavaType<O> domainJtd;
29-
private final JavaType<R> jdbcJtd;
33+
private final JavaType<? extends AttributeConverter<O, R>> converterJavaType;
34+
private final JavaType<O> domainJavaType;
35+
private final JavaType<R> jdbcJavaType;
3036

31-
public JpaAttributeConverterImpl(
37+
public AttributeConverterBean(
3238
ManagedBean<? extends AttributeConverter<O, R>> attributeConverterBean,
33-
JavaType<? extends AttributeConverter<O,R>> converterJtd,
34-
JavaType<O> domainJtd,
35-
JavaType<R> jdbcJtd) {
39+
JavaType<? extends AttributeConverter<O,R>> converterJavaType,
40+
JavaType<O> domainJavaType,
41+
JavaType<R> jdbcJavaType) {
3642
this.attributeConverterBean = attributeConverterBean;
37-
this.converterJtd = converterJtd;
38-
this.domainJtd = domainJtd;
39-
this.jdbcJtd = jdbcJtd;
43+
this.converterJavaType = converterJavaType;
44+
this.domainJavaType = domainJavaType;
45+
this.jdbcJavaType = jdbcJavaType;
4046
}
4147

42-
public JpaAttributeConverterImpl(
48+
public AttributeConverterBean(
4349
ManagedBean<? extends AttributeConverter<O,R>> attributeConverterBean,
44-
JavaType<? extends AttributeConverter<O,R>> converterJtd,
50+
JavaType<? extends AttributeConverter<O,R>> converterJavaType,
4551
Class<O> domainJavaType,
4652
Class<R> jdbcJavaType,
4753
JpaAttributeConverterCreationContext context) {
4854
this.attributeConverterBean = attributeConverterBean;
49-
this.converterJtd = converterJtd;
55+
this.converterJavaType = converterJavaType;
5056

5157
final JavaTypeRegistry jtdRegistry = context.getJavaTypeRegistry();
52-
jdbcJtd = jtdRegistry.getDescriptor( jdbcJavaType );
53-
domainJtd = jtdRegistry.resolveDescriptor( domainJavaType,
58+
this.jdbcJavaType = jtdRegistry.getDescriptor( jdbcJavaType );
59+
this.domainJavaType = jtdRegistry.resolveDescriptor( domainJavaType,
5460
() -> getTypeDescriptor( attributeConverterBean, domainJavaType, context ) );
5561
}
5662

@@ -74,7 +80,7 @@ private MutabilityPlan<O> getMutabilityPlan(
7480
context.getTypeConfiguration()
7581
);
7682
return mutabilityPlan == null
77-
? new AttributeConverterMutabilityPlanImpl<>( this, true )
83+
? new AttributeConverterMutabilityPlan<>( this, true )
7884
: mutabilityPlan;
7985
}
8086

@@ -111,48 +117,35 @@ public R toRelationalValue(O domainForm) {
111117

112118
@Override
113119
public JavaType<? extends AttributeConverter<O, R>> getConverterJavaType() {
114-
return converterJtd;
120+
return converterJavaType;
115121
}
116122

117123
@Override
118124
public JavaType<O> getDomainJavaType() {
119-
return domainJtd;
125+
return domainJavaType;
120126
}
121127

122128
@Override
123129
public JavaType<R> getRelationalJavaType() {
124-
return jdbcJtd;
130+
return jdbcJavaType;
125131
}
126132

127133
@Override
128-
public boolean equals(Object o) {
129-
if ( this == o ) {
134+
public boolean equals(Object object) {
135+
if ( this == object ) {
130136
return true;
131137
}
132-
if ( o == null || getClass() != o.getClass() ) {
133-
return false;
134-
}
135-
136-
JpaAttributeConverterImpl<?, ?> that = (JpaAttributeConverterImpl<?, ?>) o;
137-
138-
if ( !attributeConverterBean.equals( that.attributeConverterBean ) ) {
139-
return false;
140-
}
141-
if ( !converterJtd.equals( that.converterJtd ) ) {
142-
return false;
143-
}
144-
if ( !domainJtd.equals( that.domainJtd ) ) {
145-
return false;
138+
else {
139+
return object instanceof AttributeConverterBean<?, ?> that
140+
&& Objects.equals( this.attributeConverterBean, that.attributeConverterBean )
141+
&& Objects.equals( this.converterJavaType, that.converterJavaType )
142+
&& Objects.equals( this.domainJavaType, that.domainJavaType )
143+
&& Objects.equals( this.jdbcJavaType, that.jdbcJavaType );
146144
}
147-
return jdbcJtd.equals( that.jdbcJtd );
148145
}
149146

150147
@Override
151148
public int hashCode() {
152-
int result = attributeConverterBean.hashCode();
153-
result = 31 * result + converterJtd.hashCode();
154-
result = 31 * result + domainJtd.hashCode();
155-
result = 31 * result + jdbcJtd.hashCode();
156-
return result;
149+
return Objects.hash( attributeConverterBean, converterJavaType, domainJavaType, jdbcJavaType );
157150
}
158151
}
Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -9,25 +9,30 @@
99
import org.hibernate.type.descriptor.converter.spi.BasicValueConverter;
1010
import org.hibernate.type.descriptor.java.JavaType;
1111

12+
import java.util.Objects;
13+
1214
/**
15+
* Implementation of {@link BasicValueConverter} backed by an instance of
16+
* the JPA-standard {@link AttributeConverter}.
17+
* <p>
18+
* This is used as an adaptor for the {@code AttributeConverter} returned
19+
* by {@link org.hibernate.usertype.UserType#getValueConverter()}
20+
*
1321
* @author Gavin King
1422
* @since 7.0
1523
*/
16-
public class AttributeConverterWrapper<O,R> implements BasicValueConverter<O,R> {
24+
public final class AttributeConverterInstance<O,R> implements BasicValueConverter<O,R> {
1725
private final AttributeConverter<O,R> converter;
18-
private final JavaType<? extends AttributeConverter<O, R>> converterJtd;
19-
private final JavaType<O> domainJtd;
20-
private final JavaType<R> jdbcJtd;
26+
private final JavaType<O> domainJavaType;
27+
private final JavaType<R> jdbcJavaType;
2128

22-
public AttributeConverterWrapper(
29+
public AttributeConverterInstance(
2330
AttributeConverter<O, R> converter,
24-
JavaType<? extends AttributeConverter<O,R>> converterJtd,
25-
JavaType<O> domainJtd,
26-
JavaType<R> jdbcJtd) {
31+
JavaType<O> domainJavaType,
32+
JavaType<R> jdbcJavaType) {
2733
this.converter = converter;
28-
this.converterJtd = converterJtd;
29-
this.domainJtd = domainJtd;
30-
this.jdbcJtd = jdbcJtd;
34+
this.domainJavaType = domainJavaType;
35+
this.jdbcJavaType = jdbcJavaType;
3136
}
3237

3338
@Override
@@ -58,43 +63,29 @@ public R toRelationalValue(O domainForm) {
5863

5964
@Override
6065
public JavaType<O> getDomainJavaType() {
61-
return domainJtd;
66+
return domainJavaType;
6267
}
6368

6469
@Override
6570
public JavaType<R> getRelationalJavaType() {
66-
return jdbcJtd;
71+
return jdbcJavaType;
6772
}
6873

6974
@Override
70-
public boolean equals(Object o) {
71-
if ( this == o ) {
75+
public boolean equals(Object object) {
76+
if ( this == object ) {
7277
return true;
7378
}
74-
if ( o == null || getClass() != o.getClass() ) {
75-
return false;
76-
}
77-
78-
AttributeConverterWrapper<?, ?> that = (AttributeConverterWrapper<?, ?>) o;
79-
80-
if ( !converter.equals( that.converter ) ) {
81-
return false;
82-
}
83-
if ( !converterJtd.equals( that.converterJtd ) ) {
84-
return false;
85-
}
86-
if ( !domainJtd.equals( that.domainJtd ) ) {
87-
return false;
79+
else {
80+
return object instanceof AttributeConverterInstance<?, ?> that
81+
&& Objects.equals( this.converter, that.converter )
82+
&& Objects.equals( this.domainJavaType, that.domainJavaType )
83+
&& Objects.equals( this.jdbcJavaType, that.jdbcJavaType );
8884
}
89-
return jdbcJtd.equals( that.jdbcJtd );
9085
}
9186

9287
@Override
9388
public int hashCode() {
94-
int result = converter.hashCode();
95-
result = 31 * result + converterJtd.hashCode();
96-
result = 31 * result + domainJtd.hashCode();
97-
result = 31 * result + jdbcJtd.hashCode();
98-
return result;
89+
return Objects.hash( converter, domainJavaType, jdbcJavaType );
9990
}
10091
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@
4040
*
4141
* @author Steve Ebersole
4242
*/
43-
public class AttributeConverterMutabilityPlanImpl<T,S> extends MutableMutabilityPlan<T> {
43+
public final class AttributeConverterMutabilityPlan<T,S> extends MutableMutabilityPlan<T> {
4444
private final JpaAttributeConverter<T,S> converter;
4545
private final boolean mutable;
4646

47-
public AttributeConverterMutabilityPlanImpl(JpaAttributeConverter<T,S> converter, boolean mutable) {
47+
public AttributeConverterMutabilityPlan(JpaAttributeConverter<T,S> converter, boolean mutable) {
4848
this.converter = converter;
4949
this.mutable = mutable;
5050
}

0 commit comments

Comments
 (0)