asSet(T... ts) {
return new HashSet<>( Arrays.asList( ts ) );
}
+ /**
+ * Converts the provided list to an {@code java.util.ImmutableCollections}.
+ *
+ * NOTE: the resulting list does not allow {@code null} values.
+ * Attempt to convert a list with {@code null}s will result in an exception!
+ *
+ * @param list the list to convert.
+ * @return the converted list.
+ * @param the type of the list elements.
+ */
public static List toImmutableList(List extends T> list) {
- switch ( list.size() ) {
- case 0:
- return Collections.emptyList();
- case 1:
- return Collections.singletonList( list.get( 0 ) );
- default:
- return Collections.unmodifiableList( list );
- }
+ return List.copyOf( list );
}
+ /**
+ * Converts the provided set to an {@code java.util.ImmutableCollections}.
+ *
+ * NOTE: the resulting set does not allow {@code null} values.
+ * Attempt to convert a set with {@code null}s will result in an exception!
+ *
+ * @param set the set to convert.
+ * @return the converted set.
+ * @param the type of the set elements.
+ */
public static Set toImmutableSet(Set extends T> set) {
- switch ( set.size() ) {
- case 0:
- return Collections.emptySet();
- case 1:
- return Collections.singleton( set.iterator().next() );
- default:
- return Collections.unmodifiableSet( set );
- }
+ return Set.copyOf( set );
}
+ /**
+ * Converts the provided map to an {@code java.util.ImmutableCollections}.
+ *
+ * NOTE: the resulting map does not allow {@code null} keys and values .
+ * Attempt to convert a map with {@code null}s (either as key or a value) will result in an exception!
+ *
+ * @param map the map to convert.
+ * @param the type of the map keys.
+ * @param the type of the map values.
+ * @return the converted map.
+ */
public static Map toImmutableMap(Map map) {
- switch ( map.size() ) {
- case 0:
- return Collections.emptyMap();
- case 1:
- Entry entry = map.entrySet().iterator().next();
- return Collections.singletonMap( entry.getKey(), entry.getValue() );
- default:
- return Collections.unmodifiableMap( map );
- }
+ return Map.copyOf( map );
}
/**
diff --git a/engine/src/main/java/org/hibernate/validator/internal/util/ConcurrentReferenceHashMap.java b/engine/src/main/java/org/hibernate/validator/internal/util/ConcurrentReferenceHashMap.java
index 6811690bfe..b61dcb19af 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/util/ConcurrentReferenceHashMap.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/util/ConcurrentReferenceHashMap.java
@@ -12,6 +12,7 @@
package org.hibernate.validator.internal.util;
import java.io.IOException;
+import java.io.Serial;
import java.io.Serializable;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
@@ -132,6 +133,7 @@
*/
final public class ConcurrentReferenceHashMap extends AbstractMap
implements java.util.concurrent.ConcurrentMap, Serializable {
+ @Serial
private static final long serialVersionUID = 7249069246763182397L;
/*
@@ -476,7 +478,7 @@ static final class Segment extends ReentrantLock implements Serializable {
* As a guide, all critical volatile reads and writes to the
* count field are marked in code comments.
*/
-
+ @Serial
private static final long serialVersionUID = 2249069246763182397L;
/**
@@ -1544,6 +1546,7 @@ public V nextElement() {
static class SimpleEntry
implements Entry,
java.io.Serializable {
+ @Serial
private static final long serialVersionUID = -8499721149061103585L;
private final K key;
@@ -1605,6 +1608,7 @@ private static boolean eq(Object o1, Object o2) {
* changes to the underlying map.
*/
final class WriteThroughEntry extends SimpleEntry {
+ @Serial
private static final long serialVersionUID = -7900634345345313646L;
WriteThroughEntry(K k, V v) {
diff --git a/engine/src/main/java/org/hibernate/validator/internal/util/annotation/AnnotationProxy.java b/engine/src/main/java/org/hibernate/validator/internal/util/annotation/AnnotationProxy.java
index a580cedf39..168c89d607 100644
--- a/engine/src/main/java/org/hibernate/validator/internal/util/annotation/AnnotationProxy.java
+++ b/engine/src/main/java/org/hibernate/validator/internal/util/annotation/AnnotationProxy.java
@@ -4,6 +4,7 @@
*/
package org.hibernate.validator.internal.util.annotation;
+import java.io.Serial;
import java.io.Serializable;
import java.lang.annotation.Annotation;
import java.lang.reflect.InvocationHandler;
@@ -36,6 +37,7 @@
*/
class AnnotationProxy implements Annotation, InvocationHandler, Serializable {
+ @Serial
private static final long serialVersionUID = 6907601010599429454L;
private final AnnotationDescriptor extends Annotation> descriptor;
diff --git a/engine/src/test/java/org/hibernate/validator/test/constraints/ConstraintValidatorContextImplTest.java b/engine/src/test/java/org/hibernate/validator/test/constraints/ConstraintValidatorContextImplTest.java
index aee0ee8792..cf8477a739 100644
--- a/engine/src/test/java/org/hibernate/validator/test/constraints/ConstraintValidatorContextImplTest.java
+++ b/engine/src/test/java/org/hibernate/validator/test/constraints/ConstraintValidatorContextImplTest.java
@@ -18,7 +18,7 @@
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl;
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintViolationCreationContext;
-import org.hibernate.validator.internal.engine.path.PathImpl;
+import org.hibernate.validator.internal.engine.path.ModifiablePath;
import org.hibernate.validator.messageinterpolation.ExpressionLanguageFeatureLevel;
import org.hibernate.validator.testutil.ConstraintViolationAssert.PathExpectation;
@@ -223,7 +223,7 @@ public void testContainerElementNode() {
}
private ConstraintValidatorContextImpl createEmptyConstraintValidatorContextImpl() {
- PathImpl path = PathImpl.createRootPath();
+ ModifiablePath path = ModifiablePath.createRootPath();
path.addBeanNode();
ConstraintValidatorContextImpl context = new ConstraintValidatorContextImpl( null, path, null, null, ExpressionLanguageFeatureLevel.BEAN_PROPERTIES,
diff --git a/engine/src/test/java/org/hibernate/validator/test/internal/engine/path/PathImplTest.java b/engine/src/test/java/org/hibernate/validator/test/internal/engine/path/ModifiablePathTest.java
similarity index 78%
rename from engine/src/test/java/org/hibernate/validator/test/internal/engine/path/PathImplTest.java
rename to engine/src/test/java/org/hibernate/validator/test/internal/engine/path/ModifiablePathTest.java
index f06fe1a2c1..98353e4d1a 100644
--- a/engine/src/test/java/org/hibernate/validator/test/internal/engine/path/PathImplTest.java
+++ b/engine/src/test/java/org/hibernate/validator/test/internal/engine/path/ModifiablePathTest.java
@@ -11,6 +11,7 @@
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
import static org.testng.Assert.assertTrue;
import java.lang.reflect.Method;
@@ -30,7 +31,7 @@
import org.hibernate.validator.internal.engine.DefaultPropertyNodeNameProvider;
import org.hibernate.validator.internal.engine.MethodValidationConfiguration;
import org.hibernate.validator.internal.engine.groups.ValidationOrderGenerator;
-import org.hibernate.validator.internal.engine.path.PathImpl;
+import org.hibernate.validator.internal.engine.path.ModifiablePath;
import org.hibernate.validator.internal.metadata.BeanMetaDataManager;
import org.hibernate.validator.internal.metadata.BeanMetaDataManagerImpl;
import org.hibernate.validator.internal.metadata.DefaultBeanMetaDataClassNormalizer;
@@ -50,12 +51,12 @@
* @author Gunnar Morling
* @author Kevin Pollet <kevin.pollet@serli.com> (C) 2011 SERLI
*/
-public class PathImplTest {
+public class ModifiablePathTest {
@Test
public void testParsing() {
String property = "orders[3].deliveryAddress.addressline[1]";
- Path path = PathImpl.createPathFromString( property );
+ Path path = ModifiablePath.createPathFromString( property );
Iterator propIter = path.iterator();
assertTrue( propIter.hasNext() );
@@ -76,7 +77,7 @@ public void testParsing() {
assertTrue( propIter.hasNext() );
elem = propIter.next();
- assertEquals( elem.getName(), null );
+ assertNull( elem.getName() );
assertTrue( elem.isInIterable() );
assertEquals( elem.getIndex(), Integer.valueOf( 1 ) );
@@ -87,7 +88,7 @@ public void testParsing() {
@Test
public void testParsingPropertyWithCurrencySymbol() {
- PathImpl path = PathImpl.createPathFromString( "€Amount" );
+ ModifiablePath path = ModifiablePath.createPathFromString( "€Amount" );
Iterator it = path.iterator();
assertEquals( it.next().getName(), "€Amount" );
@@ -95,7 +96,7 @@ public void testParsingPropertyWithCurrencySymbol() {
@Test
public void testParsingPropertyWithGermanCharacter() {
- PathImpl path = PathImpl.createPathFromString( "höchstBetrag" );
+ ModifiablePath path = ModifiablePath.createPathFromString( "höchstBetrag" );
Iterator it = path.iterator();
assertEquals( it.next().getName(), "höchstBetrag" );
@@ -103,7 +104,7 @@ public void testParsingPropertyWithGermanCharacter() {
@Test
public void testParsingPropertyWithUnicodeCharacter() {
- PathImpl path = PathImpl.createPathFromString( "höchst\u00f6Betrag" );
+ ModifiablePath path = ModifiablePath.createPathFromString( "höchst\u00f6Betrag" );
Iterator it = path.iterator();
assertEquals( it.next().getName(), "höchst\u00f6Betrag" );
@@ -111,68 +112,68 @@ public void testParsingPropertyWithUnicodeCharacter() {
@Test(expectedExceptions = IllegalArgumentException.class)
public void testParsingInvalidJavaProperty() {
- PathImpl.createPathFromString( "1invalid" );
+ ModifiablePath.createPathFromString( "1invalid" );
}
@Test
public void testParseMapBasedProperty() {
String property = "order[foo].deliveryAddress";
- Path path = PathImpl.createPathFromString( property );
+ Path path = ModifiablePath.createPathFromString( property );
Iterator propIter = path.iterator();
assertTrue( propIter.hasNext() );
Path.Node elem = propIter.next();
- assertEquals( "order", elem.getName() );
+ assertEquals( elem.getName(), "order" );
assertFalse( elem.isInIterable() );
assertTrue( propIter.hasNext() );
elem = propIter.next();
- assertEquals( "deliveryAddress", elem.getName() );
+ assertEquals( elem.getName(), "deliveryAddress" );
assertTrue( elem.isInIterable() );
- assertEquals( "foo", elem.getKey() );
+ assertEquals( elem.getKey(), "foo" );
assertFalse( propIter.hasNext() );
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testNull() {
- PathImpl.createPathFromString( null );
+ ModifiablePath.createPathFromString( null );
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testUnbalancedBraces() {
- PathImpl.createPathFromString( "foo[.bar" );
+ ModifiablePath.createPathFromString( "foo[.bar" );
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testIndexInMiddleOfProperty() {
- PathImpl.createPathFromString( "f[1]oo.bar" );
+ ModifiablePath.createPathFromString( "f[1]oo.bar" );
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testTrailingPathSeparator() {
- PathImpl.createPathFromString( "foo.bar." );
+ ModifiablePath.createPathFromString( "foo.bar." );
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void testLeadingPathSeparator() {
- PathImpl.createPathFromString( ".foo.bar" );
+ ModifiablePath.createPathFromString( ".foo.bar" );
}
@Test
public void testEmptyString() {
- Path path = PathImpl.createPathFromString( "" );
+ Path path = ModifiablePath.createPathFromString( "" );
assertTrue( path.iterator().hasNext() );
}
@Test
public void testIsSubPathOf() {
- PathImpl subPath = PathImpl.createPathFromString( "annotation" );
- PathImpl middlePath = PathImpl.createPathFromString( "annotation.property" );
- PathImpl middlePath2 = PathImpl.createPathFromString( "annotation.property[2]" );
- PathImpl middlePath3 = PathImpl.createPathFromString( "annotation.property[3]" );
- PathImpl fullPath3 = PathImpl.createPathFromString( "annotation.property[3].element" );
- PathImpl fullPath4 = PathImpl.createPathFromString( "annotation.property[4].element" );
+ ModifiablePath subPath = ModifiablePath.createPathFromString( "annotation" );
+ ModifiablePath middlePath = ModifiablePath.createPathFromString( "annotation.property" );
+ ModifiablePath middlePath2 = ModifiablePath.createPathFromString( "annotation.property[2]" );
+ ModifiablePath middlePath3 = ModifiablePath.createPathFromString( "annotation.property[3]" );
+ ModifiablePath fullPath3 = ModifiablePath.createPathFromString( "annotation.property[3].element" );
+ ModifiablePath fullPath4 = ModifiablePath.createPathFromString( "annotation.property[4].element" );
assertTrue( subPath.isSubPathOf( middlePath ), "bean is subpath of its properties" );
assertFalse( middlePath.isSubPathOf( subPath ), "a property is not a subPath of its bean" );
@@ -186,13 +187,13 @@ public void testIsSubPathOf() {
@Test
public void testIsSubPathOrContains() {
- PathImpl rootPath = PathImpl.createPathFromString( "" );
- PathImpl subPath = PathImpl.createPathFromString( "annotation" );
- PathImpl middlePath = PathImpl.createPathFromString( "annotation.property" );
- PathImpl middlePath2 = PathImpl.createPathFromString( "annotation.property[2]" );
- PathImpl middlePath3 = PathImpl.createPathFromString( "annotation.property[3]" );
- PathImpl fullPath3 = PathImpl.createPathFromString( "annotation.property[3].element" );
- PathImpl fullPath4 = PathImpl.createPathFromString( "annotation.property[4].element" );
+ ModifiablePath rootPath = ModifiablePath.createPathFromString( "" );
+ ModifiablePath subPath = ModifiablePath.createPathFromString( "annotation" );
+ ModifiablePath middlePath = ModifiablePath.createPathFromString( "annotation.property" );
+ ModifiablePath middlePath2 = ModifiablePath.createPathFromString( "annotation.property[2]" );
+ ModifiablePath middlePath3 = ModifiablePath.createPathFromString( "annotation.property[3]" );
+ ModifiablePath fullPath3 = ModifiablePath.createPathFromString( "annotation.property[3].element" );
+ ModifiablePath fullPath4 = ModifiablePath.createPathFromString( "annotation.property[4].element" );
assertTrue( rootPath.isSubPathOrContains( middlePath ), "root path is in every path" );
assertTrue( middlePath.isSubPathOrContains( rootPath ), "every path contains the root path" );
@@ -248,14 +249,14 @@ public void testCreationOfExecutablePath() throws Exception {
ExecutableMetaData executableMetaData = beanMetaDataManager.getBeanMetaData( Container.class )
.getMetaDataFor( executable ).get();
- PathImpl methodParameterPath = PathImpl.createPathForExecutable( executableMetaData );
+ ModifiablePath methodParameterPath = ModifiablePath.createPathForExecutable( executableMetaData );
assertEquals( methodParameterPath.toString(), "addItem" );
}
@Test(expectedExceptions = IllegalArgumentException.class)
- public void testCreationOfExecutablePathFailsDueToMissingExecutable() throws Exception {
- PathImpl.createPathForExecutable( null );
+ public void testCreationOfExecutablePathFailsDueToMissingExecutable() {
+ ModifiablePath.createPathForExecutable( null );
}
class Container {
diff --git a/engine/src/test/java/org/hibernate/validator/test/internal/engine/serialization/CustomConstraintSerializableTest.java b/engine/src/test/java/org/hibernate/validator/test/internal/engine/serialization/CustomConstraintSerializableTest.java
index 9698f0d15b..f7c8200b15 100644
--- a/engine/src/test/java/org/hibernate/validator/test/internal/engine/serialization/CustomConstraintSerializableTest.java
+++ b/engine/src/test/java/org/hibernate/validator/test/internal/engine/serialization/CustomConstraintSerializableTest.java
@@ -6,6 +6,7 @@
import java.io.ByteArrayOutputStream;
import java.io.ObjectOutputStream;
+import java.io.Serial;
import java.io.Serializable;
import java.util.Set;
@@ -57,6 +58,7 @@ public static byte[] doSerialize(Object obj) throws Exception {
}
static class CustomEmail implements Serializable {
+ @Serial
private static final long serialVersionUID = -9095271389455131159L;
@Email
diff --git a/engine/src/test/java/org/hibernate/validator/testutils/ValidatorUtil.java b/engine/src/test/java/org/hibernate/validator/testutils/ValidatorUtil.java
index d26f2a712e..76a10e9a3a 100644
--- a/engine/src/test/java/org/hibernate/validator/testutils/ValidatorUtil.java
+++ b/engine/src/test/java/org/hibernate/validator/testutils/ValidatorUtil.java
@@ -26,7 +26,7 @@
import org.hibernate.validator.constraintvalidation.HibernateConstraintValidatorContext;
import org.hibernate.validator.internal.engine.DefaultClockProvider;
import org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorContextImpl;
-import org.hibernate.validator.internal.engine.path.PathImpl;
+import org.hibernate.validator.internal.engine.path.ModifiablePath;
import org.hibernate.validator.messageinterpolation.ExpressionLanguageFeatureLevel;
import org.hibernate.validator.testutil.DummyTraversableResolver;
import org.hibernate.validator.testutil.ValidationInvocationHandler;
@@ -235,10 +235,10 @@ public static T getValidatingProxy(I implementor, Validator exe
}
public static HibernateConstraintValidatorContext getConstraintValidatorContext() {
- return getConstraintValidatorContext( PathImpl.createRootPath() );
+ return getConstraintValidatorContext( ModifiablePath.createRootPath() );
}
- public static HibernateConstraintValidatorContext getConstraintValidatorContext(PathImpl propertyPath) {
+ public static HibernateConstraintValidatorContext getConstraintValidatorContext(ModifiablePath propertyPath) {
return new ConstraintValidatorContextImpl( DefaultClockProvider.INSTANCE, propertyPath, null, null, ExpressionLanguageFeatureLevel.BEAN_PROPERTIES,
ExpressionLanguageFeatureLevel.NONE
);
diff --git a/performance/README.md b/performance/README.md
index 0b0dc0775e..84ecc13e6e 100644
--- a/performance/README.md
+++ b/performance/README.md
@@ -12,6 +12,10 @@ Choosing a profile executes the tests against the specified Hibernate Validator
defined profiles are:
* hv-current (Hibernate Validator 6.1.0-SNAPSHOT)
+* hv-9.0 (Hibernate Validator 9.0.0.Final)
+* hv-8.0 (Hibernate Validator 8.0.3.Final)
+* hv-6.2 (Hibernate Validator 6.2.5.Final)
+* hv-6.1 (Hibernate Validator 6.1.2.Final)
* hv-6.0 (Hibernate Validator 6.0.15.Final)
* hv-5.4 (Hibernate Validator 5.4.3.Final)
* hv-5.3 (Hibernate Validator 5.3.4.Final)
diff --git a/performance/pom.xml b/performance/pom.xml
index 8f783b9126..4423e96520 100644
--- a/performance/pom.xml
+++ b/performance/pom.xml
@@ -185,6 +185,40 @@
+
+ hv-9.0
+
+
+ validator
+ hv-9.0
+
+
+
+ Hibernate Validator
+ 3.1.1.Final
+ 9.0.0.Final
+ ${project.basedir}/src/main/jakarta
+
+
+
+ jakarta.validation
+ jakarta.validation-api
+
+
+ ${project.groupId}
+ hibernate-validator
+ ${beanvalidation-impl.version}
+
+
+ org.glassfish.expressly
+ expressly
+
+
+ org.apache.logging.log4j
+ log4j-core
+
+
+
hv-8.0
@@ -196,7 +230,7 @@
Hibernate Validator
3.0.0.Final
- 8.0.1.Final
+ 8.0.3.Final
${project.basedir}/src/main/jakarta
@@ -219,6 +253,43 @@
+
+ hv-6.2
+
+
+ validator
+ hv-6.2
+
+
+
+ 2.0.1.Final
+ Hibernate Validator
+ 6.2.5.Final
+ ${project.basedir}/src/main/javax
+ ${project.basedir}/src/main/javax-bv2
+
+
+
+ javax.validation
+ validation-api
+ ${validation-api.version}
+
+
+ ${project.groupId}
+ hibernate-validator
+ ${beanvalidation-impl.version}
+
+
+ org.glassfish
+ javax.el
+ 3.0.1-b12
+
+
+ org.apache.logging.log4j
+ log4j-core
+
+
+
hv-6.1
diff --git a/performance/src/main/jakarta/org/hibernate/validator/performance/simple/SimpleSingleElementValidation.java b/performance/src/main/jakarta/org/hibernate/validator/performance/simple/SimpleSingleElementValidation.java
new file mode 100644
index 0000000000..c5e4e313e6
--- /dev/null
+++ b/performance/src/main/jakarta/org/hibernate/validator/performance/simple/SimpleSingleElementValidation.java
@@ -0,0 +1,85 @@
+/*
+ * SPDX-License-Identifier: Apache-2.0
+ * Copyright Red Hat Inc. and Hibernate Authors
+ */
+package org.hibernate.validator.performance.simple;
+
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import jakarta.validation.ConstraintViolation;
+import jakarta.validation.Validation;
+import jakarta.validation.Validator;
+import jakarta.validation.ValidatorFactory;
+import jakarta.validation.constraints.Min;
+import jakarta.validation.constraints.NotNull;
+import jakarta.validation.constraints.Size;
+import org.openjdk.jmh.annotations.Benchmark;
+import org.openjdk.jmh.annotations.BenchmarkMode;
+import org.openjdk.jmh.annotations.Fork;
+import org.openjdk.jmh.annotations.Measurement;
+import org.openjdk.jmh.annotations.Mode;
+import org.openjdk.jmh.annotations.OutputTimeUnit;
+import org.openjdk.jmh.annotations.Scope;
+import org.openjdk.jmh.annotations.Setup;
+import org.openjdk.jmh.annotations.State;
+import org.openjdk.jmh.annotations.Threads;
+import org.openjdk.jmh.annotations.Warmup;
+import org.openjdk.jmh.infra.Blackhole;
+
+@State(Scope.Benchmark)
+@BenchmarkMode(Mode.Throughput)
+@OutputTimeUnit(TimeUnit.MILLISECONDS)
+@Fork(value = 1)
+@Threads(50)
+@Warmup(iterations = 10)
+@Measurement(iterations = 20)
+public class SimpleSingleElementValidation {
+
+ // The class to be validated
+ private static class User {
+ @NotNull
+ @Size(min = 3, max = 50)
+ private String name;
+
+ @Size(min = 3, max = 50)
+ @NotNull
+ private String email;
+
+ @Min(value = 20)
+ private int age;
+
+ public User(String name, String email, int age) {
+ this.name = name;
+ this.email = email;
+ this.age = age;
+ }
+ }
+
+ @State(Scope.Benchmark)
+ public static class BenchmarkState {
+ Validator validator;
+ User validUser;
+ User invalidUser;
+
+ @Setup
+ public void setup() {
+ ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
+ this.validator = factory.getValidator();
+ this.validUser = new User( "John Doe", "john.doe@example.com", 25 );
+ this.invalidUser = new User( "Jo", "invalid-email", 19 );
+ }
+ }
+
+ @Benchmark
+ public void validObjectValidation(BenchmarkState state, Blackhole blackhole) {
+ Set> violations = state.validator.validate( state.validUser );
+ blackhole.consume( violations );
+ }
+
+ @Benchmark
+ public void invalidObjectValidation(BenchmarkState state, Blackhole blackhole) {
+ Set> violations = state.validator.validate( state.invalidUser );
+ blackhole.consume( violations );
+ }
+}
diff --git a/pom.xml b/pom.xml
index 84f946da25..9b81c6433c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -134,7 +134,7 @@
3.0.4.Final
- 36.0.1.Final
+ 37.0.0.Final
@@ -197,12 +197,12 @@
4.13.2
5.6.0
5.5.5
- 4.0.27
+ 4.0.28
33.4.8-jre
- 6.2.8
+ 6.2.9
4.0.0.Final
- 2.19.1
- 2.19.1
+ 2.19.2
+ 2.19.2
1.17.6
@@ -219,12 +219,12 @@
overridden by a CI job of the Checkstyle project so that they can
check for regressions. Which is obviously good for us, too.
-->
- 10.26.1
+ 11.0.0
3.2.0
- 5.1.1.Final
+ 5.1.2.Final
3.1.1.Final
3.0.0
2.3.19
@@ -242,7 +242,7 @@
3.8.1
1.5.0
3.1.4
- 3.6.0
+ 3.6.1
3.9
4.2.1
@@ -259,12 +259,12 @@
3.5.3
9.8
${version.surefire.plugin}
- 1.7.1
- 1.2.2.Final
+ 1.7.2
+ 1.3.0.Final
0.9.0.M4
2.18.0
3.3.2
- 2.45.0
+ 2.46.1
0.8.13
5.1.0.4751
1.0.2