From 4523f8f18be0dfbe81e7a9bfc648d319bb366e7e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 5 Jun 2017 19:19:06 +0200 Subject: [PATCH] Move DeviateKind parsing This parser is only used in DeviateStatementImpl, so move it there and do not clutter Utils. Change-Id: Ie878f22e5fdd28fc2e3747a1af61a25b92a44d05 Signed-off-by: Robert Varga --- .../stmt/rfc6020/DeviateStatementImpl.java | 35 +++++++++++++------ .../yang/parser/stmt/rfc6020/Utils.java | 23 +----------- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java index 8377d17205..9de23b309f 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java @@ -7,6 +7,8 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import java.util.Collection; @@ -36,6 +38,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils; import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName; import org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules; import org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules.SupportedModules; +import org.opendaylight.yangtools.yang.parser.spi.source.SourceException; import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase; import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DeviateEffectiveStatementImpl; import org.slf4j.Logger; @@ -84,6 +87,14 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement public static class Definition extends AbstractStatementSupport> { + private static final Map KEYWORD_TO_DEVIATE_MAP; + static { + final Builder keywordToDeviateMapBuilder = ImmutableMap.builder(); + for (final DeviateKind deviate : DeviateKind.values()) { + keywordToDeviateMapBuilder.put(deviate.getKeyword(), deviate); + } + KEYWORD_TO_DEVIATE_MAP = keywordToDeviateMapBuilder.build(); + } private static final Set SINGLETON_STATEMENTS = ImmutableSet.of( YangStmtMapping.UNITS, YangStmtMapping.CONFIG, YangStmtMapping.MANDATORY, @@ -93,15 +104,19 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement super(YangStmtMapping.DEVIATE); } - @Override public DeviateKind parseArgumentValue(final StmtContext ctx, final String value) { - return Utils.parseDeviateFromString(ctx, value); + @Override + public DeviateKind parseArgumentValue(final StmtContext ctx, final String value) { + return SourceException.throwIfNull(KEYWORD_TO_DEVIATE_MAP.get(value), + ctx.getStatementSourceReference(), "String '%s' is not valid deviate argument", value); } - @Override public DeviateStatement createDeclared(final StmtContext ctx) { + @Override + public DeviateStatement createDeclared(final StmtContext ctx) { return new DeviateStatementImpl(ctx); } - @Override public EffectiveStatement createEffective( + @Override + public EffectiveStatement createEffective( final StmtContext> ctx) { return new DeviateEffectiveStatementImpl(ctx); @@ -128,9 +143,9 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement deviateAction.requiresCtx(deviateStmtCtx, ModelProcessingPhase.EFFECTIVE_MODEL); final Prerequisite>> targetCtxPrerequisite = - (Prerequisite>>) deviateAction - .mutatesEffectiveCtx(deviateStmtCtx.getRoot(), SchemaNodeIdentifierBuildNamespace.class, - deviationTarget); + deviateAction + .mutatesEffectiveCtx(deviateStmtCtx.getRoot(), SchemaNodeIdentifierBuildNamespace.class, + deviationTarget); deviateAction.apply(new InferenceAction() { @Override @@ -157,7 +172,7 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement } @Override - public void prerequisiteFailed(Collection> failed) { + public void prerequisiteFailed(final Collection> failed) { throw new InferenceException(deviateStmtCtx.getParentContext().getStatementSourceReference(), "Deviation target '%s' not found.", deviationTarget); } @@ -202,8 +217,8 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement final StatementDefinition stmtToBeAdded = stmtCtxToBeAdded.getPublicDefinition(); - if (SINGLETON_STATEMENTS.contains(stmtToBeAdded) || (YangStmtMapping.DEFAULT.equals(stmtToBeAdded) - && YangStmtMapping.LEAF.equals(targetCtx.getPublicDefinition()))) { + if (SINGLETON_STATEMENTS.contains(stmtToBeAdded) || YangStmtMapping.DEFAULT.equals(stmtToBeAdded) + && YangStmtMapping.LEAF.equals(targetCtx.getPublicDefinition())) { final Iterable> targetCtxSubstatements = Iterables.concat( targetCtx.declaredSubstatements(), targetCtx.effectiveSubstatements()); diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java index 13ec1ef7c1..af21a797d9 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java @@ -16,8 +16,6 @@ import com.google.common.base.Preconditions; import com.google.common.base.Splitter; import com.google.common.base.Strings; import com.google.common.collect.ImmutableBiMap; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; import com.google.common.collect.ImmutableSet; import java.util.ArrayList; import java.util.Collection; @@ -25,7 +23,6 @@ import java.util.Collections; import java.util.Date; import java.util.HashSet; import java.util.List; -import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.regex.Matcher; @@ -41,7 +38,6 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil; import org.opendaylight.yangtools.yang.common.YangVersion; -import org.opendaylight.yangtools.yang.model.api.DeviateKind; import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier; import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath; import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement; @@ -85,15 +81,6 @@ public final class Utils { "(re-match|deref|derived-from(-or-self)?|enum-value|bit-is-set)(\\()"; private static final Pattern YANG_XPATH_FUNCTIONS_PATTERN = Pattern.compile(YANG_XPATH_FUNCTIONS_STRING); - private static final Map KEYWORD_TO_DEVIATE_MAP; - static { - final Builder keywordToDeviateMapBuilder = ImmutableMap.builder(); - for (final DeviateKind deviate : DeviateKind.values()) { - keywordToDeviateMapBuilder.put(deviate.getKeyword(), deviate); - } - KEYWORD_TO_DEVIATE_MAP = keywordToDeviateMapBuilder.build(); - } - private static final ThreadLocal XPATH_FACTORY = new ThreadLocal() { @Override protected XPathFactory initialValue() { @@ -398,11 +385,6 @@ public final class Utils { .isAssignableFrom(UnknownStatementImpl.class); } - public static DeviateKind parseDeviateFromString(final StmtContext ctx, final String deviateKeyword) { - return SourceException.throwIfNull(KEYWORD_TO_DEVIATE_MAP.get(deviateKeyword), - ctx.getStatementSourceReference(), "String '%s' is not valid deviate argument", deviateKeyword); - } - static String internBoolean(final String input) { if ("true".equals(input)) { return "true"; @@ -447,10 +429,7 @@ public final class Utils { } public static boolean belongsToTheSameModule(final QName targetStmtQName, final QName sourceStmtQName) { - if (targetStmtQName.getModule().equals(sourceStmtQName.getModule())) { - return true; - } - return false; + return targetStmtQName.getModule().equals(sourceStmtQName.getModule()); } public static SourceIdentifier createSourceIdentifier(final RootStatementContext root) { -- 2.36.6