yang.data.impl.schema.tree clean-up
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / AbstractDataTreeTip.java
index 9b1ef2d2ef50148aacbf47488c95ae4f718fe0d0..973c6fa0b072bb4488c83d6b3f494470f3a59152 100644 (file)
@@ -33,15 +33,17 @@ abstract class AbstractDataTreeTip implements DataTreeTip {
     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();
@@ -50,7 +52,7 @@ abstract class AbstractDataTreeTip implements DataTreeTip {
         }
 
         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());
     }