Adjust for DataTreeTip.prepare() throwing a checked exception
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / main / java / org / opendaylight / mdsal / dom / store / inmemory / AbstractDOMShardTreeChangePublisher.java
index 94a17882b9309e4b3bd689380406690e1380e4a8..10533f9ff050712c18b23a8d7cc6a0da9068b169 100644 (file)
@@ -159,7 +159,7 @@ abstract class AbstractDOMShardTreeChangePublisher extends AbstractDOMStoreTreeC
                 findNodeFor(listenerPath.getPathArguments());
         @SuppressWarnings("unchecked")
         final AbstractDOMDataTreeChangeListenerRegistration<L> registration =
-                new AbstractDOMDataTreeChangeListenerRegistration<L>((L) listener) {
+                new AbstractDOMDataTreeChangeListenerRegistration<>((L) listener) {
             @Override
             protected void removeRegistration() {
                 listener.close();
@@ -246,15 +246,16 @@ abstract class AbstractDOMShardTreeChangePublisher extends AbstractDOMStoreTreeC
             }
 
             modification.ready();
+            DataTreeCandidateNode modifiedChild;
             try {
                 dataTree.validate(modification);
+                modifiedChild = dataTree.prepare(modification).getRootNode();
             } catch (final DataValidationFailedException e) {
                 LOG.error("Validation failed for built modification", e);
                 throw new IllegalStateException("Notification validation failed", e);
             }
 
             // strip nodes we do not need since this listener doesn't have to be registered at the root of the DataTree
-            DataTreeCandidateNode modifiedChild = dataTree.prepare(modification).getRootNode();
             for (final PathArgument pathArgument : listenerPath.getPathArguments()) {
                 modifiedChild = modifiedChild.getModifiedChild(pathArgument).orElse(null);
             }