Skip to content

Commit f4d7656

Browse files
committed
Copy nodes when changing the nature of the leaf
1 parent cea9b8c commit f4d7656

File tree

1 file changed

+7
-3
lines changed
  • engine/src/main/java/org/hibernate/validator/internal/engine/path

1 file changed

+7
-3
lines changed

engine/src/main/java/org/hibernate/validator/internal/engine/path/PathImpl.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ private NodeImpl addMethodNode(String name, Class<?>[] parameterTypes) {
195195
}
196196

197197
public NodeImpl makeLeafNodeIterable() {
198-
requiresWriteableNodeList();
198+
copyNodeList();
199199

200200
currentLeafNode = NodeImpl.makeIterable( currentLeafNode );
201201

@@ -205,7 +205,7 @@ public NodeImpl makeLeafNodeIterable() {
205205
}
206206

207207
public NodeImpl makeLeafNodeIterableAndSetIndex(Integer index) {
208-
requiresWriteableNodeList();
208+
copyNodeList();
209209

210210
currentLeafNode = NodeImpl.makeIterableAndSetIndex( currentLeafNode, index );
211211

@@ -215,7 +215,7 @@ public NodeImpl makeLeafNodeIterableAndSetIndex(Integer index) {
215215
}
216216

217217
public NodeImpl makeLeafNodeIterableAndSetMapKey(Object key) {
218-
requiresWriteableNodeList();
218+
copyNodeList();
219219

220220
currentLeafNode = NodeImpl.makeIterableAndSetMapKey( currentLeafNode, key );
221221

@@ -300,6 +300,10 @@ private void requiresWriteableNodeList() {
300300
return;
301301
}
302302

303+
copyNodeList();
304+
}
305+
306+
private void copyNodeList() {
303307
// Usually, the write operation is about adding one more node, so let's make the list one element larger.
304308
List<Node> newNodeList = new ArrayList<>( nodeList.size() + 1 );
305309
newNodeList.addAll( nodeList );

0 commit comments

Comments
 (0)