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);
private void applyAction() {
Preconditions.checkState(!actionApplied);
- action.apply();
+ action.apply(ctx);
actionApplied = true;
}
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;
}
}
final <O> Prerequisite<O> transform(final Function<? super T, O> transformation) {
- return () -> transformation.apply(get());
+ return ctx -> transformation.apply(resolve(ctx));
}
@Override