/* * Copyright (c) 2020 PANTHEON.tech, s.r.o. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt; import org.opendaylight.yangtools.yang.common.QName; 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.stmt.SchemaTreeEffectiveStatement; import org.opendaylight.yangtools.yang.parser.spi.SchemaTreeNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.Mutable; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils; /** * Specialization of {@link AbstractQNameStatementSupport} for {@link SchemaTreeEffectiveStatement} implementations. * Every statement automatically participates in {@link SchemaTreeNamespace}. * * @param Declared Statement representation * @param Effective Statement representation */ public abstract class BaseSchemaTreeStatementSupport, E extends SchemaTreeEffectiveStatement> extends AbstractQNameStatementSupport { protected BaseSchemaTreeStatementSupport(final StatementDefinition publicDefinition, final StatementPolicy policy) { super(publicDefinition, policy); } /** * {@inheritDoc} * *

* This method ensures the statement is added to its parent {@link SchemaTreeNamespace}. */ @Override public void onStatementAdded(final Mutable stmt) { stmt.coerceParentContext().addToNs(SchemaTreeNamespace.class, stmt.getArgument(), stmt); } // Non-final because {@code input} and {@code output} are doing their own thing. @Override public QName parseArgumentValue(final StmtContext ctx, final String value) { return StmtContextUtils.parseIdentifier(ctx, value); } }