From: Robert Varga Date: Sun, 17 Sep 2017 08:03:45 +0000 (+0200) Subject: Another round of checkstyle fixes X-Git-Tag: v2.0.0~234 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=30d51f4c77264c9b3904caf3a544d38345f7a462;p=yangtools.git Another round of checkstyle fixes Brings down the number of violations to under 700. Change-Id: I8da94e59b13fa109832b6d903045c352ad47786c Signed-off-by: Robert Varga --- diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/AbstractYangTextSchemaSourceRegistration.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/AbstractYangTextSchemaSourceRegistration.java index db3569ddd3..bbab150bfe 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/AbstractYangTextSchemaSourceRegistration.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/AbstractYangTextSchemaSourceRegistration.java @@ -10,7 +10,8 @@ package org.opendaylight.yangtools.yang.parser.repo; import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource; -public abstract class AbstractYangTextSchemaSourceRegistration extends AbstractObjectRegistration implements YangTextSchemaSourceRegistration { +public abstract class AbstractYangTextSchemaSourceRegistration extends AbstractObjectRegistration + implements YangTextSchemaSourceRegistration { protected AbstractYangTextSchemaSourceRegistration(final YangTextSchemaSource instance) { super(instance); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java index bc339f7f54..16ba9878bb 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/DependencyResolver.java @@ -32,11 +32,10 @@ import org.slf4j.LoggerFactory; * corresponding dependency information, the {@link #create(Map)} method creates a * a view of how consistent the dependencies are. In particular, this detects whether * any imports are unsatisfied. - * - * FIXME: improve this class to track and expose how wildcard imports were resolved. - * That information will allow us to track "damage" to dependency resolution - * as new models are added to a schema context. */ +// FIXME: improve this class to track and expose how wildcard imports were resolved. +// That information will allow us to track "damage" to dependency resolution +// as new models are added to a schema context. abstract class DependencyResolver { private static final Logger LOG = LoggerFactory.getLogger(DependencyResolver.class); private final Collection resolvedSources; @@ -110,12 +109,10 @@ abstract class DependencyResolver { this.unsatisfiedImports = ImmutableMultimap.copyOf(imports); } - abstract protected boolean isKnown(final Collection haystack, final ModuleImport mi); + protected abstract boolean isKnown(Collection haystack, ModuleImport mi); /** * Collection of sources which have been resolved. - * - * @return */ Collection getResolvedSources() { return resolvedSources; @@ -123,8 +120,6 @@ abstract class DependencyResolver { /** * Collection of sources which have not been resolved due to missing dependencies. - * - * @return */ Collection getUnresolvedSources() { return unresolvedSources; @@ -135,18 +130,19 @@ abstract class DependencyResolver { * is the source identifier of module which was issuing an import, the values * are imports which were unsatisfied. * + *

* Note that this map contains only imports which are missing from the reactor, * not transitive failures. * + *

* Examples: - * + *

  • * If A imports B, B imports C, and both A and B are in the reactor, only B->C * will be reported. - * + *
  • * If A imports B and C, B imports C, and both A and B are in the reactor, * A->C and B->C will be reported. - * - * @return + *
*/ Multimap getUnsatisfiedImports() { return unsatisfiedImports; @@ -155,7 +151,7 @@ abstract class DependencyResolver { private static class BelongsToDependency implements ModuleImport { private final String parent; - public BelongsToDependency(final String parent) { + BelongsToDependency(final String parent) { this.parent = parent; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SemVerDependencyResolver.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SemVerDependencyResolver.java index 8567254762..b7174fa5b1 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SemVerDependencyResolver.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SemVerDependencyResolver.java @@ -23,7 +23,8 @@ final class SemVerDependencyResolver extends DependencyResolver { super(depInfo); } - protected static SourceIdentifier findCompatibleVersion(final Iterable haystack, final ModuleImport mi) { + protected static SourceIdentifier findCompatibleVersion(final Iterable haystack, + final ModuleImport mi) { final String requestedModuleName = mi.getModuleName(); for (SourceIdentifier r : haystack) { if (requestedModuleName.equals(r.getName()) @@ -42,7 +43,8 @@ final class SemVerDependencyResolver extends DependencyResolver { @Override protected boolean isKnown(final Collection haystack, final ModuleImport mi) { final String rev = mi.getRevision() != null ? QName.formattedRevision(mi.getRevision()) : null; - final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), Optional.fromNullable(rev), mi.getSemanticVersion()); + final SemVerSourceIdentifier msi = SemVerSourceIdentifier.create(mi.getModuleName(), Optional.fromNullable(rev), + mi.getSemanticVersion()); // Quick lookup if (haystack.contains(msi)) { @@ -56,4 +58,4 @@ final class SemVerDependencyResolver extends DependencyResolver { public static SemVerDependencyResolver create(final Map depInfo) { return new SemVerDependencyResolver(depInfo); } -} \ No newline at end of file +} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java index 0288d7afec..ce9ed35776 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaContextFactory.java @@ -65,7 +65,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { // FIXME SchemaRepository should be the type for repository parameter instead of SharedSchemaRepository // (final implementation) - public SharedSchemaContextFactory(final SharedSchemaRepository repository, final SchemaSourceFilter filter) { + SharedSchemaContextFactory(final SharedSchemaRepository repository, final SchemaSourceFilter filter) { this.repository = Preconditions.checkNotNull(repository); this.filter = Preconditions.checkNotNull(filter); } @@ -79,10 +79,6 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { new AssembleSources(Optional.ofNullable(supportedFeatures), statementParserMode)); } - private ListenableFuture requestSource(final SourceIdentifier identifier) { - return repository.getSchemaSource(identifier, ASTSchemaSource.class); - } - private CheckedFuture createSchemaContext( final Collection requiredSources, final Cache, SchemaContext> cache, @@ -118,15 +114,21 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { } @Override - public void onFailure(@Nonnull final Throwable t) { - LOG.debug("Failed to assemble sources", t); + public void onFailure(@Nonnull final Throwable cause) { + LOG.debug("Failed to assemble sources", cause); } }, MoreExecutors.directExecutor()); return Futures.makeChecked(cf, MAPPER); } + private ListenableFuture requestSource(final SourceIdentifier identifier) { + return repository.getSchemaSource(identifier, ASTSchemaSource.class); + } + /** + * Return a set of de-duplicated inputs. + * * @return set (preserving ordering) from the input collection */ private static List deDuplicateSources(final Collection requiredSources) { @@ -145,7 +147,7 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { List> { private final List sourceIdentifiers; - public SourceIdMismatchDetector(final List sourceIdentifiers) { + SourceIdMismatchDetector(final List sourceIdentifiers) { this.sourceIdentifiers = Preconditions.checkNotNull(sourceIdentifiers); } @@ -186,11 +188,11 @@ final class SharedSchemaContextFactory implements SchemaContextFactory { this.supportedFeatures = supportedFeatures; this.statementParserMode = Preconditions.checkNotNull(statementParserMode); switch (statementParserMode) { - case SEMVER_MODE: - this.getIdentifier = ASTSchemaSource::getSemVerIdentifier; - break; - default: - this.getIdentifier = ASTSchemaSource::getIdentifier; + case SEMVER_MODE: + this.getIdentifier = ASTSchemaSource::getSemVerIdentifier; + break; + default: + this.getIdentifier = ASTSchemaSource::getIdentifier; } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepository.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepository.java index b920383b90..6c615b58a9 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepository.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/SharedSchemaRepository.java @@ -12,7 +12,6 @@ import com.google.common.base.Preconditions; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; - import javax.annotation.Nonnull; import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.model.api.SchemaContext; @@ -23,11 +22,10 @@ import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.model.repo.util.AbstractSchemaRepository; /** - * A {@link SchemaRepository} which allows sharing of {@link SchemaContext} as - * long as their specification is the same. + * A {@link SchemaRepository} which allows sharing of {@link SchemaContext} as long as their specification is the same. * - * Note: for current implementation, "same" means the same filter and the same - * set of {@link SourceIdentifier}s. + *

+ * Note: for current implementation, "same" means the same filter and the same set of {@link SourceIdentifier}s. */ @Beta public final class SharedSchemaRepository extends AbstractSchemaRepository implements Identifiable { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/YangTextSchemaContextResolver.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/YangTextSchemaContextResolver.java index 1e1b3882e3..debdb6e982 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/YangTextSchemaContextResolver.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/repo/YangTextSchemaContextResolver.java @@ -86,10 +86,10 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem * Register a {@link YangTextSchemaSource}. * * @param source YANG text source + * @return a YangTextSchemaSourceRegistration * @throws YangSyntaxErrorException When the YANG file is syntactically invalid * @throws IOException when the URL is not readable * @throws SchemaSourceException When parsing encounters general error - * @return a YangTextSchemaSourceRegistration */ public YangTextSchemaSourceRegistration registerSource(@Nonnull final YangTextSchemaSource source) throws SchemaSourceException, IOException, YangSyntaxErrorException { @@ -155,10 +155,10 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem * Register a URL containing a YANG text. * * @param url YANG text source URL + * @return a YangTextSchemaSourceRegistration for this URL * @throws YangSyntaxErrorException When the YANG file is syntactically invalid * @throws IOException when the URL is not readable * @throws SchemaSourceException When parsing encounters general error - * @return a YangTextSchemaSourceRegistration for this URL */ public YangTextSchemaSourceRegistration registerSource(@Nonnull final URL url) throws SchemaSourceException, IOException, YangSyntaxErrorException { @@ -191,6 +191,7 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem /** * Try to parse all currently available yang files and build new schema context. + * * @return new schema context iif there is at least 1 yang file registered and * new schema context was successfully built. */ @@ -199,8 +200,7 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem } /** - * Try to parse all currently available yang files and build new schema context - * in dependence on specified parsing mode. + * Try to parse all currently available yang files and build new schema context depending on specified parsing mode. * * @param statementParserMode mode of statement parser * @return new schema context iif there is at least 1 yang file registered and @@ -209,7 +209,7 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem public Optional getSchemaContext(final StatementParserMode statementParserMode) { final SchemaContextFactory factory = repository.createSchemaContextFactory(SchemaSourceFilter.ALWAYS_ACCEPT); Optional sc; - Object v; + Object ver; do { // Spin get stable context version Object cv; @@ -224,9 +224,9 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem // Version has been updated Collection sources; do { - v = version; + ver = version; sources = ImmutableSet.copyOf(requiredSources); - } while (v != version); + } while (ver != version); while (true) { final CheckedFuture f = factory.createSchemaContext(sources, @@ -245,10 +245,10 @@ public final class YangTextSchemaContextResolver implements AutoCloseable, Schem synchronized (this) { if (contextVersion == cv) { currentSchemaContext.set(sc); - contextVersion = v; + contextVersion = ver; } } - } while (version == v); + } while (version == ver); return sc; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/StatementSourceReferenceHandler.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/StatementSourceReferenceHandler.java index 9e5ad0b028..1ee3f9f38f 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/StatementSourceReferenceHandler.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/rfc6020/repo/StatementSourceReferenceHandler.java @@ -57,7 +57,9 @@ final class StatementSourceReferenceHandler extends DefaultHandler { } @Override - public void startElement(final String uri, final String localName, final String qName, final Attributes attributes) { + @SuppressWarnings("checkstyle:parameterName") + public void startElement(final String uri, final String localName, final String qName, + final Attributes attributes) { addTextIfNeeded(); final Element el = doc.createElementNS(uri, qName); for (int i = 0, len = attributes.getLength(); i < len; i++) { @@ -95,4 +97,4 @@ final class StatementSourceReferenceHandler extends DefaultHandler { sb.setLength(0); } } -} \ No newline at end of file +} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java index 156fbe8c7c..51a39fb805 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java @@ -46,6 +46,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.ModelProcessingPhase; import org.opendaylight.yangtools.yang.parser.spi.meta.MutableStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.NamespaceStorageNode; +import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.Registry; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.StorageNodeType; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException; import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException; @@ -65,11 +66,11 @@ import org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext import org.slf4j.Logger; import org.slf4j.LoggerFactory; -class BuildGlobalContext extends NamespaceStorageSupport implements NamespaceBehaviour.Registry { +class BuildGlobalContext extends NamespaceStorageSupport implements Registry { private static final Logger LOG = LoggerFactory.getLogger(BuildGlobalContext.class); - private static final List PHASE_EXECUTION_ORDER = ImmutableList - . builder().add(ModelProcessingPhase.SOURCE_PRE_LINKAGE) + private static final List PHASE_EXECUTION_ORDER = + ImmutableList.builder().add(ModelProcessingPhase.SOURCE_PRE_LINKAGE) .add(ModelProcessingPhase.SOURCE_LINKAGE).add(ModelProcessingPhase.STATEMENT_DEFINITION) .add(ModelProcessingPhase.FULL_DECLARATION).add(ModelProcessingPhase.EFFECTIVE_MODEL).build(); @@ -378,8 +379,9 @@ class BuildGlobalContext extends NamespaceStorageSupport implements NamespaceBeh switch (sourceProgress) { case FINISHED: currentSource.remove(); - // Fallback to progress, since we were able to make - // progress in computation + // we were able to make progress in computation + progressing = true; + break; case PROGRESS: progressing = true; break; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java index 122fad3013..3e4ff41640 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/CrossSourceStatementReactor.java @@ -33,12 +33,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle; import org.opendaylight.yangtools.yang.parser.spi.source.StatementStreamSource; import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangStatementSourceImpl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public final class CrossSourceStatementReactor { - private static final Logger LOG = LoggerFactory.getLogger(CrossSourceStatementReactor.class); - private final Map supportedTerminology; private final Map> supportedValidation; @@ -124,8 +120,8 @@ public final class CrossSourceStatementReactor { * @return A new {@link BuildAction}. * @throws NullPointerException if statementParserMode is null * - * @deprecated Use {@link #newBuild(StatementParserMode)} and then call setSupportedFeatures() - * on the created BuildAction instead. + * @deprecated Use {@link #newBuild(StatementParserMode)} and then call setSupportedFeatures() on the created + * BuildAction instead. */ @Deprecated public BuildAction newBuild(final StatementParserMode statementParserMode, @@ -148,8 +144,8 @@ public final class CrossSourceStatementReactor { * @return A new {@link BuildAction}. * @throws NullPointerException if statementParserMode is null * - * @deprecated Use {@link #newBuild(StatementParserMode)} and then call setSupportedFeatures() - * on the created BuildAction instead. + * @deprecated Use {@link #newBuild(StatementParserMode)} and then call setSupportedFeatures() on the created + * BuildAction instead. */ @Deprecated public BuildAction newBuild(final StatementParserMode statementParserMode, @@ -195,8 +191,7 @@ public final class CrossSourceStatementReactor { } /** - * Add main source. All main sources are present in resulting - * SchemaContext. + * Add main source. All main sources are present in resulting SchemaContext. * * @param source * which should be added into main sources @@ -206,8 +201,7 @@ public final class CrossSourceStatementReactor { } /** - * Add main sources. All main sources are present in resulting - * SchemaContext. + * Add main sources. All main sources are present in resulting SchemaContext. * * @param sources * which should be added into main sources @@ -223,10 +217,10 @@ public final class CrossSourceStatementReactor { } /** - * Add library sources. Only library sources required by main sources - * are present in resulting SchemaContext. Any other library sources are - * ignored and this also applies to error reporting. + * Add library sources. Only library sources required by main sources are present in resulting SchemaContext. + * Any other library sources are ignored and this also applies to error reporting. * + *

* Library sources are not supported in semantic version mode currently. * * @param libSources @@ -273,8 +267,7 @@ public final class CrossSourceStatementReactor { } /** - * @throws org.opendaylight.yangtools.yang.parser.spi.source.SourceException - * @throws ReactorException + * Build the effective model context. */ public EffectiveModelContext build() throws ReactorException { return context.build(); @@ -285,6 +278,8 @@ public final class CrossSourceStatementReactor { } /** + * Add specified sources and assemble the resulting SchemaContext. + * * @deprecated Use {@link #addSources(Collection)} and {@link #buildEffective()} instead. */ @Deprecated @@ -306,6 +301,8 @@ public final class CrossSourceStatementReactor { } /** + * Add specified sources and assemble the resulting SchemaContext. + * * @deprecated Use {@link #addSources(Collection)} and {@link #buildEffective()} instead. */ @Deprecated @@ -317,4 +314,4 @@ public final class CrossSourceStatementReactor { return buildEffective(); } } -} \ No newline at end of file +} diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java index d0dc9cfc43..13e7700cf4 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/EffectiveSchemaContext.java @@ -46,11 +46,13 @@ public final class EffectiveSchemaContext extends SimpleSchemaContext { } /** + * Resolve SchemaContext for a set of modules. + * * @deprecated Use {@link SimpleSchemaContext#forModules(Set)} instead. */ @Deprecated public static SchemaContext resolveSchemaContext(final Set modules) { - return SimpleSchemaContext.forModules(modules); + return SimpleSchemaContext.forModules(modules); } @VisibleForTesting diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java index e917f958ef..5a7a62137e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java @@ -61,8 +61,9 @@ final class ModifierImpl implements ModelActionBuilder { Preconditions.checkState(action == null, "Action was already registered."); } - private static IllegalStateException shouldNotHappenProbablyBug(final SourceException e) { - return new IllegalStateException("Source exception during registering prerequisite. This is probably bug.", e); + private static IllegalStateException shouldNotHappenProbablyBug(final SourceException cause) { + return new IllegalStateException("Source exception during registering prerequisite. This is probably bug.", + cause); } private boolean removeSatisfied() { @@ -125,9 +126,10 @@ final class ModifierImpl implements ModelActionBuilder { } @SuppressWarnings({ "rawtypes", "unchecked" }) - private , N extends IdentifierNamespace>> - AbstractPrerequisite mutatesCtxImpl(final StmtContext context, final Class namespace, - final K key, final ModelProcessingPhase phase) { + private , + N extends IdentifierNamespace>> AbstractPrerequisite mutatesCtxImpl( + final StmtContext context, final Class namespace, final K key, + final ModelProcessingPhase phase) { checkNotRegistered(); try { @@ -142,7 +144,8 @@ final class ModifierImpl implements ModelActionBuilder { } private static StatementContextBase contextImpl(final Object value) { - Preconditions.checkArgument(value instanceof StatementContextBase,"Supplied context was not provided by this reactor."); + Preconditions.checkArgument(value instanceof StatementContextBase, + "Supplied context %s is not provided by this reactor.", value); return StatementContextBase.class.cast(value); } @@ -158,7 +161,8 @@ final class ModifierImpl implements ModelActionBuilder { @Nonnull @Override - public , CT extends C> Prerequisite mutatesCtx(final CT context, final ModelProcessingPhase phase) { + public , CT extends C> Prerequisite mutatesCtx(final CT context, + final ModelProcessingPhase phase) { try { return addMutation(new PhaseMutation<>(contextImpl(context), phase)); } catch (InferenceException e) { @@ -168,64 +172,73 @@ final class ModifierImpl implements ModelActionBuilder { @Nonnull @Override - public ,E extends EffectiveStatement> AbstractPrerequisite> requiresCtx(final StmtContext context, final ModelProcessingPhase phase) { + public ,E extends EffectiveStatement> + AbstractPrerequisite> requiresCtx(final StmtContext context, + final ModelProcessingPhase phase) { return requiresCtxImpl(context, phase); } @Nonnull @Override - public > Prerequisite> requiresCtx(final StmtContext context, final Class namespace, final K key, final ModelProcessingPhase phase) { + public > Prerequisite> requiresCtx( + final StmtContext context, final Class namespace, final K key, + final ModelProcessingPhase phase) { return requiresCtxImpl(context, namespace, key, phase); } @Nonnull @Override - public > Prerequisite requiresDeclared(final StmtContext context) { + public > Prerequisite requiresDeclared( + final StmtContext context) { return requiresCtxImpl(context, FULL_DECLARATION).transform(StmtContext::buildDeclared); } @Nonnull @Override - public , N extends StatementNamespace> AbstractPrerequisite> requiresDeclaredCtx( - final StmtContext context, final Class namespace, final K key) { - return requiresCtxImpl(context, namespace, key, FULL_DECLARATION); + public , N extends StatementNamespace> Prerequisite + requiresDeclared(final StmtContext context, final Class namespace, final K key) { + final AbstractPrerequisite> rawContext = requiresCtxImpl(context, namespace, key, + FULL_DECLARATION); + return rawContext.transform(StmtContext::buildDeclared); } @Nonnull @Override - public , N extends StatementNamespace> Prerequisite requiresDeclared( - final StmtContext context, final Class namespace, final K key) { - final AbstractPrerequisite> rawContext = requiresCtxImpl(context, namespace, key, FULL_DECLARATION); - return rawContext.transform(StmtContext::buildDeclared); + public , N extends StatementNamespace> + AbstractPrerequisite> requiresDeclaredCtx(final StmtContext context, + final Class namespace, final K key) { + return requiresCtxImpl(context, namespace, key, FULL_DECLARATION); } @Nonnull @Override - public > Prerequisite requiresEffective(final StmtContext stmt) { + public > Prerequisite requiresEffective( + final StmtContext stmt) { return requiresCtxImpl(stmt, EFFECTIVE_MODEL).transform(StmtContext::buildEffective); } @Nonnull @Override - public , N extends StatementNamespace> AbstractPrerequisite> requiresEffectiveCtx( - final StmtContext context, final Class namespace, final K key) { - return requiresCtxImpl(contextImpl(context), namespace, key, EFFECTIVE_MODEL); + public , N extends StatementNamespace> Prerequisite + requiresEffective(final StmtContext context, final Class namespace, final K key) { + final AbstractPrerequisite> rawContext = requiresCtxImpl(context, namespace, key, + EFFECTIVE_MODEL); + return rawContext.transform(StmtContext::buildEffective); } @Nonnull @Override - public , N extends StatementNamespace> Prerequisite requiresEffective( - final StmtContext context, final Class namespace, final K key) { - final AbstractPrerequisite> rawContext = requiresCtxImpl(context, namespace, key, EFFECTIVE_MODEL); - return rawContext.transform(StmtContext::buildEffective); + public , N extends StatementNamespace> + AbstractPrerequisite> requiresEffectiveCtx(final StmtContext context, + final Class namespace, final K key) { + return requiresCtxImpl(contextImpl(context), namespace, key, EFFECTIVE_MODEL); } - @Nonnull @Override - public > Prerequisite> mutatesNs(final Mutable context, - final Class namespace) { + public > Prerequisite> mutatesNs( + final Mutable context, final Class namespace) { try { return addMutation(new NamespaceMutation<>(contextImpl(context), namespace)); } catch (SourceException e) { @@ -235,8 +248,9 @@ final class ModifierImpl implements ModelActionBuilder { @Nonnull @Override - public , N extends IdentifierNamespace>> AbstractPrerequisite> mutatesEffectiveCtx( - final StmtContext context, final Class namespace, final K key) { + public , N extends IdentifierNamespace>> + AbstractPrerequisite> mutatesEffectiveCtx(final StmtContext context, + final Class namespace, final K key) { return mutatesCtxImpl(context, namespace, key, EFFECTIVE_MODEL); } @@ -247,7 +261,6 @@ final class ModifierImpl implements ModelActionBuilder { } private abstract class AbstractPrerequisite implements Prerequisite { - private boolean done = false; private T value; @@ -284,7 +297,7 @@ final class ModifierImpl implements ModelActionBuilder { private class PhaseMutation extends AbstractPrerequisite implements ContextMutation { @SuppressWarnings("unchecked") - public PhaseMutation(final StatementContextBase context, final ModelProcessingPhase phase) { + PhaseMutation(final StatementContextBase context, final ModelProcessingPhase phase) { context.addMutation(phase, this); resolvePrereq((C) context); } @@ -295,7 +308,8 @@ final class ModifierImpl implements ModelActionBuilder { } } - private class PhaseFinished> extends AbstractPrerequisite implements OnPhaseFinished { + private class PhaseFinished> extends AbstractPrerequisite + implements OnPhaseFinished { @SuppressWarnings("unchecked") @Override public boolean phaseFinished(final StatementContextBase context, final ModelProcessingPhase phase) { @@ -303,24 +317,25 @@ final class ModifierImpl implements ModelActionBuilder { } } - private class NamespaceMutation> extends AbstractPrerequisite> { - public NamespaceMutation(final StatementContextBase ctx, final Class namespace) { + private class NamespaceMutation> + extends AbstractPrerequisite> { + NamespaceMutation(final StatementContextBase ctx, final Class namespace) { resolvePrereq(ctx); } } - private class AddedToNamespace> extends AbstractPrerequisite implements OnNamespaceItemAdded,OnPhaseFinished { + private class AddedToNamespace> extends AbstractPrerequisite + implements OnNamespaceItemAdded, OnPhaseFinished { private final ModelProcessingPhase phase; - public > AddedToNamespace(final ModelProcessingPhase phase) { + AddedToNamespace(final ModelProcessingPhase phase) { this.phase = phase; } @Override - public void namespaceItemAdded(final StatementContextBase context, final Class namespace, final Object key, - final Object value) { - StatementContextBase targetContext = (StatementContextBase) value; - targetContext.addPhaseCompletedListener(phase, this); + public void namespaceItemAdded(final StatementContextBase context, final Class namespace, + final Object key, final Object value) { + ((StatementContextBase) value).addPhaseCompletedListener(phase, this); } @SuppressWarnings("unchecked") @@ -335,18 +350,19 @@ final class ModifierImpl implements ModelActionBuilder { } } - private class PhaseModificationInNamespace> extends AbstractPrerequisite implements OnNamespaceItemAdded, ContextMutation { + private class PhaseModificationInNamespace> extends AbstractPrerequisite + implements OnNamespaceItemAdded, ContextMutation { private final ModelProcessingPhase modPhase; - public > PhaseModificationInNamespace(final ModelProcessingPhase phase) { + PhaseModificationInNamespace(final ModelProcessingPhase phase) { Preconditions.checkArgument(phase != null, "Model processing phase must not be null"); this.modPhase = phase; } @SuppressWarnings("unchecked") @Override - public void namespaceItemAdded(final StatementContextBase context, final Class namespace, final Object key, - final Object value) { + public void namespaceItemAdded(final StatementContextBase context, final Class namespace, + final Object key, final Object value) { StatementContextBase targetCtx = contextImpl(value); targetCtx.addMutation(modPhase, this); resolvePrereq((C) targetCtx); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceBehaviourWithListeners.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceBehaviourWithListeners.java index 83225d0649..9682e84a75 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceBehaviourWithListeners.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceBehaviourWithListeners.java @@ -21,7 +21,7 @@ abstract class NamespaceBehaviourWithListeners delegate; private final List> derivedNamespaces = new ArrayList<>(); - protected NamespaceBehaviourWithListeners(final NamespaceBehaviour delegate) { super(delegate.getIdentifier()); this.delegate = delegate; @@ -55,10 +54,10 @@ abstract class NamespaceBehaviourWithListeners listener, NamespaceStorageNode storage, V value); @Override - public abstract void addTo(final NamespaceStorageNode storage, final K key, final V value); + public abstract void addTo(NamespaceStorageNode storage, K key, V value); - protected void notifyListeners(final NamespaceStorageNode storage, final Iterator> keyListeners, - final V value) { + protected void notifyListeners(final NamespaceStorageNode storage, + final Iterator> keyListeners, final V value) { List> toNotify = new ArrayList<>(); while (keyListeners.hasNext()) { ValueAddedListener listener = keyListeners.next(); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java index ba55707b37..6ca662a455 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/NamespaceStorageSupport.java @@ -17,8 +17,8 @@ import javax.annotation.Nonnull; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace; -import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.NamespaceStorageNode; +import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.Registry; import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceNotAvailableException; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; @@ -32,9 +32,11 @@ abstract class NamespaceStorageSupport implements NamespaceStorageNode { public abstract NamespaceStorageNode getParentNamespaceStorage(); /** + * Return the registry of a source context. + * * @return registry of source context */ - public abstract NamespaceBehaviour.Registry getBehaviourRegistry(); + public abstract Registry getBehaviourRegistry(); protected void checkLocalNamespaceAllowed(final Class> type) { // NOOP @@ -53,10 +55,10 @@ abstract class NamespaceStorageSupport implements NamespaceStorageNode { @Nonnull public final > V getFromNamespace(final Class type, final KT key) throws NamespaceNotAvailableException { - return getBehaviourRegistry().getNamespaceBehaviour(type).getFrom(this,key); + return getBehaviourRegistry().getNamespaceBehaviour(type).getFrom(this, key); } - public final > Map getAllFromNamespace(final Class type){ + public final > Map getAllFromNamespace(final Class type) { return getBehaviourRegistry().getNamespaceBehaviour(type).getAllFrom(this); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java index 31f197e79c..a917e53d6a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/RootStatementContext.java @@ -68,19 +68,15 @@ public class RootStatementContext, E extends E this.setRootIdentifier(identifier); } - /** - * @return null as root cannot have parent - */ @Override public StatementContextBase getParentContext() { + // null as root cannot have parent return null; } - /** - * @return namespace storage of source context - */ @Override public NamespaceStorageNode getParentNamespaceStorage() { + // namespace storage of source context return sourceContext; } @@ -93,12 +89,11 @@ public class RootStatementContext, E extends E public StorageNodeType getStorageNodeType() { return StorageNodeType.ROOT_STATEMENT_LOCAL; } - /** - * @return this as its own root - */ + @Nonnull @Override public RootStatementContext getRoot() { + // this as its own root return this; } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java index 3f9341a9eb..48a06d0a7e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SourceSpecificContext.java @@ -67,8 +67,9 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh } private static final Logger LOG = LoggerFactory.getLogger(SourceSpecificContext.class); + private final Multimap modifiers = HashMultimap.create(); - private final QNameToStatementDefinitionMap qNameToStmtDefMap = new QNameToStatementDefinitionMap(); + private final QNameToStatementDefinitionMap qnameToStmtDefMap = new QNameToStatementDefinitionMap(); private final PrefixToModuleMap prefixToModuleMap = new PrefixToModuleMap(); private final BuildGlobalContext currentContext; private final StatementStreamSource source; @@ -88,7 +89,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh this.source = Preconditions.checkNotNull(source); } - boolean isEnabledSemanticVersioning(){ + boolean isEnabledSemanticVersioning() { return currentContext.isEnabledSemanticVersioning(); } @@ -113,7 +114,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh if (def == null) { def = currentContext.getModelDefinedStatementDefinition(name); if (def == null) { - final StatementSupport extension = qNameToStmtDefMap.get(name); + final StatementSupport extension = qnameToStmtDefMap.get(name); if (extension != null) { def = new StatementDefinitionContext<>(extension); currentContext.putModelDefinedStatementDefinition(name, def); @@ -158,14 +159,15 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh root = new RootStatementContext<>(this, def, ref, argument); } else if (!RootStatementContext.DEFAULT_VERSION.equals(root.getRootVersion()) && inProgressPhase == ModelProcessingPhase.SOURCE_LINKAGE) { - root = new RootStatementContext<>(this, def, ref, argument, root.getRootVersion(), root.getRootIdentifier()); + root = new RootStatementContext<>(this, def, ref, argument, root.getRootVersion(), + root.getRootIdentifier()); } else { final QName rootStatement = root.definition().getStatementName(); final String rootArgument = root.rawStatementArgument(); Preconditions.checkState(Objects.equals(def.getStatementName(), rootStatement) - && Objects.equals(argument, rootArgument), - "Root statement was already defined as '%s %s'.", rootStatement, rootArgument); + && Objects.equals(argument, rootArgument), "Root statement was already defined as '%s %s'.", + rootStatement, rootArgument); } return root; } @@ -199,8 +201,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh final Collection previousModifiers = modifiers.get(previousPhase); Preconditions.checkState(previousModifiers.isEmpty(), - "Previous phase %s has unresolved modifiers %s in source %s", - previousPhase, previousModifiers, source); + "Previous phase %s has unresolved modifiers %s in source %s", previousPhase, previousModifiers, source); inProgressPhase = phase; LOG.debug("Source {} started phase {}", source, phase); @@ -364,13 +365,16 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh source.writePreLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef()); break; case SOURCE_LINKAGE: - source.writeLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef(), preLinkagePrefixes(), getRootVersion()); + source.writeLinkage(new StatementContextWriter(this, inProgressPhase), stmtDef(), preLinkagePrefixes(), + getRootVersion()); break; case STATEMENT_DEFINITION: - source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(), getRootVersion()); + source.writeLinkageAndStatementDefinitions(new StatementContextWriter(this, inProgressPhase), stmtDef(), + prefixes(), getRootVersion()); break; case FULL_DECLARATION: - source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(), getRootVersion()); + source.writeFull(new StatementContextWriter(this, inProgressPhase), stmtDef(), prefixes(), + getRootVersion()); break; default: break; @@ -390,10 +394,10 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh } private PrefixToModule prefixes() { - final Map allPrefixes = getRoot().getAllFromNamespace(ImpPrefixToModuleIdentifier - .class); - final Map belongsToPrefixes = getRoot().getAllFromNamespace - (BelongsToPrefixToModuleIdentifier.class); + final Map allPrefixes = getRoot().getAllFromNamespace( + ImpPrefixToModuleIdentifier.class); + final Map belongsToPrefixes = getRoot().getAllFromNamespace( + BelongsToPrefixToModuleIdentifier.class); if (belongsToPrefixes != null) { allPrefixes.putAll(belongsToPrefixes); } @@ -407,12 +411,12 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh private QNameToStatementDefinition stmtDef() { // regular YANG statements and extension supports added final StatementSupportBundle supportsForPhase = currentContext.getSupportsForPhase(inProgressPhase); - qNameToStmtDefMap.putAll(supportsForPhase.getCommonDefinitions()); - qNameToStmtDefMap.putAll(supportsForPhase.getDefinitionsSpecificForVersion(getRootVersion())); + qnameToStmtDefMap.putAll(supportsForPhase.getCommonDefinitions()); + qnameToStmtDefMap.putAll(supportsForPhase.getDefinitionsSpecificForVersion(getRootVersion())); // No further actions needed if (inProgressPhase != ModelProcessingPhase.FULL_DECLARATION) { - return qNameToStmtDefMap; + return qnameToStmtDefMap; } // We need to any and all extension statements which have been declared in the context @@ -420,7 +424,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh StatementDefinitionNamespace.class); if (extensions != null) { extensions.forEach((qname, support) -> { - final StatementSupport existing = qNameToStmtDefMap.putIfAbsent(qname, support); + final StatementSupport existing = qnameToStmtDefMap.putIfAbsent(qname, support); if (existing != null) { LOG.debug("Source {} already defines statement {} as {}", source, qname, existing); } else { @@ -429,7 +433,7 @@ public class SourceSpecificContext implements NamespaceStorageNode, NamespaceBeh }); } - return qNameToStmtDefMap; + return qnameToStmtDefMap; } public Set getSupportedVersions() { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java index 4637dd0820..498894cc0a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java @@ -43,6 +43,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport; 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.ImplicitSubstatement; import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; @@ -54,29 +55,29 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class StatementContextBase, E extends EffectiveStatement> - extends NamespaceStorageSupport implements StmtContext.Mutable { + extends NamespaceStorageSupport implements Mutable { /** - * event listener when an item is added to model namespace. + * Event listener when an item is added to model namespace. */ interface OnNamespaceItemAdded extends EventListener { /** - * @throws SourceException + * Invoked whenever a new item is added to a namespace. */ void namespaceItemAdded(StatementContextBase context, Class namespace, Object key, Object value); } /** - * event listener when a parsing {@link ModelProcessingPhase} is completed. + * Event listener when a parsing {@link ModelProcessingPhase} is completed. */ interface OnPhaseFinished extends EventListener { /** - * @throws SourceException + * Invoked whenever a processing phase has finished. */ boolean phaseFinished(StatementContextBase context, ModelProcessingPhase phase); } /** - * interface for all mutations within an {@link ModelActionBuilder.InferenceAction}. + * Interface for all mutations within an {@link ModelActionBuilder.InferenceAction}. */ interface ContextMutation { @@ -226,6 +227,8 @@ public abstract class StatementContextBase, E public abstract StatementContextBase getParentContext(); /** + * Returns the model root for this statement. + * * @return root context of statement */ @Nonnull @@ -233,6 +236,8 @@ public abstract class StatementContextBase, E public abstract RootStatementContext getRoot(); /** + * Returns the origin of the statement. + * * @return origin of statement */ @Nonnull @@ -242,6 +247,8 @@ public abstract class StatementContextBase, E } /** + * Returns a reference to statement source. + * * @return reference of statement source */ @Nonnull @@ -282,7 +289,8 @@ public abstract class StatementContextBase, E return Collections.unmodifiableCollection(effective); } - public void removeStatementsFromEffectiveSubstatements(final Collection> substatements) { + public void removeStatementsFromEffectiveSubstatements( + final Collection> substatements) { if (!effective.isEmpty()) { effective.removeAll(substatements); shrinkEffective(); @@ -312,11 +320,12 @@ public abstract class StatementContextBase, E } /** - * Removes a statement context from the effective substatements - * based on its statement definition (i.e statement keyword) and raw (in String form) statement argument. - * The statement context is removed only if both statement definition and statement argument match with - * one of the effective substatements' statement definition and argument. + * Removes a statement context from the effective substatements based on its statement definition (i.e statement + * keyword) and raw (in String form) statement argument. The statement context is removed only if both statement + * definition and statement argument match with one of the effective substatements' statement definition + * and argument. * + *

* If the statementArg parameter is null, the statement context is removed based only on its statement definition. * * @param statementDef statement definition of the statement context to remove @@ -344,7 +353,7 @@ public abstract class StatementContextBase, E } /** - * adds effective statement to collection of substatements + * Adds an effective statement to collection of substatements. * * @param substatement substatement * @throws IllegalStateException @@ -358,7 +367,7 @@ public abstract class StatementContextBase, E } /** - * adds effective statement to collection of substatements + * Adds an effective statement to collection of substatements. * * @param substatements substatements * @throws IllegalStateException @@ -396,9 +405,10 @@ public abstract class StatementContextBase, E * @param argument statement argument * @return A new substatement */ - public final , CE extends EffectiveStatement> StatementContextBase createSubstatement( - final int offset, final StatementDefinitionContext def, final StatementSourceReference ref, - final String argument) { + public final , CE extends EffectiveStatement> + StatementContextBase createSubstatement(final int offset, + final StatementDefinitionContext def, final StatementSourceReference ref, + final String argument) { final ModelProcessingPhase inProgressPhase = getRoot().getSourceContext().getInProgressPhase(); Preconditions.checkState(inProgressPhase != ModelProcessingPhase.EFFECTIVE_MODEL, "Declared statement cannot be added in effective phase at: %s", getStatementSourceReference()); @@ -531,15 +541,14 @@ public abstract class StatementContextBase, E /** * Ends declared section of current node. - * - * @param ref - * @throws SourceException */ void endDeclared(final StatementSourceReference ref, final ModelProcessingPhase phase) { definition().onDeclarationFinished(this, phase); } /** + * Return the context in which this statement was defined. + * * @return statement definition */ protected final StatementDefinitionContext definition() { @@ -598,12 +607,9 @@ public abstract class StatementContextBase, E } /** - * adds {@link OnPhaseFinished} listener for a {@link ModelProcessingPhase} end - * - * @throws SourceException + * Adds {@link OnPhaseFinished} listener for a {@link ModelProcessingPhase} end. */ void addPhaseCompletedListener(final ModelProcessingPhase phase, final OnPhaseFinished listener) { - Preconditions.checkNotNull(phase, "Statement context processing phase cannot be null at: %s", getStatementSourceReference()); Preconditions.checkNotNull(listener, "Statement context phase listener cannot be null at: %s", @@ -625,7 +631,7 @@ public abstract class StatementContextBase, E } /** - * adds {@link ContextMutation} to {@link ModelProcessingPhase} + * Adds a {@link ContextMutation} to a {@link ModelProcessingPhase}. * * @throws IllegalStateException * when the mutation was registered after phase was completed @@ -633,10 +639,8 @@ public abstract class StatementContextBase, E void addMutation(final ModelProcessingPhase phase, final ContextMutation mutation) { ModelProcessingPhase finishedPhase = completedPhase; while (finishedPhase != null) { - if (phase.equals(finishedPhase)) { - throw new IllegalStateException("Mutation registered after phase was completed at: " + - getStatementSourceReference()); - } + Preconditions.checkState(!phase.equals(finishedPhase), + "Mutation registered after phase was completed at: %s", getStatementSourceReference()); finishedPhase = finishedPhase.getPreviousPhase(); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java index 93602ce45d..bab8ef1d23 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementDefinitionContext.java @@ -65,23 +65,22 @@ public class StatementDefinitionContext, E ext return false; } - public void onDeclarationFinished(final Mutable statement, final ModelProcessingPhase phase) { switch (phase) { - case SOURCE_PRE_LINKAGE: - support.onPreLinkageDeclared(statement); - break; - case SOURCE_LINKAGE: - support.onLinkageDeclared(statement); - break; - case STATEMENT_DEFINITION: - support.onStatementDefinitionDeclared(statement); - break; - case FULL_DECLARATION: - support.onFullDefinitionDeclared(statement); - break; - default: - break; + case SOURCE_PRE_LINKAGE: + support.onPreLinkageDeclared(statement); + break; + case SOURCE_LINKAGE: + support.onLinkageDeclared(statement); + break; + case STATEMENT_DEFINITION: + support.onStatementDefinitionDeclared(statement); + break; + case FULL_DECLARATION: + support.onFullDefinitionDeclared(statement); + break; + default: + break; } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementMap.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementMap.java index 028f9067de..7c632a9949 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementMap.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementMap.java @@ -91,7 +91,7 @@ abstract class StatementMap { @Override int size() { return countElements(elements); - } + } } static int countElements(final Object[] elements) { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java index 8fa166e0a4..a0b9710e7e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/SubstatementContext.java @@ -46,10 +46,11 @@ final class SubstatementContext, E extends Eff private final A argument; /** - * config statements are not all that common which means we are performing a recursive search towards the root + * Config statements are not all that common which means we are performing a recursive search towards the root * every time {@link #isConfiguration()} is invoked. This is quite expensive because it causes a linear search * for the (usually non-existent) config statement. * + *

* This field maintains a resolution cache, so once we have returned a result, we will keep on returning the same * result without performing any lookups. */ diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ActionStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ActionStatementImpl.java index 656b5bef15..8316de062e 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ActionStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ActionStatementImpl.java @@ -83,8 +83,8 @@ public class ActionStatementImpl extends AbstractDeclaredStatement implem public EffectiveStatement createEffective( final StmtContext> ctx) { SourceException.throwIf(StmtContextUtils.hasAncestorOfType(ctx, ILLEGAL_PARENTS), - ctx.getStatementSourceReference(), "Action %s is defined within a notification, rpc or another action", - ctx.getStatementArgument()); + ctx.getStatementSourceReference(), + "Action %s is defined within a notification, rpc or another action", ctx.getStatementArgument()); SourceException.throwIf(!StmtContextUtils.hasAncestorOfTypeWithChildOfType(ctx, YangStmtMapping.LIST, YangStmtMapping.KEY), ctx.getStatementSourceReference(), "Action %s is defined within a list that has no key statement", ctx.getStatementArgument()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java index 0556f7e036..74ca32f491 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/AnydataStatementImpl.java @@ -64,7 +64,8 @@ public final class AnydataStatementImpl extends AbstractDeclaredStatement } @Override - public void onStatementAdded(final Mutable> stmt) { + public void onStatementAdded(final Mutable> stmt) { stmt.getParentContext().addToNs(ChildSchemaNodes.class, stmt.getStatementArgument(), stmt); } @@ -129,5 +130,4 @@ public final class AnydataStatementImpl extends AbstractDeclaredStatement public MandatoryStatement getMandatory() { return firstDeclared(MandatoryStatement.class); } - } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ModifierStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ModifierStatementImpl.java index 4141052a15..f25292106a 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ModifierStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/ModifierStatementImpl.java @@ -32,9 +32,8 @@ public final class ModifierStatementImpl extends AbstractDeclaredStatement> { + public static class Definition extends AbstractStatementSupport> { public Definition() { super(YangStmtMapping.MODIFIER); @@ -53,7 +52,8 @@ public final class ModifierStatementImpl extends AbstractDeclaredStatement createEffective( - final StmtContext> ctx) { + final StmtContext> ctx) { return new ModifierEffectiveStatementImpl(ctx); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/NotificationStatementRfc7950Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/NotificationStatementRfc7950Support.java index ef620f7ad8..eeef7c7e10 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/NotificationStatementRfc7950Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/NotificationStatementRfc7950Support.java @@ -53,15 +53,16 @@ public final class NotificationStatementRfc7950Support extends NotificationState @Override public EffectiveStatement createEffective( final StmtContext> ctx) { - SourceException - .throwIf(StmtContextUtils.hasAncestorOfType(ctx, ILLEGAL_PARENTS), ctx.getStatementSourceReference(), - "Notification %s is defined within an rpc, action, or another notification", - ctx.getStatementArgument()); + SourceException.throwIf(StmtContextUtils.hasAncestorOfType(ctx, ILLEGAL_PARENTS), + ctx.getStatementSourceReference(), + "Notification %s is defined within an rpc, action, or another notification", + ctx.getStatementArgument()); SourceException.throwIf(!StmtContextUtils.hasAncestorOfTypeWithChildOfType(ctx, YangStmtMapping.LIST, - YangStmtMapping.KEY), ctx.getStatementSourceReference(), - "Notification %s is defined within a list that has no key statement", ctx.getStatementArgument()); - SourceException.throwIf(StmtContextUtils.hasParentOfType(ctx, YangStmtMapping.CASE), ctx.getStatementSourceReference(), - "Notification %s is defined within a case statement", ctx.getStatementArgument()); + YangStmtMapping.KEY), ctx.getStatementSourceReference(), + "Notification %s is defined within a list that has no key statement", ctx.getStatementArgument()); + SourceException.throwIf(StmtContextUtils.hasParentOfType(ctx, YangStmtMapping.CASE), + ctx.getStatementSourceReference(), "Notification %s is defined within a case statement", + ctx.getStatementArgument()); return new NotificationEffectiveStatementImpl(ctx); } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/TypeStatementRfc7950Support.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/TypeStatementRfc7950Support.java index 25127b79f8..2252525c78 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/TypeStatementRfc7950Support.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/TypeStatementRfc7950Support.java @@ -19,10 +19,10 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils; */ @Beta public final class TypeStatementRfc7950Support extends TypeStatementImpl.Definition { - private static final Map> ARGUMENT_SPECIFIC_SUPPORTS = ImmutableMap - .> builder() - .put(TypeUtils.LEAF_REF, new LeafrefSpecificationRfc7950Support()) - .put(TypeUtils.IDENTITY_REF, new IdentityrefSpecificationRfc7950Support()).build(); + private static final Map> ARGUMENT_SPECIFIC_SUPPORTS = + ImmutableMap.>of( + TypeUtils.LEAF_REF, new LeafrefSpecificationRfc7950Support(), + TypeUtils.IDENTITY_REF, new IdentityrefSpecificationRfc7950Support()); @Override public boolean hasArgumentSpecificSupports() { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/effective/ActionEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/effective/ActionEffectiveStatementImpl.java index 73a4bf0d71..1a4ee61bed 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/effective/ActionEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc7950/effective/ActionEffectiveStatementImpl.java @@ -28,7 +28,8 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.InputEffect import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.OutputEffectiveStatementImpl; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.TypeDefEffectiveStatementImpl; -public class ActionEffectiveStatementImpl extends AbstractEffectiveSchemaNode implements ActionDefinition { +public class ActionEffectiveStatementImpl extends AbstractEffectiveSchemaNode + implements ActionDefinition { private final ContainerSchemaNode input; private final ContainerSchemaNode output; private final Set> typeDefinitions; diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataEffectiveStatement.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataEffectiveStatement.java index cd4571b458..e3e998a7ca 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataEffectiveStatement.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataEffectiveStatement.java @@ -24,7 +24,8 @@ import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEf import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.UnknownEffectiveStatementBase; /** - * Effective statement representation of 'yang-data' extension defined in https://tools.ietf.org/html/rfc8040#section-8 + * Effective statement representation of 'yang-data' extension defined in + * RFC 8040. */ @Beta public final class YangDataEffectiveStatement extends UnknownEffectiveStatementBase diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataStatement.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataStatement.java index 9062c10274..2e33a373bb 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataStatement.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc8040/YangDataStatement.java @@ -17,7 +17,8 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.SupportedExtensionsMapping; /** - * Declared statement representation of 'yang-data' extension defined in https://tools.ietf.org/html/rfc8040#section-8 + * Declared statement representation of 'yang-data' extension defined in + * RFC 8040. */ @Beta public final class YangDataStatement extends AbstractDeclaredStatement implements UnknownStatement { diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java index 44aaeba0bd..fda0a17581 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ASTSchemaSource.java @@ -24,14 +24,13 @@ import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier; import org.opendaylight.yangtools.yang.parser.impl.util.YangModelDependencyInfo; /** - * Abstract Syntax Tree representation of a schema source. This representation - * is internal to the YANG parser implementation, as it relies on ANTLR types. + * Abstract Syntax Tree representation of a schema source. This representation is internal to the YANG parser + * implementation, as it relies on ANTLR types. * - * Instances of this representation are used for caching purposes, as they - * are a natural intermediate step in YANG text processing pipeline: the text - * has been successfully parsed, so we know it is syntactically correct. It also - * passes basic semantic validation and we were able to extract dependency - * information. + *

+ * Instances of this representation are used for caching purposes, as they are a natural intermediate step in YANG text + * processing pipeline: the text has been successfully parsed, so we know it is syntactically correct. It also passes + * basic semantic validation and we were able to extract dependency information. */ @Beta public final class ASTSchemaSource implements SchemaSourceRepresentation { @@ -80,20 +79,6 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation { return new ASTSchemaSource(id, semVerId, tree, depInfo, null); } - private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) { - final String name = depInfo.getName(); - return depInfo.getFormattedRevision() == null ? RevisionSourceIdentifier.create(name) - : RevisionSourceIdentifier.create(name, depInfo.getFormattedRevision()); - } - - private static SemVerSourceIdentifier getSemVerSourceId(final YangModelDependencyInfo depInfo) { - return depInfo.getFormattedRevision() == null - ? SemVerSourceIdentifier.create(depInfo.getName(), - depInfo.getSemanticVersion().or(DEFAULT_SEMANTIC_VERSION)) - : SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getFormattedRevision(), - depInfo.getSemanticVersion().or(DEFAULT_SEMANTIC_VERSION)); - } - /** * Create a new instance of AST representation for a abstract syntax tree, * performing minimal semantic analysis to acquire dependency information. @@ -201,12 +186,25 @@ public final class ASTSchemaSource implements SchemaSourceRepresentation { /** * Return the dependency information as extracted from the AST. * - * FIXME: this method should be extracted into a public interface in the - * model.api.repo class, relying solely on model.api types. - * * @return Dependency information. */ + // FIXME: this method should be extracted into a public interface in the model.api.repo class, relying solely + // on model.api types. @Nonnull public YangModelDependencyInfo getDependencyInformation() { return depInfo; } + + private static SourceIdentifier getSourceId(final YangModelDependencyInfo depInfo) { + final String name = depInfo.getName(); + return depInfo.getFormattedRevision() == null ? RevisionSourceIdentifier.create(name) + : RevisionSourceIdentifier.create(name, depInfo.getFormattedRevision()); + } + + private static SemVerSourceIdentifier getSemVerSourceId(final YangModelDependencyInfo depInfo) { + return depInfo.getFormattedRevision() == null + ? SemVerSourceIdentifier.create(depInfo.getName(), + depInfo.getSemanticVersion().or(DEFAULT_SEMANTIC_VERSION)) + : SemVerSourceIdentifier.create(depInfo.getName(), depInfo.getFormattedRevision(), + depInfo.getSemanticVersion().or(DEFAULT_SEMANTIC_VERSION)); + } } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java index 0e7017ae5c..3b36e36fba 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/ModuleDependencySort.java @@ -22,7 +22,7 @@ import org.opendaylight.yangtools.yang.model.api.Module; @Deprecated public final class ModuleDependencySort { /** - * It is not desirable to instance this class + * It is not desirable to instance this class. */ private ModuleDependencySort() { } diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java index b9b48ac2da..3cf9e1c838 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/util/TextToASTTransformer.java @@ -33,6 +33,8 @@ import org.slf4j.LoggerFactory; public final class TextToASTTransformer extends SchemaSourceTransformer { /** + * A text-to-AST Transformation. + * * @deprecated Use {@link TextToASTTransformer#transformText(YangTextSchemaSource)} instead. */ @Deprecated @@ -57,6 +59,8 @@ public final class TextToASTTransformer extends SchemaSourceTransformer