Refactor InferenceAction
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / reactor / ModifierImpl.java
index 53747f24b9afd2bd968c756b06278167044e1216..e917f958ef65a026d840982fc7866999e79e551d 100644 (file)
@@ -37,6 +37,8 @@ import org.slf4j.LoggerFactory;
 final class ModifierImpl implements ModelActionBuilder {
     private static final Logger LOG = LoggerFactory.getLogger(ModifierImpl.class);
 
+    private final InferenceContext ctx = new InferenceContext() { };
+
     private final Set<AbstractPrerequisite<?>> unsatisfied = new HashSet<>(1);
     private final Set<AbstractPrerequisite<?>> mutations = new HashSet<>(1);
 
@@ -88,7 +90,7 @@ final class ModifierImpl implements ModelActionBuilder {
 
     private void applyAction() {
         Preconditions.checkState(!actionApplied);
-        action.apply();
+        action.apply(ctx);
         actionApplied = true;
     }
 
@@ -250,8 +252,9 @@ final class ModifierImpl implements ModelActionBuilder {
         private T value;
 
         @Override
-        public final T get() {
-            Preconditions.checkState(isDone());
+        public final T resolve(final InferenceContext ctx) {
+            Preconditions.checkState(done);
+            Preconditions.checkArgument(ctx == ModifierImpl.this.ctx);
             return value;
         }
 
@@ -266,7 +269,7 @@ final class ModifierImpl implements ModelActionBuilder {
         }
 
         final <O> Prerequisite<O> transform(final Function<? super T, O> transformation) {
-            return () -> transformation.apply(get());
+            return ctx -> transformation.apply(resolve(ctx));
         }
 
         @Override