public final void validate(final DataTreeModification modification) throws DataValidationFailedException {
Preconditions.checkArgument(modification instanceof InMemoryDataTreeModification, "Invalid modification class %s", modification.getClass());
final InMemoryDataTreeModification m = (InMemoryDataTreeModification)modification;
+ Preconditions.checkArgument(m.isSealed(), "Attempted to verify unsealed modification %s", m);
- m.getStrategy().checkApplicable(PUBLIC_ROOT_PATH, m.getRootModification(), Optional.of(getTipRoot()));
+ m.getStrategy().checkApplicable(PUBLIC_ROOT_PATH, m.getRootModification(), Optional.of(getTipRoot()), m.getVersion());
}
@Override
public final DataTreeCandidateTip prepare(final DataTreeModification modification) {
Preconditions.checkArgument(modification instanceof InMemoryDataTreeModification, "Invalid modification class %s", modification.getClass());
-
final InMemoryDataTreeModification m = (InMemoryDataTreeModification)modification;
+ Preconditions.checkArgument(m.isSealed(), "Attempted to prepare unsealed modification %s", m);
+
final ModifiedNode root = m.getRootModification();
final TreeNode currentRoot = getTipRoot();
}
final Optional<TreeNode> newRoot = m.getStrategy().apply(m.getRootModification(),
- Optional.<TreeNode>of(currentRoot), m.getVersion());
+ Optional.of(currentRoot), m.getVersion());
Preconditions.checkState(newRoot.isPresent(), "Apply strategy failed to produce root node for modification %s", modification);
return new InMemoryDataTreeCandidate(PUBLIC_ROOT_PATH, root, currentRoot, newRoot.get());
}