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();
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());
}
}