Migrate AbstractTypeStatementSupport
[yangtools.git] / yang / yang-parser-rfc7950 / src / main / java / org / opendaylight / yangtools / yang / parser / rfc7950 / stmt / type / BuiltinTypeStatement.java
index 86830fee26ce1c8ba8791f82870be05049ed6b9f..b29fdf02cd45cbf01d4f770e80e7e3178e4c0262 100644 (file)
@@ -9,20 +9,15 @@ 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 java.util.Map;
-import javax.annotation.Nonnull;
-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.StatementDefinition;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
+import org.eclipse.jdt.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement;
+import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredStatement.WithRawStringArgument;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-final class BuiltinTypeStatement implements TypeStatement {
-    private static final Map<String, BuiltinTypeStatement> BUILTINS;
+final class BuiltinTypeStatement extends WithRawStringArgument implements TypeStatement {
+    private static final ImmutableMap<String, BuiltinTypeStatement> BUILTINS;
 
     static {
         final Builder<String, BuiltinTypeStatement> builder = ImmutableMap.builder();
@@ -46,49 +41,11 @@ final class BuiltinTypeStatement implements TypeStatement {
         builder.put(argument, new BuiltinTypeStatement(argument));
     }
 
-    private final String argument;
-
-    private BuiltinTypeStatement(final String argument) {
-        this.argument = requireNonNull(argument);
-    }
-
-    static TypeStatement maybeReplace(final TypeStatementImpl orig) {
-        if (orig.declaredSubstatements().isEmpty() && orig.getStatementSource() == StatementSource.DECLARATION
-                && orig.statementDefinition() == YangStmtMapping.TYPE) {
-            final BuiltinTypeStatement builtin = BUILTINS.get(orig.argument());
-            if (builtin != null) {
-                return builtin;
-            }
-        }
-
-        return orig;
-    }
-
-    @Override
-    public String argument() {
-        return argument;
-    }
-
-    @Override
-    public String rawArgument() {
-        return argument;
-    }
-
-    @Nonnull
-    @Override
-    public Collection<? extends DeclaredStatement<?>> declaredSubstatements() {
-        return ImmutableList.of();
-    }
-
-    @Nonnull
-    @Override
-    public StatementDefinition statementDefinition() {
-        return YangStmtMapping.TYPE;
+    private BuiltinTypeStatement(final String rawArgument) {
+        super(requireNonNull(rawArgument));
     }
 
-    @Nonnull
-    @Override
-    public StatementSource getStatementSource() {
-        return StatementSource.DECLARATION;
+    static @Nullable TypeStatement lookup(final StmtContext<String, TypeStatement, ?> ctx) {
+        return BUILTINS.get(ctx.coerceStatementArgument());
     }
 }