Skip to content

Commit 64d74a9

Browse files
committed
HV-1831 Push Vote -> boolean to a single place
Signed-off-by: marko-bekhta <[email protected]>
1 parent c00dab8 commit 64d74a9

File tree

3 files changed

+35
-77
lines changed

3 files changed

+35
-77
lines changed

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

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -281,17 +281,7 @@ else if ( constraintMetaData.getKind() == ElementKind.BEAN ) {
281281
this.resolvedDefaultGroupSequence = getDefaultGroupSequence( null );
282282

283283
Vote processedBeansTrackingVote = processedBeansTrackingVoter.isEnabledForBean( beanClass, hasCascadables() );
284-
switch ( processedBeansTrackingVote ) {
285-
case NON_TRACKING:
286-
this.trackingEnabled = false;
287-
break;
288-
case TRACKING:
289-
this.trackingEnabled = true;
290-
break;
291-
default:
292-
this.trackingEnabled = hasCascadables();
293-
break;
294-
}
284+
this.trackingEnabled = Vote.voteToTracking( processedBeansTrackingVote, this::hasCascadables );
295285
}
296286

297287
public BeanMetaDataImpl(BeanMetaDataImpl<T> originalBeanMetaData, ProcessedBeansTrackingStrategy processedBeansTrackingStrategy,
@@ -322,17 +312,7 @@ public BeanMetaDataImpl(BeanMetaDataImpl<T> originalBeanMetaData, ProcessedBeans
322312
this.resolvedDefaultGroupSequence = originalBeanMetaData.resolvedDefaultGroupSequence;
323313

324314
Vote processedBeansTrackingVote = processedBeansTrackingVoter.isEnabledForBean( beanClass, hasCascadables() );
325-
switch ( processedBeansTrackingVote ) {
326-
case NON_TRACKING:
327-
this.trackingEnabled = false;
328-
break;
329-
case TRACKING:
330-
this.trackingEnabled = true;
331-
break;
332-
default:
333-
this.trackingEnabled = processedBeansTrackingStrategy.isEnabledForBean( this.beanClass, hasCascadables() );
334-
break;
335-
}
315+
this.trackingEnabled = Vote.voteToTracking( processedBeansTrackingVote, () -> processedBeansTrackingStrategy.isEnabledForBean( this.beanClass, hasCascadables() ) );
336316
}
337317

338318
@Override

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

Lines changed: 23 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -125,31 +125,11 @@ private ExecutableMetaData(
125125

126126
Vote processedBeansTrackingVoteForParameters = processedBeansTrackingVoter.isEnabledForParameters( beanClass, name, parameterTypes,
127127
validatableParametersMetaData.hasCascadables() );
128-
switch ( processedBeansTrackingVoteForParameters ) {
129-
case NON_TRACKING:
130-
this.trackingEnabledForParameters = false;
131-
break;
132-
case TRACKING:
133-
this.trackingEnabledForParameters = true;
134-
break;
135-
default:
136-
this.trackingEnabledForParameters = validatableParametersMetaData.hasCascadables();
137-
break;
138-
}
128+
this.trackingEnabledForParameters = Vote.voteToTracking( processedBeansTrackingVoteForParameters, validatableParametersMetaData::hasCascadables );
139129

140130
Vote processedBeansTrackingVoteForReturnValue = processedBeansTrackingVoter.isEnabledForReturnValue( beanClass, name, parameterTypes,
141131
returnValueMetaData.hasCascadables() );
142-
switch ( processedBeansTrackingVoteForReturnValue ) {
143-
case NON_TRACKING:
144-
this.trackingEnabledForReturnValue = false;
145-
break;
146-
case TRACKING:
147-
this.trackingEnabledForReturnValue = true;
148-
break;
149-
default:
150-
this.trackingEnabledForReturnValue = returnValueMetaData.hasCascadables();
151-
break;
152-
}
132+
this.trackingEnabledForReturnValue = Vote.voteToTracking( processedBeansTrackingVoteForReturnValue, returnValueMetaData::hasCascadables );
153133
}
154134

155135
public ExecutableMetaData(ExecutableMetaData originalExecutableMetaData,
@@ -169,43 +149,31 @@ public ExecutableMetaData(ExecutableMetaData originalExecutableMetaData,
169149

170150
Vote processedBeansTrackingVoteForParameters = processedBeansTrackingVoter.isEnabledForParameters( originalExecutableMetaData.beanClass,
171151
originalExecutableMetaData.getName(), parameterTypes, originalExecutableMetaData.getValidatableParametersMetaData().hasCascadables() );
172-
switch ( processedBeansTrackingVoteForParameters ) {
173-
case NON_TRACKING:
174-
this.trackingEnabledForParameters = false;
175-
break;
176-
case TRACKING:
177-
this.trackingEnabledForParameters = true;
178-
break;
179-
default:
180-
boolean trackingEnabledForParameters = false;
181-
for ( Signature signature : originalExecutableMetaData.getSignatures() ) {
182-
trackingEnabledForParameters = trackingEnabledForParameters
183-
|| processedBeansTrackingStrategy.isEnabledForParameters( signature,
184-
originalExecutableMetaData.getValidatableParametersMetaData().hasCascadables() );
185-
}
186-
this.trackingEnabledForParameters = trackingEnabledForParameters;
187-
break;
188-
}
152+
this.trackingEnabledForParameters =
153+
Vote.voteToTracking( processedBeansTrackingVoteForParameters, () -> originalExecutableMetaData.trackingEnabledForParameters( processedBeansTrackingStrategy ) );
189154

190155
Vote processedBeansTrackingVoteForReturnValue = processedBeansTrackingVoter.isEnabledForReturnValue( originalExecutableMetaData.beanClass,
191156
originalExecutableMetaData.getName(), parameterTypes, originalExecutableMetaData.getReturnValueMetaData().hasCascadables() );
192-
switch ( processedBeansTrackingVoteForReturnValue ) {
193-
case NON_TRACKING:
194-
this.trackingEnabledForReturnValue = false;
195-
break;
196-
case TRACKING:
197-
this.trackingEnabledForReturnValue = true;
198-
break;
199-
default:
200-
boolean trackingEnabledForReturnValue = false;
201-
for ( Signature signature : originalExecutableMetaData.getSignatures() ) {
202-
trackingEnabledForReturnValue = trackingEnabledForReturnValue
203-
|| processedBeansTrackingStrategy.isEnabledForReturnValue( signature,
204-
originalExecutableMetaData.getReturnValueMetaData().hasCascadables() );
205-
}
206-
this.trackingEnabledForReturnValue = trackingEnabledForReturnValue;
207-
break;
157+
this.trackingEnabledForReturnValue =
158+
Vote.voteToTracking( processedBeansTrackingVoteForReturnValue, () -> originalExecutableMetaData.trackingEnabledForReturnValue( processedBeansTrackingStrategy ) );
159+
}
160+
161+
private boolean trackingEnabledForParameters(ProcessedBeansTrackingStrategy processedBeansTrackingStrategy) {
162+
boolean trackingEnabledForParameters = false;
163+
for ( Signature signature : getSignatures() ) {
164+
trackingEnabledForParameters = trackingEnabledForParameters
165+
|| processedBeansTrackingStrategy.isEnabledForParameters( signature, getValidatableParametersMetaData().hasCascadables() );
166+
}
167+
return trackingEnabledForParameters;
168+
}
169+
170+
private boolean trackingEnabledForReturnValue(ProcessedBeansTrackingStrategy processedBeansTrackingStrategy) {
171+
boolean trackingEnabledForReturnValue = false;
172+
for ( Signature signature : getSignatures() ) {
173+
trackingEnabledForReturnValue = trackingEnabledForReturnValue
174+
|| processedBeansTrackingStrategy.isEnabledForReturnValue( signature, getReturnValueMetaData().hasCascadables() );
208175
}
176+
return trackingEnabledForReturnValue;
209177
}
210178

211179
/**

engine/src/main/java/org/hibernate/validator/spi/tracking/ProcessedBeansTrackingVoter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
*/
55
package org.hibernate.validator.spi.tracking;
66

7+
import java.util.function.BooleanSupplier;
8+
79
import org.hibernate.validator.Incubating;
810

911
@Incubating
@@ -18,5 +20,13 @@ public interface ProcessedBeansTrackingVoter {
1820
enum Vote {
1921

2022
DEFAULT, NON_TRACKING, TRACKING;
23+
24+
public static boolean voteToTracking(Vote vote, BooleanSupplier processedByDefault) {
25+
return switch ( vote ) {
26+
case NON_TRACKING -> false;
27+
case TRACKING -> true;
28+
default -> processedByDefault.getAsBoolean();
29+
};
30+
}
2131
}
2232
}

0 commit comments

Comments
 (0)