From 500830f6bd3222df7eeb8a9859d8c6744c72a72e Mon Sep 17 00:00:00 2001 From: marko-bekhta Date: Mon, 25 Aug 2025 17:33:13 +0200 Subject: [PATCH] HV-2128 Update serialVersionUID for paths/nodes as they've been updates in the other PR for HV-1831 Signed-off-by: marko-bekhta --- .../propertypath/PropertyPathTest.java | 8 +++++++ .../engine/path/MaterializedNode.java | 5 +++-- .../engine/path/MaterializedPath.java | 10 +++++++-- .../internal/engine/path/MutableNode.java | 2 +- .../internal/engine/path/MutablePath.java | 5 +++-- .../org/hibernate/validator/path/Path.java | 21 +++++++++++++++++++ 6 files changed, 44 insertions(+), 7 deletions(-) create mode 100644 engine/src/main/java/org/hibernate/validator/path/Path.java diff --git a/documentation/src/test/java/org/hibernate/validator/referenceguide/chapter12/propertypath/PropertyPathTest.java b/documentation/src/test/java/org/hibernate/validator/referenceguide/chapter12/propertypath/PropertyPathTest.java index 6d8611d46f..95c00d2403 100644 --- a/documentation/src/test/java/org/hibernate/validator/referenceguide/chapter12/propertypath/PropertyPathTest.java +++ b/documentation/src/test/java/org/hibernate/validator/referenceguide/chapter12/propertypath/PropertyPathTest.java @@ -19,6 +19,7 @@ import org.hibernate.validator.HibernateValidator; import org.hibernate.validator.path.PropertyNode; +import org.junit.Assert; import org.junit.Test; /** @@ -60,6 +61,13 @@ public void testPropertyNodeGetValueForSet() { assertEquals( node.getName(), "name" ); assertEquals( node.as( PropertyNode.class ).getValue(), "Bob" ); //end::include[] + if ( path instanceof org.hibernate.validator.path.Path hvPath ) { + assertEquals( hvPath.getLeafNode().getName(), "name" ); + assertEquals( hvPath.getLeafNode().as( PropertyNode.class ).getValue(), "Bob" ); + } + else { + Assert.fail( "Unexpected path node type: " + path.getClass().getName() ); + } assertFalse( nodeIterator.hasNext() ); } diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedNode.java b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedNode.java index dd2e66277e..0a35345d27 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedNode.java +++ b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedNode.java @@ -4,6 +4,7 @@ */ package org.hibernate.validator.internal.engine.path; +import java.io.Serial; import java.io.Serializable; import java.lang.invoke.MethodHandles; import java.util.Arrays; @@ -31,8 +32,8 @@ public class MaterializedNode implements PropertyNode, MethodNode, ConstructorNode, BeanNode, ParameterNode, ReturnValueNode, CrossParameterNode, ContainerElementNode, org.hibernate.validator.path.PropertyNode, org.hibernate.validator.path.ContainerElementNode, Serializable { - // @Serial - // private static final long serialVersionUID = 2075466571633860499L; + @Serial + private static final long serialVersionUID = -7629728442122634981L; private static final Class[] EMPTY_CLASS_ARRAY = new Class[] { }; private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() ); diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedPath.java b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedPath.java index cad553fad8..3f53656e5a 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedPath.java +++ b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MaterializedPath.java @@ -8,12 +8,13 @@ import java.io.Serializable; import java.util.Iterator; -import jakarta.validation.Path; +import org.hibernate.validator.path.Path; + final class MaterializedPath implements Path, Serializable { @Serial - private static final long serialVersionUID = -8906501301223202169L; + private static final long serialVersionUID = 1264131890253015968L; private static final String PROPERTY_PATH_SEPARATOR = "."; @@ -71,4 +72,9 @@ static String asString(MaterializedNode currentLeafNode) { } return builder.toString(); } + + @Override + public Node getLeafNode() { + return leafNode; + } } diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutableNode.java b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutableNode.java index cd865a3a62..481f21f254 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutableNode.java +++ b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutableNode.java @@ -40,7 +40,7 @@ public class MutableNode implements Path.PropertyNode, Path.MethodNode, Path.ConstructorNode, Path.BeanNode, Path.ParameterNode, Path.ReturnValueNode, Path.CrossParameterNode, Path.ContainerElementNode, org.hibernate.validator.path.PropertyNode, org.hibernate.validator.path.ContainerElementNode, Serializable { @Serial - private static final long serialVersionUID = 2075466571633860499L; + private static final long serialVersionUID = 3259464108481054555L; private static final Class[] EMPTY_CLASS_ARRAY = new Class[] { }; private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() ); diff --git a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutablePath.java b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutablePath.java index 06bce9aac1..680a31b147 100644 --- a/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutablePath.java +++ b/engine/src/main/java/org/hibernate/validator/internal/engine/path/MutablePath.java @@ -15,12 +15,12 @@ import java.util.regex.Pattern; import jakarta.validation.ElementKind; -import jakarta.validation.Path; import org.hibernate.validator.internal.metadata.aggregated.ExecutableMetaData; import org.hibernate.validator.internal.util.Contracts; import org.hibernate.validator.internal.util.logging.Log; import org.hibernate.validator.internal.util.logging.LoggerFactory; +import org.hibernate.validator.path.Path; /** * Internal, mutable implementation of {@code jakarta.validation.Path}. @@ -31,7 +31,7 @@ */ public final class MutablePath implements Path, Serializable { @Serial - private static final long serialVersionUID = 7564511574909882392L; + private static final long serialVersionUID = 2464836778339203598L; private static final Log LOG = LoggerFactory.make( MethodHandles.lookup() ); private static final String PROPERTY_PATH_SEPARATOR = "."; @@ -182,6 +182,7 @@ public void removeLeafNode() { } } + @Override public MutableNode getLeafNode() { return currentLeafNode; } diff --git a/engine/src/main/java/org/hibernate/validator/path/Path.java b/engine/src/main/java/org/hibernate/validator/path/Path.java new file mode 100644 index 0000000000..744aee8196 --- /dev/null +++ b/engine/src/main/java/org/hibernate/validator/path/Path.java @@ -0,0 +1,21 @@ +/* + * SPDX-License-Identifier: Apache-2.0 + * Copyright Red Hat Inc. and Hibernate Authors + */ +package org.hibernate.validator.path; + +import org.hibernate.validator.Incubating; + +/** + * An extended representation of the validation path, provides Hibernate Validator specific functionality. + */ +@Incubating +public interface Path extends jakarta.validation.Path { + + /** + * @return The leaf node of the current path. + * This is a shortcut method to iterating over the path till the last node. + */ + jakarta.validation.Path.Node getLeafNode(); + +}