Skip to content

Commit e409264

Browse files
marko-bekhtagsmet
authored andcommitted
HV-1623 Add additional checks before casting
1 parent a9c4de8 commit e409264

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

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

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

9+
import java.lang.invoke.MethodHandles;
910
import java.lang.reflect.Type;
1011
import java.util.ArrayDeque;
1112
import java.util.Collections;
@@ -40,6 +41,8 @@
4041
import org.hibernate.validator.internal.properties.javabean.JavaBeanGetter;
4142
import org.hibernate.validator.internal.util.CollectionHelper;
4243
import org.hibernate.validator.internal.util.TypeResolutionHelper;
44+
import org.hibernate.validator.internal.util.logging.Log;
45+
import org.hibernate.validator.internal.util.logging.LoggerFactory;
4346
import org.hibernate.validator.internal.util.stereotypes.Immutable;
4447

4548
/**
@@ -60,6 +63,8 @@
6063
*/
6164
public class PropertyMetaData extends AbstractConstraintMetaData {
6265

66+
private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() );
67+
6368
@Immutable
6469
private final Set<Cascadable> cascadables;
6570

@@ -221,10 +226,20 @@ public final void add(ConstrainedElement constrainedElement) {
221226

222227
private Optional<Constrainable> getConstrainableFromConstrainedElement(ConstrainedElement constrainedElement) {
223228
if ( constrainedElement.getKind() == ConstrainedElementKind.FIELD ) {
224-
return Optional.of( ( (ConstrainedField) constrainedElement ).getProperty() );
229+
if ( constrainedElement instanceof ConstrainedField ) {
230+
return Optional.of( ( (ConstrainedField) constrainedElement ).getProperty() );
231+
}
232+
else {
233+
LOG.getUnexpectedConstraintElementType( ConstrainedField.class, constrainedElement.getClass() );
234+
}
225235
}
226236
else if ( constrainedElement.getKind() == ConstrainedElementKind.METHOD ) {
227-
return Optional.of( ( (ConstrainedExecutable) constrainedElement ).getCallable() );
237+
if ( constrainedElement instanceof ConstrainedExecutable ) {
238+
return Optional.of( ( (ConstrainedExecutable) constrainedElement ).getCallable() );
239+
}
240+
else {
241+
LOG.getUnexpectedConstraintElementType( ConstrainedExecutable.class, constrainedElement.getClass() );
242+
}
228243
}
229244
return Optional.empty();
230245
}

engine/src/main/java/org/hibernate/validator/internal/util/logging/Log.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@
6363
import org.hibernate.validator.spi.scripting.ScriptEvaluationException;
6464
import org.hibernate.validator.spi.scripting.ScriptEvaluatorFactory;
6565
import org.hibernate.validator.spi.scripting.ScriptEvaluatorNotFoundException;
66+
6667
import org.jboss.logging.BasicLogger;
6768
import org.jboss.logging.annotations.Cause;
6869
import org.jboss.logging.annotations.FormatWith;
@@ -857,4 +858,7 @@ ConstraintDefinitionException getConstraintValidatorDefinitionConstraintMismatch
857858
@FormatWith(ClassObjectFormatter.class) Class<? extends ConstraintValidator<?, ?>> constraintValidatorImplementationType,
858859
@FormatWith(ClassObjectFormatter.class) Class<? extends Annotation> registeredConstraintAnnotationType,
859860
@FormatWith(TypeFormatter.class) Type declaredConstraintAnnotationType);
861+
862+
@Message(id = 244, value = "ConstrainedElement expected class was %1$s, but instead received %2$s.")
863+
AssertionError getUnexpectedConstraintElementType(@FormatWith(ClassObjectFormatter.class) Class<?> expecting, @FormatWith(ClassObjectFormatter.class) Class<?> got);
860864
}

0 commit comments

Comments
 (0)