Move DeviateKind parsing 71/58271/4
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 5 Jun 2017 17:19:06 +0000 (19:19 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 7 Jun 2017 13:49:18 +0000 (15:49 +0200)
This parser is only used in DeviateStatementImpl, so move it there
and do not clutter Utils.

Change-Id: Ie878f22e5fdd28fc2e3747a1af61a25b92a44d05
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviateStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/Utils.java

index 8377d172054d84fc9cb9d3b6c64d4416774cf789..9de23b309f2ce8f70f68b6e36d4915e61f862bc0 100644 (file)
@@ -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<DeviateKind>
 
     public static class Definition extends AbstractStatementSupport<DeviateKind, DeviateStatement,
             EffectiveStatement<DeviateKind, DeviateStatement>> {
+        private static final Map<String, DeviateKind> KEYWORD_TO_DEVIATE_MAP;
+        static {
+            final Builder<String, DeviateKind> keywordToDeviateMapBuilder = ImmutableMap.builder();
+            for (final DeviateKind deviate : DeviateKind.values()) {
+                keywordToDeviateMapBuilder.put(deviate.getKeyword(), deviate);
+            }
+            KEYWORD_TO_DEVIATE_MAP = keywordToDeviateMapBuilder.build();
+        }
 
         private static final Set<YangStmtMapping> SINGLETON_STATEMENTS = ImmutableSet.of(
                 YangStmtMapping.UNITS, YangStmtMapping.CONFIG, YangStmtMapping.MANDATORY,
@@ -93,15 +104,19 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind>
             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<DeviateKind, DeviateStatement, ?> ctx) {
+        @Override
+        public DeviateStatement createDeclared(final StmtContext<DeviateKind, DeviateStatement, ?> ctx) {
             return new DeviateStatementImpl(ctx);
         }
 
-        @Override public EffectiveStatement<DeviateKind, DeviateStatement> createEffective(
+        @Override
+        public EffectiveStatement<DeviateKind, DeviateStatement> createEffective(
                 final StmtContext<DeviateKind, DeviateStatement, EffectiveStatement<DeviateKind,
                         DeviateStatement>> ctx) {
             return new DeviateEffectiveStatementImpl(ctx);
@@ -128,9 +143,9 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind>
                     deviateAction.requiresCtx(deviateStmtCtx, ModelProcessingPhase.EFFECTIVE_MODEL);
 
             final Prerequisite<StmtContext.Mutable<?, ?, EffectiveStatement<?, ?>>> targetCtxPrerequisite =
-                    (Prerequisite<StmtContext.Mutable<?, ?, EffectiveStatement<?, ?>>>) 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<DeviateKind>
                         }
 
                         @Override
-                        public void prerequisiteFailed(Collection<? extends Prerequisite<?>> failed) {
+                        public void prerequisiteFailed(final Collection<? extends Prerequisite<?>> failed) {
                             throw new InferenceException(deviateStmtCtx.getParentContext().getStatementSourceReference(),
                                     "Deviation target '%s' not found.", deviationTarget);
                         }
@@ -202,8 +217,8 @@ public class DeviateStatementImpl extends AbstractDeclaredStatement<DeviateKind>
 
             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<StatementContextBase<?, ?, ?>> targetCtxSubstatements = Iterables.concat(
                         targetCtx.declaredSubstatements(), targetCtx.effectiveSubstatements());
 
index 13ec1ef7c19f483d4cd081b46c50167b2d5a2928..af21a797d94c9ea6e033518747f52d4442b42cf2 100644 (file)
@@ -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<String, DeviateKind> KEYWORD_TO_DEVIATE_MAP;
-    static {
-        final Builder<String, DeviateKind> keywordToDeviateMapBuilder = ImmutableMap.builder();
-        for (final DeviateKind deviate : DeviateKind.values()) {
-            keywordToDeviateMapBuilder.put(deviate.getKeyword(), deviate);
-        }
-        KEYWORD_TO_DEVIATE_MAP = keywordToDeviateMapBuilder.build();
-    }
-
     private static final ThreadLocal<XPathFactory> XPATH_FACTORY = new ThreadLocal<XPathFactory>() {
         @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) {