// Alternative history introduced in WRITE nodes. Instantiated when we touch any child underneath such a node.
private TreeNode writtenOriginal;
+ // Internal cache for TreeNodes created as part of validation
+ private SchemaAwareApplyOperation validatedOp;
+ private Optional<TreeNode> validatedCurrent;
+ private TreeNode validatedNode;
+
private ModifiedNode(final PathArgument identifier, final Optional<TreeNode> original, final ChildTrackingPolicy childPolicy) {
this.identifier = identifier;
this.original = original;
public static ModifiedNode createUnmodified(final TreeNode metadataTree, final ChildTrackingPolicy childPolicy) {
return new ModifiedNode(metadataTree.getIdentifier(), Optional.of(metadataTree), childPolicy);
}
+
+ void setValidatedNode(final SchemaAwareApplyOperation op, final Optional<TreeNode> current, final TreeNode node) {
+ this.validatedOp = Preconditions.checkNotNull(op);
+ this.validatedCurrent = Preconditions.checkNotNull(current);
+ this.validatedNode = Preconditions.checkNotNull(node);
+ }
+
+ TreeNode getValidatedNode(final SchemaAwareApplyOperation op, final Optional<TreeNode> current) {
+ return op.equals(validatedOp) && current.equals(validatedCurrent) ? validatedNode : null;
+ }
}