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();
67 Collection<StatementContextBase<?, ?, ?>> substatements();
73 boolean isSupportedToBuildEffective();
75 void setIsSupportedToBuildEffective(boolean isSupportedToBuild);
77 Collection<StatementContextBase<?, ?, ?>> getEffectOfStatement();
79 void addAsEffectOfStatement(StatementContextBase<?, ?, ?> ctx);
81 StatementContextBase<?, ?, ?> createCopy(
82 StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
83 throws SourceException;
85 StatementContextBase<?, ?, ?> createCopy(QNameModule newQNameModule,
86 StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
87 throws SourceException;
90 ORIGINAL, ADDED_BY_USES, ADDED_BY_AUGMENTATION, ADDED_BY_USES_AUGMENTATION
93 List<TypeOfCopy> getCopyHistory();
95 void addAllToCopyHistory(List<TypeOfCopy> typeOfCopyList);
97 void addToCopyHistory(TypeOfCopy typeOfCopy);
99 StatementContextBase<?, ?, ?> getOriginalCtx();
101 void setOriginalCtx(StatementContextBase<?, ?, ?> originalCtx);
103 boolean isRootContext();
105 void setOrder(int order);
109 void setCompletedPhase(ModelProcessingPhase completedPhase);
111 ModelProcessingPhase getCompletedPhase();
113 interface Mutable<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
114 extends StmtContext<A, D, E> {
117 StmtContext.Mutable<?, ?, ?> getParentContext();
119 <K, V, KT extends K, VT extends V, N extends IdentifierNamespace<K, V>> void addToNs(
120 Class<N> type, KT key, VT value)
121 throws NamespaceNotAvailableException;
124 StmtContext.Mutable<?, ?, ?> getRoot();
126 ModelActionBuilder newInferenceAction(ModelProcessingPhase phase);
128 <K, KT extends K, N extends StatementNamespace<K, ?, ?>> void addContext(
129 Class<N> namespace, KT key, StmtContext<?, ?, ?> stmt);