From 58bbc0b0406a4530d9a6d70896fc2ea57d80ef6f Mon Sep 17 00:00:00 2001
From: Yanming Zhou <zhouyanming@gmail.com>
Date: Mon, 11 Mar 2024 15:36:42 +0800
Subject: [PATCH] Polishing Optional usage

---
 .../org/hibernate/validator/cdi/ValidationExtension.java  | 7 +------
 .../cfg/context/TypeConstraintMappingContextImpl.java     | 8 ++++----
 .../validator/internal/engine/ValidatorImpl.java          | 4 ++--
 .../constraintvalidation/ComposingConstraintTree.java     | 8 +++-----
 .../ParameterExecutableValidationContext.java             | 2 +-
 .../ReturnValueExecutableValidationContext.java           | 2 +-
 .../engine/valueextraction/OptionalValueExtractor.java    | 2 +-
 .../internal/xml/config/ValidationConfigStaxBuilder.java  | 4 +---
 .../mapping/AbstractConstrainedElementStaxBuilder.java    | 2 +-
 .../AbstractConstrainedExecutableElementStaxBuilder.java  | 2 +-
 .../xml/mapping/ClassConstraintTypeStaxBuilder.java       | 7 +------
 .../xml/mapping/ConstrainedConstructorStaxBuilder.java    | 7 +------
 .../internal/xml/mapping/ConstrainedFieldStaxBuilder.java | 7 +------
 .../xml/mapping/ConstrainedGetterStaxBuilder.java         | 7 +------
 .../xml/mapping/ConstrainedMethodStaxBuilder.java         | 7 +------
 .../xml/mapping/ConstrainedParameterStaxBuilder.java      | 8 +-------
 .../internal/xml/mapping/ConstraintTypeStaxBuilder.java   | 4 +---
 .../xml/mapping/ContainerElementTypeStaxBuilder.java      | 4 +---
 .../internal/xml/mapping/CrossParameterStaxBuilder.java   | 7 +------
 .../internal/xml/mapping/ReturnValueStaxBuilder.java      | 7 +------
 20 files changed, 26 insertions(+), 80 deletions(-)

diff --git a/cdi/src/main/java/org/hibernate/validator/cdi/ValidationExtension.java b/cdi/src/main/java/org/hibernate/validator/cdi/ValidationExtension.java
index fb50e2f750..c25bdba65f 100644
--- a/cdi/src/main/java/org/hibernate/validator/cdi/ValidationExtension.java
+++ b/cdi/src/main/java/org/hibernate/validator/cdi/ValidationExtension.java
@@ -280,12 +280,7 @@ private <T> void determineConstrainedMethods(AnnotatedType<T> type, BeanDescript
 			}
 
 			boolean needsValidation;
-			if ( correspondingProperty.isPresent() ) {
-				needsValidation = isGetterConstrained( beanDescriptor, method, correspondingProperty.get() );
-			}
-			else {
-				needsValidation = isNonGetterConstrained( beanDescriptor, method );
-			}
+			needsValidation = correspondingProperty.map( s -> isGetterConstrained( beanDescriptor, method, s ) ).orElseGet( () -> isNonGetterConstrained( beanDescriptor, method ) );
 
 			if ( needsValidation ) {
 				callables.add( annotatedMethod );
diff --git a/engine/src/main/java/org/hibernate/validator/internal/cfg/context/TypeConstraintMappingContextImpl.java b/engine/src/main/java/org/hibernate/validator/internal/cfg/context/TypeConstraintMappingContextImpl.java
index f5eb042005..eb7f11394f 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/cfg/context/TypeConstraintMappingContextImpl.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/cfg/context/TypeConstraintMappingContextImpl.java
@@ -135,7 +135,7 @@ public PropertyConstraintMappingContext field(String property) {
 
 		Optional<JavaBeanField> foundField = javaBeanHelper.findDeclaredField( beanClass, property );
 
-		if ( !foundField.isPresent() ) {
+		if ( foundField.isEmpty() ) {
 			throw LOG.getUnableToFindPropertyWithAccessException( beanClass, property, ElementType.FIELD );
 		}
 
@@ -157,7 +157,7 @@ public PropertyConstraintMappingContext getter(String property) {
 
 		Optional<JavaBeanGetter> foundGetter = javaBeanHelper.findDeclaredGetter( beanClass, property );
 
-		if ( !foundGetter.isPresent() ) {
+		if ( foundGetter.isEmpty() ) {
 			throw LOG.getUnableToFindPropertyWithAccessException( beanClass, property, ElementType.METHOD );
 		}
 
@@ -179,7 +179,7 @@ public MethodConstraintMappingContext method(String name, Class<?>... parameterT
 
 		Optional<JavaBeanMethod> foundMethod = javaBeanHelper.findDeclaredMethod( beanClass, name, parameterTypes );
 
-		if ( !foundMethod.isPresent() ) {
+		if ( foundMethod.isEmpty() ) {
 			throw LOG.getBeanDoesNotContainMethodException( beanClass, name, parameterTypes );
 		}
 
@@ -203,7 +203,7 @@ public MethodConstraintMappingContext method(String name, Class<?>... parameterT
 	public ConstructorConstraintMappingContext constructor(Class<?>... parameterTypes) {
 		Optional<JavaBeanConstructor> foundConstructor = javaBeanHelper.findDeclaredConstructor( beanClass, parameterTypes );
 
-		if ( !foundConstructor.isPresent() ) {
+		if ( foundConstructor.isEmpty() ) {
 			throw LOG.getBeanDoesNotContainConstructorException(
 					beanClass,
 					parameterTypes
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/ValidatorImpl.java b/engine/src/main/java/org/hibernate/validator/internal/engine/ValidatorImpl.java
index 3df13fafa9..9567e7f656 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/ValidatorImpl.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/ValidatorImpl.java
@@ -831,7 +831,7 @@ private <T> void validateParametersInContext(ExecutableValidationContext<T> vali
 
 		Optional<ExecutableMetaData> executableMetaDataOptional = validationContext.getExecutableMetaData();
 
-		if ( !executableMetaDataOptional.isPresent() ) {
+		if ( executableMetaDataOptional.isEmpty() ) {
 			// the method is unconstrained
 			return;
 		}
@@ -1015,7 +1015,7 @@ private <V, T> void validateReturnValueInContext(ExecutableValidationContext<T>
 
 		Optional<ExecutableMetaData> executableMetaDataOptional = validationContext.getExecutableMetaData();
 
-		if ( !executableMetaDataOptional.isPresent() ) {
+		if ( executableMetaDataOptional.isEmpty() ) {
 			// the method is unconstrained
 			return;
 		}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation/ComposingConstraintTree.java b/engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation/ComposingConstraintTree.java
index 78bb657778..13dc10a3bd 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation/ComposingConstraintTree.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/constraintvalidation/ComposingConstraintTree.java
@@ -105,7 +105,7 @@ protected void validateConstraints(ValidationContext<?> validationContext,
 
 			// We re-evaluate the boolean composition by taking into consideration also the violations
 			// from the local constraintValidator
-			if ( !violatedLocalConstraintValidatorContext.isPresent() ) {
+			if ( violatedLocalConstraintValidatorContext.isEmpty() ) {
 				compositionResult.setAtLeastOneTrue( true );
 			}
 			else {
@@ -168,7 +168,7 @@ private void prepareFinalConstraintViolations(ValidationContext<?> validationCon
 			// violations or not (or if there is no local ConstraintValidator at all).
 			// If not we create a violation
 			// using the error message in the annotation declaration at top level.
-			if ( !localConstraintValidatorContext.isPresent() ) {
+			if ( localConstraintValidatorContext.isEmpty() ) {
 				violatedConstraintValidatorContexts.add(
 						validationContext.createConstraintValidatorContextFor(
 								descriptor, valueContext.getPropertyPath()
@@ -185,9 +185,7 @@ private void prepareFinalConstraintViolations(ValidationContext<?> validationCon
 		// as checked in test CustomErrorMessage.java
 		// If no violations have been reported from the local ConstraintValidator, or no such validator exists,
 		// then we just add an empty list.
-		if ( localConstraintValidatorContext.isPresent() ) {
-			violatedConstraintValidatorContexts.add( localConstraintValidatorContext.get() );
-		}
+		localConstraintValidatorContext.ifPresent( violatedConstraintValidatorContexts::add );
 	}
 
 	/**
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ParameterExecutableValidationContext.java b/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ParameterExecutableValidationContext.java
index 6dd5370855..5a13af7e78 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ParameterExecutableValidationContext.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ParameterExecutableValidationContext.java
@@ -86,7 +86,7 @@ public Optional<ExecutableMetaData> getExecutableMetaData() {
 	}
 
 	private static boolean buildDisableAlreadyValidatedBeanTracking(Optional<ExecutableMetaData> executableMetaData) {
-		if ( !executableMetaData.isPresent() ) {
+		if ( executableMetaData.isEmpty() ) {
 			// the method is unconstrained so there's no need to worry about the tracking
 			return false;
 		}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ReturnValueExecutableValidationContext.java b/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ReturnValueExecutableValidationContext.java
index bcc80ae69b..d714153d54 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ReturnValueExecutableValidationContext.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/validationcontext/ReturnValueExecutableValidationContext.java
@@ -79,7 +79,7 @@ public Optional<ExecutableMetaData> getExecutableMetaData() {
 	}
 
 	private static boolean buildDisableAlreadyValidatedBeanTracking(Optional<ExecutableMetaData> executableMetaData) {
-		if ( !executableMetaData.isPresent() ) {
+		if ( executableMetaData.isEmpty() ) {
 			// the method is unconstrained so there's no need to worry about the tracking
 			return false;
 		}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/OptionalValueExtractor.java b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/OptionalValueExtractor.java
index de6dc0c841..6f7b6d04d8 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/OptionalValueExtractor.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/engine/valueextraction/OptionalValueExtractor.java
@@ -24,6 +24,6 @@ private OptionalValueExtractor() {
 
 	@Override
 	public void extractValues(Optional<?> originalValue, ValueExtractor.ValueReceiver receiver) {
-		receiver.value( null, originalValue.isPresent() ? originalValue.get() : null );
+		receiver.value( null, originalValue.orElse( null ) );
 	}
 }
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/config/ValidationConfigStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/config/ValidationConfigStaxBuilder.java
index 4541650543..7fb231dc7a 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/config/ValidationConfigStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/config/ValidationConfigStaxBuilder.java
@@ -274,9 +274,7 @@ protected String getAcceptableQName() {
 		@Override
 		protected void add(XMLEventReader xmlEventReader, XMLEvent xmlEvent) throws XMLStreamException {
 			Optional<String> enabledAttribute = readAttribute( xmlEvent.asStartElement(), ENABLED_QNAME );
-			if ( enabledAttribute.isPresent() ) {
-				enabled = Boolean.parseBoolean( enabledAttribute.get() );
-			}
+			enabledAttribute.ifPresent( s -> enabled = Boolean.parseBoolean( s ) );
 
 			while ( !( xmlEvent.isEndElement() && xmlEvent.asEndElement().getName().getLocalPart().equals( EXECUTABLE_VALIDATION_QNAME_LOCAL_PART ) ) ) {
 				XMLEvent currentEvent = xmlEventReader.nextEvent();
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedElementStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedElementStaxBuilder.java
index c1b33da4f7..56b0b45c39 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedElementStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedElementStaxBuilder.java
@@ -66,7 +66,7 @@ abstract class AbstractConstrainedElementStaxBuilder extends AbstractStaxBuilder
 	protected void add(XMLEventReader xmlEventReader, XMLEvent xmlEvent) throws XMLStreamException {
 		Optional<QName> mainAttributeValueQname = getMainAttributeValueQname();
 		if ( mainAttributeValueQname.isPresent() ) {
-			mainAttributeValue = readAttribute( xmlEvent.asStartElement(), mainAttributeValueQname.get() ).get();
+			mainAttributeValue = readAttribute( xmlEvent.asStartElement(), mainAttributeValueQname.get() ).orElseThrow();
 		}
 		ignoreAnnotations = readAttribute( xmlEvent.asStartElement(), IGNORE_ANNOTATIONS_QNAME ).map( Boolean::parseBoolean );
 		ConstraintTypeStaxBuilder constraintTypeStaxBuilder = getNewConstraintTypeStaxBuilder();
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedExecutableElementStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedExecutableElementStaxBuilder.java
index 91c87f4d6c..a955bde1cc 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedExecutableElementStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/AbstractConstrainedExecutableElementStaxBuilder.java
@@ -57,7 +57,7 @@ abstract class AbstractConstrainedExecutableElementStaxBuilder extends AbstractS
 	protected void add(XMLEventReader xmlEventReader, XMLEvent xmlEvent) throws XMLStreamException {
 		Optional<QName> mainAttributeValueQname = getMainAttributeValueQname();
 		if ( mainAttributeValueQname.isPresent() ) {
-			mainAttributeValue = readAttribute( xmlEvent.asStartElement(), mainAttributeValueQname.get() ).get();
+			mainAttributeValue = readAttribute( xmlEvent.asStartElement(), mainAttributeValueQname.get() ).orElseThrow();
 		}
 		ignoreAnnotations = readAttribute( xmlEvent.asStartElement(), IGNORE_ANNOTATIONS_QNAME ).map( Boolean::parseBoolean );
 		ConstrainedParameterStaxBuilder constrainedParameterStaxBuilder = getNewConstrainedParameterStaxBuilder();
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ClassConstraintTypeStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ClassConstraintTypeStaxBuilder.java
index 0a6907f039..063cac0cf6 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ClassConstraintTypeStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ClassConstraintTypeStaxBuilder.java
@@ -102,12 +102,7 @@ ConstrainedType build(Class<?> beanClass) {
 				.collect( Collectors.toSet() );
 
 		// ignore annotation
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreClassLevelConstraintAnnotations(
-					beanClass,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreClassLevelConstraintAnnotations( beanClass, b ) );
 
 		return new ConstrainedType(
 				ConfigurationSource.XML,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedConstructorStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedConstructorStaxBuilder.java
index a65a246a3d..c69749b8cf 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedConstructorStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedConstructorStaxBuilder.java
@@ -76,12 +76,7 @@ ConstrainedExecutable build(JavaBeanHelper javaBeanHelper, Class<?> beanClass, L
 		}
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsOnMember(
-					javaBeanConstructor,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsOnMember( javaBeanConstructor, b ) );
 
 		List<ConstrainedParameter> constrainedParameters = CollectionHelper.newArrayList( constrainedParameterStaxBuilders.size() );
 		for ( int index = 0; index < constrainedParameterStaxBuilders.size(); index++ ) {
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedFieldStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedFieldStaxBuilder.java
index 0277d0d37d..b83f6e7bb0 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedFieldStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedFieldStaxBuilder.java
@@ -82,12 +82,7 @@ ConstrainedField build(JavaBeanHelper javaBeanHelper, Class<?> beanClass, List<S
 		);
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsOnMember(
-					javaBeanField,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsOnMember( javaBeanField, b ) );
 
 		return constrainedField;
 	}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedGetterStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedGetterStaxBuilder.java
index df8dabaf6f..3d54496f74 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedGetterStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedGetterStaxBuilder.java
@@ -86,12 +86,7 @@ ConstrainedExecutable build(JavaBeanHelper javaBeanHelper, Class<?> beanClass, L
 		);
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsOnMember(
-					javaBeanGetter,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsOnMember( javaBeanGetter, b ) );
 
 		return constrainedGetter;
 	}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedMethodStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedMethodStaxBuilder.java
index c6cafd1ebf..df416caa42 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedMethodStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedMethodStaxBuilder.java
@@ -79,12 +79,7 @@ ConstrainedExecutable build(JavaBeanHelper javaBeanHelper, Class<?> beanClass, L
 		}
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsOnMember(
-					javaBeanMethod,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsOnMember( javaBeanMethod, b ) );
 
 		List<ConstrainedParameter> constrainedParameters = CollectionHelper.newArrayList( constrainedParameterStaxBuilders.size() );
 		for ( int index = 0; index < constrainedParameterStaxBuilders.size(); index++ ) {
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedParameterStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedParameterStaxBuilder.java
index faa2f86285..863598121f 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedParameterStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstrainedParameterStaxBuilder.java
@@ -77,13 +77,7 @@ ConstrainedParameter build(Callable callable, int index) {
 		ContainerElementTypeConfiguration containerElementTypeConfiguration = getContainerElementTypeConfiguration( type, constraintLocation );
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsOnParameter(
-					callable,
-					index,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsOnParameter( callable, index, b ) );
 
 		ConstrainedParameter constrainedParameter = new ConstrainedParameter(
 				ConfigurationSource.XML,
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstraintTypeStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstraintTypeStaxBuilder.java
index 77ff60586e..7154130b39 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstraintTypeStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ConstraintTypeStaxBuilder.java
@@ -122,9 +122,7 @@ <A extends Annotation> MetaConstraint<A> build(ConstraintLocation constraintLoca
 
 		// set common things to all constraints:
 		Optional<String> message = messageStaxBuilder.build();
-		if ( message.isPresent() ) {
-			annotationDescriptorBuilder.setMessage( message.get() );
-		}
+		message.ifPresent( annotationDescriptorBuilder::setMessage );
 		annotationDescriptorBuilder.setGroups( groupsStaxBuilder.build() )
 				.setPayload( payloadStaxBuilder.build() );
 
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ContainerElementTypeStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ContainerElementTypeStaxBuilder.java
index 456dacc83b..5ba17e47e1 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ContainerElementTypeStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ContainerElementTypeStaxBuilder.java
@@ -79,9 +79,7 @@ protected String getAcceptableQName() {
 	@Override
 	protected void add(XMLEventReader xmlEventReader, XMLEvent xmlEvent) throws XMLStreamException {
 		Optional<String> typeArgumentIndex = readAttribute( xmlEvent.asStartElement(), TYPE_ARGUMENT_INDEX_QNAME );
-		if ( typeArgumentIndex.isPresent() ) {
-			this.typeArgumentIndex = Integer.parseInt( typeArgumentIndex.get() );
-		}
+		typeArgumentIndex.ifPresent( s -> this.typeArgumentIndex = Integer.parseInt( s ) );
 		ConstraintTypeStaxBuilder constraintTypeStaxBuilder = getNewConstraintTypeStaxBuilder();
 		ContainerElementTypeStaxBuilder containerElementTypeConfigurationStaxBuilder = getNewContainerElementTypeConfigurationStaxBuilder();
 		while ( !( xmlEvent.isEndElement() && xmlEvent.asEndElement().getName().getLocalPart().equals( getAcceptableQName() ) ) ) {
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/CrossParameterStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/CrossParameterStaxBuilder.java
index 5719dedbac..93725d9566 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/CrossParameterStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/CrossParameterStaxBuilder.java
@@ -87,12 +87,7 @@ Set<MetaConstraint<?>> build(Callable callable) {
 				.collect( Collectors.toSet() );
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsForCrossParameterConstraint(
-					callable,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsForCrossParameterConstraint( callable, b ) );
 
 		return crossParameterConstraints;
 	}
diff --git a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ReturnValueStaxBuilder.java b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ReturnValueStaxBuilder.java
index 71520c4f5a..31e3e621b1 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ReturnValueStaxBuilder.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/xml/mapping/ReturnValueStaxBuilder.java
@@ -62,12 +62,7 @@ CascadingMetaDataBuilder build(
 		returnValueTypeArgumentConstraints.addAll( containerElementTypeConfiguration.getMetaConstraints() );
 
 		// ignore annotations
-		if ( ignoreAnnotations.isPresent() ) {
-			annotationProcessingOptions.ignoreConstraintAnnotationsForReturnValue(
-					callable,
-					ignoreAnnotations.get()
-			);
-		}
+		ignoreAnnotations.ifPresent( b -> annotationProcessingOptions.ignoreConstraintAnnotationsForReturnValue( callable, b ) );
 
 		return getCascadingMetaData( containerElementTypeConfiguration.getTypeParametersCascadingMetaData(), callable.getType() );
 	}