Skip to content

Commit 6d7b067

Browse files
committed
HV-1623 Introduce Field and Getter as subclasses of Property
1 parent ce6f342 commit 6d7b067

20 files changed

+120
-77
lines changed

engine/src/main/java/org/hibernate/validator/internal/cfg/context/AbstractPropertyConstraintMappingContextImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ protected AbstractPropertyConstraintMappingContextImpl(TypeConstraintMappingCont
4646
}
4747

4848
@Override
49-
protected AbstractPropertyConstraintMappingContextImpl getThis() {
49+
protected AbstractPropertyConstraintMappingContextImpl<?> getThis() {
5050
return this;
5151
}
5252

engine/src/main/java/org/hibernate/validator/internal/cfg/context/TypeConstraintMappingContextImpl.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ public final class TypeConstraintMappingContextImpl<C> extends ConstraintMapping
6969
private final Class<C> beanClass;
7070

7171
private final Set<ExecutableConstraintMappingContextImpl> executableContexts = newHashSet();
72-
private final Set<AbstractPropertyConstraintMappingContextImpl> propertyContexts = newHashSet();
72+
private final Set<AbstractPropertyConstraintMappingContextImpl<?>> propertyContexts = newHashSet();
7373
private final Set<Constrainable> configuredMembers = newHashSet();
7474

7575
private List<Class<?>> defaultGroupSequence;
@@ -146,7 +146,7 @@ public PropertyConstraintMappingContext field(String property) {
146146
throw LOG.getPropertyHasAlreadyBeConfiguredViaProgrammaticApiException( beanClass, property );
147147
}
148148

149-
AbstractPropertyConstraintMappingContextImpl context = new FieldConstraintMappingContextImpl( this, javaBeanField );
149+
FieldConstraintMappingContextImpl context = new FieldConstraintMappingContextImpl( this, javaBeanField );
150150
configuredMembers.add( javaBeanField );
151151
propertyContexts.add( context );
152152
return context;
@@ -166,7 +166,7 @@ public PropertyConstraintMappingContext getter(String property) {
166166
throw LOG.getPropertyHasAlreadyBeConfiguredViaProgrammaticApiException( beanClass, property );
167167
}
168168

169-
AbstractPropertyConstraintMappingContextImpl context = new GetterConstraintMappingContextImpl( this, javaBeanGetter );
169+
GetterConstraintMappingContextImpl context = new GetterConstraintMappingContextImpl( this, javaBeanGetter );
170170
configuredMembers.add( javaBeanGetter );
171171
propertyContexts.add( context );
172172
return context;
@@ -258,7 +258,7 @@ private Set<ConstrainedElement> buildConstraintElements(ConstraintHelper constra
258258
}
259259

260260
//properties
261-
for ( AbstractPropertyConstraintMappingContextImpl propertyContext : propertyContexts ) {
261+
for ( AbstractPropertyConstraintMappingContextImpl<?> propertyContext : propertyContexts ) {
262262
elements.add( propertyContext.build( constraintHelper, typeResolutionHelper, valueExtractorManager ) );
263263
}
264264

engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/PropertyValidationContext.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ private String getPropertyName(ConstraintLocation location) {
7272
}
7373

7474
if ( location instanceof AbstractPropertyConstraintLocation ) {
75-
return ( (AbstractPropertyConstraintLocation) location ).getPropertyName();
75+
return ( (AbstractPropertyConstraintLocation<?>) location ).getPropertyName();
7676
}
7777

7878
return null;

engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/AbstractPropertyCascadable.java

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
import org.hibernate.validator.internal.engine.path.PathImpl;
1212
import org.hibernate.validator.internal.engine.valueextraction.ValueExtractorManager;
1313
import org.hibernate.validator.internal.metadata.facets.Cascadable;
14-
import org.hibernate.validator.internal.metadata.raw.ConstrainedElement.ConstrainedElementKind;
14+
import org.hibernate.validator.internal.properties.Field;
15+
import org.hibernate.validator.internal.properties.Getter;
1516
import org.hibernate.validator.internal.properties.Property;
1617

1718
/**
@@ -20,13 +21,13 @@
2021
* @author Gunnar Morling
2122
* @author Marko Bekhta
2223
*/
23-
public abstract class AbstractPropertyCascadable implements Cascadable {
24+
public abstract class AbstractPropertyCascadable<T extends Property> implements Cascadable {
2425

25-
private final Property property;
26+
private final T property;
2627
private final Type cascadableType;
2728
private final CascadingMetaData cascadingMetaData;
2829

29-
AbstractPropertyCascadable(Property property, CascadingMetaData cascadingMetaData) {
30+
AbstractPropertyCascadable(T property, CascadingMetaData cascadingMetaData) {
3031
this.property = property;
3132
this.cascadableType = property.getType();
3233
this.cascadingMetaData = cascadingMetaData;
@@ -52,13 +53,13 @@ public CascadingMetaData getCascadingMetaData() {
5253
return cascadingMetaData;
5354
}
5455

55-
public abstract static class Builder implements Cascadable.Builder {
56+
public abstract static class AbstractBuilder<T extends Property> implements Cascadable.Builder {
5657

5758
private final ValueExtractorManager valueExtractorManager;
58-
private final Property property;
59+
private final T property;
5960
private CascadingMetaDataBuilder cascadingMetaDataBuilder;
6061

61-
protected Builder(ValueExtractorManager valueExtractorManager, Property property, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
62+
protected AbstractBuilder(ValueExtractorManager valueExtractorManager, T property, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
6263
this.valueExtractorManager = valueExtractorManager;
6364
this.property = property;
6465
this.cascadingMetaDataBuilder = cascadingMetaDataBuilder;
@@ -74,14 +75,15 @@ public Cascadable build() {
7475
return create( property, cascadingMetaDataBuilder.build( valueExtractorManager, property ) );
7576
}
7677

77-
protected abstract Cascadable create(Property property, CascadingMetaData build);
78+
protected abstract Cascadable create(T property, CascadingMetaData build);
7879

79-
public static Cascadable.Builder builder(ConstrainedElementKind constrainedElementKind, ValueExtractorManager valueExtractorManager, Property property, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
80-
if ( ConstrainedElementKind.FIELD == constrainedElementKind ) {
81-
return new FieldCascadable.Builder( valueExtractorManager, property, cascadingMetaDataBuilder );
80+
public static Cascadable.Builder builder(ValueExtractorManager valueExtractorManager, Property property,
81+
CascadingMetaDataBuilder cascadingMetaDataBuilder) {
82+
if ( property instanceof Field ) {
83+
return new FieldCascadable.Builder( valueExtractorManager, (Field) property, cascadingMetaDataBuilder );
8284
}
83-
else if ( ConstrainedElementKind.GETTER == constrainedElementKind ) {
84-
return new GetterCascadable.Builder( valueExtractorManager, property, cascadingMetaDataBuilder );
85+
else if ( property instanceof Getter ) {
86+
return new GetterCascadable.Builder( valueExtractorManager, (Getter) property, cascadingMetaDataBuilder );
8587
}
8688
throw new IllegalStateException( "It should be either a field or a getter." );
8789
}

engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/FieldCascadable.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,34 @@
99
import org.hibernate.validator.internal.engine.valueextraction.ValueExtractorManager;
1010
import org.hibernate.validator.internal.metadata.facets.Cascadable;
1111
import org.hibernate.validator.internal.metadata.location.ConstraintLocation.ConstraintLocationKind;
12-
import org.hibernate.validator.internal.properties.Property;
12+
import org.hibernate.validator.internal.properties.Field;
1313

1414
/**
1515
* A {@link Cascadable} backed by a field of a Java bean.
1616
*
1717
* @author Gunnar Morling
1818
* @author Marko Bekhta
1919
*/
20-
public class FieldCascadable extends AbstractPropertyCascadable {
20+
public class FieldCascadable extends AbstractPropertyCascadable<Field> {
2121

22-
FieldCascadable(Property property, CascadingMetaData cascadingMetaData) {
23-
super( property, cascadingMetaData );
22+
FieldCascadable(Field field, CascadingMetaData cascadingMetaData) {
23+
super( field, cascadingMetaData );
2424
}
2525

2626
@Override
2727
public ConstraintLocationKind getConstraintLocationKind() {
2828
return ConstraintLocationKind.FIELD;
2929
}
3030

31-
public static class Builder extends AbstractPropertyCascadable.Builder {
31+
public static class Builder extends AbstractPropertyCascadable.AbstractBuilder<Field> {
3232

33-
protected Builder(ValueExtractorManager valueExtractorManager, Property property, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
34-
super( valueExtractorManager, property, cascadingMetaDataBuilder );
33+
protected Builder(ValueExtractorManager valueExtractorManager, Field field, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
34+
super( valueExtractorManager, field, cascadingMetaDataBuilder );
3535
}
3636

3737
@Override
38-
protected Cascadable create(Property property, CascadingMetaData cascadingMetaData) {
39-
return new FieldCascadable( property, cascadingMetaData );
38+
protected Cascadable create(Field field, CascadingMetaData cascadingMetaData) {
39+
return new FieldCascadable( field, cascadingMetaData );
4040
}
4141
}
4242
}

engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/GetterCascadable.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,34 +9,34 @@
99
import org.hibernate.validator.internal.engine.valueextraction.ValueExtractorManager;
1010
import org.hibernate.validator.internal.metadata.facets.Cascadable;
1111
import org.hibernate.validator.internal.metadata.location.ConstraintLocation.ConstraintLocationKind;
12-
import org.hibernate.validator.internal.properties.Property;
12+
import org.hibernate.validator.internal.properties.Getter;
1313

1414
/**
1515
* A {@link Cascadable} backed by a getter of a Java bean.
1616
*
1717
* @author Gunnar Morling
1818
* @author Marko Bekhta
1919
*/
20-
public class GetterCascadable extends AbstractPropertyCascadable {
20+
public class GetterCascadable extends AbstractPropertyCascadable<Getter> {
2121

22-
GetterCascadable(Property property, CascadingMetaData cascadingMetaData) {
23-
super( property, cascadingMetaData );
22+
GetterCascadable(Getter getter, CascadingMetaData cascadingMetaData) {
23+
super( getter, cascadingMetaData );
2424
}
2525

2626
@Override
2727
public ConstraintLocationKind getConstraintLocationKind() {
2828
return ConstraintLocationKind.GETTER;
2929
}
3030

31-
public static class Builder extends AbstractPropertyCascadable.Builder {
31+
public static class Builder extends AbstractPropertyCascadable.AbstractBuilder<Getter> {
3232

33-
protected Builder(ValueExtractorManager valueExtractorManager, Property property, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
34-
super( valueExtractorManager, property, cascadingMetaDataBuilder );
33+
protected Builder(ValueExtractorManager valueExtractorManager, Getter getter, CascadingMetaDataBuilder cascadingMetaDataBuilder) {
34+
super( valueExtractorManager, getter, cascadingMetaDataBuilder );
3535
}
3636

3737
@Override
38-
protected Cascadable create(Property property, CascadingMetaData cascadingMetaData) {
39-
return new GetterCascadable( property, cascadingMetaData );
38+
protected Cascadable create(Getter getter, CascadingMetaData cascadingMetaData) {
39+
return new GetterCascadable( getter, cascadingMetaData );
4040
}
4141
}
4242
}

engine/src/main/java/org/hibernate/validator/internal/metadata/aggregated/PropertyMetaData.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -162,8 +162,8 @@ public Builder(Class<?> beanClass, ConstrainedField constrainedProperty, Constra
162162
ValueExtractorManager valueExtractorManager) {
163163
super( beanClass, constraintHelper, typeResolutionHelper, valueExtractorManager );
164164

165-
this.propertyName = constrainedProperty.getProperty().getName();
166-
this.propertyType = constrainedProperty.getProperty().getType();
165+
this.propertyName = constrainedProperty.getField().getName();
166+
this.propertyType = constrainedProperty.getField().getType();
167167
add( constrainedProperty );
168168
}
169169

@@ -198,7 +198,8 @@ public final void add(ConstrainedElement constrainedElement) {
198198
Property property = constrainable.get().as( Property.class );
199199
Cascadable.Builder builder = cascadableBuilders.get( property );
200200
if ( builder == null ) {
201-
builder = AbstractPropertyCascadable.Builder.builder( constrainedElement.getKind(), valueExtractorManager, property, constrainedElement.getCascadingMetaDataBuilder() );
201+
builder = AbstractPropertyCascadable.AbstractBuilder.builder( valueExtractorManager, property,
202+
constrainedElement.getCascadingMetaDataBuilder() );
202203
cascadableBuilders.put( property, builder );
203204
}
204205
else {
@@ -211,7 +212,7 @@ public final void add(ConstrainedElement constrainedElement) {
211212
private Optional<Constrainable> getConstrainableFromConstrainedElement(ConstrainedElement constrainedElement) {
212213
if ( constrainedElement.getKind() == ConstrainedElementKind.FIELD ) {
213214
if ( constrainedElement instanceof ConstrainedField ) {
214-
return Optional.of( ( (ConstrainedField) constrainedElement ).getProperty() );
215+
return Optional.of( ( (ConstrainedField) constrainedElement ).getField() );
215216
}
216217
else {
217218
LOG.getUnexpectedConstraintElementType( ConstrainedField.class, constrainedElement.getClass() );
@@ -298,7 +299,7 @@ private MetaConstraint<?> withGetterLocation(ConstraintLocation getterConstraint
298299

299300
private String getPropertyName(ConstrainedElement constrainedElement) {
300301
if ( constrainedElement.getKind() == ConstrainedElementKind.FIELD ) {
301-
return ( (ConstrainedField) constrainedElement ).getProperty().getPropertyName();
302+
return ( (ConstrainedField) constrainedElement ).getField().getPropertyName();
302303
}
303304
else if ( constrainedElement.getKind() == ConstrainedElementKind.GETTER ) {
304305
return ( (ConstrainedExecutable) constrainedElement ).getCallable().as( Property.class ).getPropertyName();

engine/src/main/java/org/hibernate/validator/internal/metadata/location/AbstractPropertyConstraintLocation.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,14 @@
1818
* @author Marko Bekhta
1919
* @author Guillaume Smet
2020
*/
21-
public abstract class AbstractPropertyConstraintLocation implements ConstraintLocation {
21+
public abstract class AbstractPropertyConstraintLocation<T extends Property> implements ConstraintLocation {
2222

2323
/**
24-
* The member the constraint was defined on.
24+
* The property the constraint was defined on.
2525
*/
26-
private final Property property;
26+
private final T property;
2727

28-
AbstractPropertyConstraintLocation(Property property) {
28+
AbstractPropertyConstraintLocation(T property) {
2929
this.property = property;
3030
}
3131

@@ -35,7 +35,7 @@ public Class<?> getDeclaringClass() {
3535
}
3636

3737
@Override
38-
public Property getConstrainable() {
38+
public T getConstrainable() {
3939
return property;
4040
}
4141

@@ -72,7 +72,7 @@ public boolean equals(Object o) {
7272
return false;
7373
}
7474

75-
AbstractPropertyConstraintLocation that = (AbstractPropertyConstraintLocation) o;
75+
AbstractPropertyConstraintLocation<?> that = (AbstractPropertyConstraintLocation<?>) o;
7676

7777
if ( !property.equals( that.property ) ) {
7878
return false;

engine/src/main/java/org/hibernate/validator/internal/metadata/location/ConstraintLocation.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
import org.hibernate.validator.internal.metadata.raw.ConstrainedElement.ConstrainedElementKind;
1616
import org.hibernate.validator.internal.properties.Callable;
1717
import org.hibernate.validator.internal.properties.Constrainable;
18-
import org.hibernate.validator.internal.properties.javabean.JavaBeanField;
19-
import org.hibernate.validator.internal.properties.javabean.JavaBeanGetter;
18+
import org.hibernate.validator.internal.properties.Field;
19+
import org.hibernate.validator.internal.properties.Getter;
2020
import org.hibernate.validator.internal.util.ExecutableParameterNameProvider;
2121

2222
/**
@@ -42,11 +42,11 @@ static ConstraintLocation forClass(Class<?> declaringClass) {
4242
return new BeanConstraintLocation( declaringClass );
4343
}
4444

45-
static ConstraintLocation forField(JavaBeanField field) {
45+
static ConstraintLocation forField(Field field) {
4646
return new FieldConstraintLocation( field );
4747
}
4848

49-
static ConstraintLocation forGetter(JavaBeanGetter getter) {
49+
static ConstraintLocation forGetter(Getter getter) {
5050
return new GetterConstraintLocation( getter );
5151
}
5252

engine/src/main/java/org/hibernate/validator/internal/metadata/location/FieldConstraintLocation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
*/
77
package org.hibernate.validator.internal.metadata.location;
88

9-
import org.hibernate.validator.internal.properties.Property;
9+
import org.hibernate.validator.internal.properties.Field;
1010

1111
/**
1212
* Field property constraint location.
1313
*
1414
* @author Marko Bekhta
1515
*/
16-
public class FieldConstraintLocation extends AbstractPropertyConstraintLocation {
16+
public class FieldConstraintLocation extends AbstractPropertyConstraintLocation<Field> {
1717

18-
FieldConstraintLocation(Property field) {
18+
FieldConstraintLocation(Field field) {
1919
super( field );
2020
}
2121

engine/src/main/java/org/hibernate/validator/internal/metadata/location/GetterConstraintLocation.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,16 @@
66
*/
77
package org.hibernate.validator.internal.metadata.location;
88

9-
import org.hibernate.validator.internal.properties.Property;
9+
import org.hibernate.validator.internal.properties.Getter;
1010

1111
/**
1212
* Getter property constraint location.
1313
*
1414
* @author Marko Bekhta
1515
*/
16-
public class GetterConstraintLocation extends AbstractPropertyConstraintLocation {
16+
public class GetterConstraintLocation extends AbstractPropertyConstraintLocation<Getter> {
1717

18-
GetterConstraintLocation(Property getter) {
18+
GetterConstraintLocation(Getter getter) {
1919
super( getter );
2020
}
2121

0 commit comments

Comments
 (0)