2 * Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.yangtools.yang.parser.spi.meta;
10 import java.util.List;
12 import org.opendaylight.yangtools.yang.common.QNameModule;
13 import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
14 import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
15 import java.util.Collection;
16 import javax.annotation.Nonnull;
17 import javax.annotation.Nullable;
18 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
19 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
20 import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
21 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
22 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
23 import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
25 public interface StmtContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> {
28 StatementSource getStatementSource();
31 StatementSourceReference getStatementSourceReference();
34 StatementDefinition getPublicDefinition();
37 StmtContext<?, ?, ?> getParentContext();
40 String rawStatementArgument();
43 A getStatementArgument();
46 List<Object> getArgumentsFromRoot();
48 List<StmtContext<?,?,?>> getStmtContextsFromRoot();
51 <K, V, KT extends K, N extends IdentifierNamespace<K, V>> V getFromNamespace(
52 Class<N> type, KT key) throws NamespaceNotAvailableException;
54 <K, V, N extends IdentifierNamespace<K, V>> Map<K, V> getAllFromNamespace(
57 <K, V, N extends IdentifierNamespace<K, V>> Map<K, V> getAllFromCurrentStmtCtxNamespace(Class<N> type);
60 StmtContext<?, ?, ?> getRoot();
63 Collection<StatementContextBase<?, ?, ?>> declaredSubstatements();
65 Collection<StatementContextBase<?, ?, ?>> effectiveSubstatements();
71 boolean isSupportedToBuildEffective();
73 void setIsSupportedToBuildEffective(boolean isSupportedToBuild);
75 Collection<StatementContextBase<?, ?, ?>> getEffectOfStatement();
77 void addAsEffectOfStatement(StatementContextBase<?, ?, ?> ctx);
79 StatementContextBase<?, ?, ?> createCopy(
80 StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
81 throws SourceException;
83 StatementContextBase<?, ?, ?> createCopy(QNameModule newQNameModule,
84 StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
85 throws SourceException;
88 ORIGINAL, ADDED_BY_USES, ADDED_BY_AUGMENTATION, ADDED_BY_USES_AUGMENTATION
91 List<TypeOfCopy> getCopyHistory();
93 void addAllToCopyHistory(List<TypeOfCopy> typeOfCopyList);
95 void addToCopyHistory(TypeOfCopy typeOfCopy);
97 StatementContextBase<?, ?, ?> getOriginalCtx();
99 void setOriginalCtx(StatementContextBase<?, ?, ?> originalCtx);
101 boolean isRootContext();
103 void setOrder(int order);
107 void setCompletedPhase(ModelProcessingPhase completedPhase);
109 ModelProcessingPhase getCompletedPhase();
111 interface Mutable<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
112 extends StmtContext<A, D, E> {
115 StmtContext.Mutable<?, ?, ?> getParentContext();
117 <K, V, KT extends K, VT extends V, N extends IdentifierNamespace<K, V>> void addToNs(
118 Class<N> type, KT key, VT value)
119 throws NamespaceNotAvailableException;
122 StmtContext.Mutable<?, ?, ?> getRoot();
124 ModelActionBuilder newInferenceAction(ModelProcessingPhase phase);
126 <K, KT extends K, N extends StatementNamespace<K, ?, ?>> void addContext(
127 Class<N> namespace, KT key, StmtContext<?, ?, ?> stmt);