<name>${project.artifactId}</name>
<description>RFC6020/RFC7950 parser support</description>
- <properties>
- <!-- FIXME: YANGTOOLS-1056: remove this knob -->
- <odlparent.spotbugs.enforce>false</odlparent.spotbugs.enforce>
- </properties>
-
<dependencies>
<dependency>
<groupId>com.google.guava</groupId>
import static java.util.Objects.requireNonNull;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Optional;
import javax.xml.namespace.NamespaceContext;
import org.opendaylight.yangtools.yang.common.QNameModule;
/**
* A {@link NamespaceContext} implementation based on the set of imports and local module namespace.
*/
-// TODO: this is a useful utility, so it may be useful to expose it either in this package, or yang.parser.spi.source.
+// TODO: this is a useful utility, so it may be useful to expose it either in this package, or yang.parser.spi.source,
+// but that requires dealing with serialization below.
final class StmtNamespaceContext implements YangNamespaceContext {
- // FIXME: add serialization barrier
private static final long serialVersionUID = 1L;
+ // FIXME: deal with serialization by serializing the underlying namespace Map
+ @SuppressFBWarnings(value = "SE_BAD_FIELD", justification = "Not passed to serialization")
private final StmtContext<?, ?, ?> ctx;
StmtNamespaceContext(final StmtContext<?, ?, ?> ctx) {
return;
}
- final ModelActionBuilder augmentAction = augmentNode.newInferenceAction(
- ModelProcessingPhase.EFFECTIVE_MODEL);
- final Prerequisite<StmtContext<SchemaNodeIdentifier, AugmentStatement,
- AugmentEffectiveStatement>> sourceCtxPrereq =
- augmentAction.requiresCtx(augmentNode, ModelProcessingPhase.EFFECTIVE_MODEL);
- final Prerequisite<Mutable<?, ?, EffectiveStatement<?, ?>>> target =
- augmentAction.mutatesEffectiveCtxPath(getSearchRoot(augmentNode),
- ChildSchemaNodeNamespace.class, augmentNode.coerceStatementArgument().getPathFromRoot());
+ final ModelActionBuilder augmentAction = augmentNode.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
+ augmentAction.requiresCtx(augmentNode, ModelProcessingPhase.EFFECTIVE_MODEL);
+ final Prerequisite<Mutable<?, ?, EffectiveStatement<?, ?>>> target = augmentAction.mutatesEffectiveCtxPath(
+ getSearchRoot(augmentNode), ChildSchemaNodeNamespace.class,
+ augmentNode.coerceStatementArgument().getPathFromRoot());
augmentAction.apply(new InferenceAction() {
@Override
final QName baseIdentityQName = baseStmtCtx.coerceStatementArgument();
final ModelActionBuilder baseIdentityAction = baseStmtCtx.newInferenceAction(
ModelProcessingPhase.STATEMENT_DEFINITION);
- final Prerequisite<StmtContext<?, ?, ?>> requiresPrereq = baseIdentityAction.requiresCtx(baseStmtCtx,
- IdentityNamespace.class, baseIdentityQName, ModelProcessingPhase.STATEMENT_DEFINITION);
- final Prerequisite<Mutable<?, ?, ?>> mutatesPrereq = baseIdentityAction.mutatesCtx(baseParentCtx,
+ baseIdentityAction.requiresCtx(baseStmtCtx, IdentityNamespace.class, baseIdentityQName,
ModelProcessingPhase.STATEMENT_DEFINITION);
+ baseIdentityAction.mutatesCtx(baseParentCtx, ModelProcessingPhase.STATEMENT_DEFINITION);
baseIdentityAction.apply(new InferenceAction() {
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
-import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
abstract class AbstractContainerStatementSupport
extends BaseQNameStatementSupport<ContainerStatement, ContainerEffectiveStatement> {
final StmtContext<QName, ContainerStatement, ContainerEffectiveStatement> ctx,
final ContainerStatement declared, final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- final StatementSourceReference ref = ctx.getStatementSourceReference();
final SchemaPath path = ctx.getSchemaPath().get();
final ContainerSchemaNode original = (ContainerSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective)
.orElse(null);
final ModelActionBuilder importAction = stmt.newInferenceAction(SOURCE_PRE_LINKAGE);
final Prerequisite<StmtContext<?, ?, ?>> imported = importAction.requiresCtx(stmt,
PreLinkageModuleNamespace.class, moduleName, SOURCE_PRE_LINKAGE);
- final Prerequisite<Mutable<?, ?, ?>> linkageTarget = importAction
- .mutatesCtx(stmt.getRoot(), SOURCE_PRE_LINKAGE);
+ importAction.mutatesCtx(stmt.getRoot(), SOURCE_PRE_LINKAGE);
importAction.apply(new InferenceAction() {
@Override
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.uses;
import com.google.common.base.Verify;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Optional;
* @throws SourceException
* instance of SourceException
*/
+ @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
+ justification = "https://github.com/spotbugs/spotbugs/issues/811")
private static void copyFromSourceToTarget(final Mutable<?, ?, ?> sourceGrpStmtCtx,
final StatementContextBase<?, ?, ?> targetCtx,
final Mutable<QName, UsesStatement, UsesEffectiveStatement> usesNode) {
usesNode.addAsEffectOfStatement(buffer);
}
-
private static boolean shouldCopy(final StmtContext<?, ?, ?> stmt) {
// https://tools.ietf.org/html/rfc7950#section-7.13:
//
return null;
}
+ @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
+ justification = "https://github.com/spotbugs/spotbugs/issues/811")
private static void resolveUsesNode(final Mutable<QName, UsesStatement, UsesEffectiveStatement> usesNode,
final StmtContext<?, ?, ?> targetNodeStmtCtx) {
for (final Mutable<?, ?, ?> subStmtCtx : usesNode.mutableDeclaredSubstatements()) {