Reuse common superclass for BuiltinTypeStatement 80/90880/4
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 2 Jul 2020 15:47:29 +0000 (17:47 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 2 Jul 2020 22:31:55 +0000 (00:31 +0200)
BuiltinTypeStatement duplicates pretty much all of its implementation
from AbstractDeclaredStatement.WithRawStringArgument. Eliminate
duplication, so we have less code to maintain.

JIRA: YANGTOOLS-1065
Change-Id: Ib27fe7f19001c5ffd563dad41843e74a3539765d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractDeclaredStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BuiltinTypeStatement.java

index aa722d0dc5ee7db9eb465d858c6309ecf00c6f30..8a713abe4089cc5e91652c974e70e1b3bd0568c7 100644 (file)
@@ -57,7 +57,11 @@ public abstract class AbstractDeclaredStatement<A> extends AbstractModelStatemen
         private final String rawArgument;
 
         protected WithRawArgument(final StmtContext<A, ?, ?> context) {
-            rawArgument = context.rawStatementArgument();
+            this(context.rawStatementArgument());
+        }
+
+        protected WithRawArgument(final String rawArgument) {
+            this.rawArgument = rawArgument;
         }
 
         @Override
@@ -119,6 +123,10 @@ public abstract class AbstractDeclaredStatement<A> extends AbstractModelStatemen
             super(context);
         }
 
+        protected WithRawStringArgument(final String rawArgument) {
+            super(rawArgument);
+        }
+
         @Override
         public final String argument() {
             return rawArgument();
index 74fddd0c5f2915650cfd17de65a285ae61886d9c..e3130e06849017690c6ead66796cbb07b6114b16 100644 (file)
@@ -9,16 +9,14 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.type;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableMap.Builder;
-import java.util.Collection;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
-import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithRawStringArgument;
 
-final class BuiltinTypeStatement implements TypeStatement {
+final class BuiltinTypeStatement extends WithRawStringArgument implements TypeStatement {
     private static final ImmutableMap<String, BuiltinTypeStatement> BUILTINS;
 
     static {
@@ -43,10 +41,8 @@ final class BuiltinTypeStatement implements TypeStatement {
         builder.put(argument, new BuiltinTypeStatement(argument));
     }
 
-    private final String argument;
-
-    private BuiltinTypeStatement(final String argument) {
-        this.argument = requireNonNull(argument);
+    private BuiltinTypeStatement(final String rawArgument) {
+        super(requireNonNull(rawArgument));
     }
 
     static TypeStatement maybeReplace(final TypeStatementImpl orig) {
@@ -60,24 +56,4 @@ final class BuiltinTypeStatement implements TypeStatement {
 
         return orig;
     }
-
-    @Override
-    public String argument() {
-        return argument;
-    }
-
-    @Override
-    public String rawArgument() {
-        return argument;
-    }
-
-    @Override
-    public Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
-        return ImmutableList.of();
-    }
-
-    @Override
-    public StatementSource getStatementSource() {
-        return StatementSource.DECLARATION;
-    }
 }