@Override public <K, E extends EffectiveStatement<?, ?>, N extends StatementNamespace<K, ?, ? extends E>> AbstractPrerequisite<StmtContext<?, ?, E>> requiresEffectiveCtx(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) { return requiresCtxImpl(contextImpl(context), namespace, key, EFFECTIVE_MODEL); }
@Override public <C extends Mutable<?, ?, ?>, T extends C> Prerequisite<C> mutatesCtx(final T context, final ModelProcessingPhase phase) { return addMutation(new PhaseMutation<>(contextImpl(context), phase)); }
@Override public <N extends IdentifierNamespace<?, ?>> Prerequisite<Mutable<?, ?, ?>> mutatesNs( final Mutable<?, ?, ?> context, final Class<N> namespace) { return addMutation(new NamespaceMutation<>(contextImpl(context), namespace)); }
private <K, C extends StmtContext<?, ?, ?>, N extends StatementNamespace<K, ?, ?>> @NonNull AbstractPrerequisite<C> requiresCtxImpl(final StmtContext<?, ?, ?> context, final Class<N> namespace, final NamespaceKeyCriterion<K> criterion, final ModelProcessingPhase phase) { checkNotRegistered(); AddedToNamespace<C> addedToNs = new AddedToNamespace<>(phase); addReq(addedToNs); contextImpl(context).onNamespaceItemAddedAction(namespace, phase, criterion, addedToNs); return addedToNs; }
private <K, C extends StmtContext<?, ?, ?>, N extends StatementNamespace<K, ?, ?>> @NonNull AbstractPrerequisite<C> requiresCtxImpl(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key, final ModelProcessingPhase phase) { checkNotRegistered(); AddedToNamespace<C> addedToNs = new AddedToNamespace<>(phase); addReq(addedToNs); contextImpl(context).onNamespaceItemAddedAction(namespace, key, addedToNs); return addedToNs; }
private <C extends StmtContext<?, ?, ?>> @NonNull AbstractPrerequisite<C> requiresCtxImpl(final C context, final ModelProcessingPhase phase) { checkNotRegistered(); PhaseFinished<C> phaseFin = new PhaseFinished<>(); addReq(phaseFin); contextImpl(context).addPhaseCompletedListener(phase, phaseFin); return phaseFin; }
@SuppressWarnings({ "rawtypes", "unchecked" }) private <K, C extends Mutable<?, ?, ?>, N extends IdentifierNamespace<K, ? extends StmtContext<?, ?, ?>>> AbstractPrerequisite<C> mutatesCtxImpl(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key, final ModelProcessingPhase phase) { checkNotRegistered(); final PhaseModificationInNamespace<C> mod = new PhaseModificationInNamespace<>(EFFECTIVE_MODEL); addReq(mod); addMutation(mod); contextImpl(context).onNamespaceItemAddedAction((Class) namespace, key, mod); return mod; }