import javax.xml.transform.stax.StAXSource;
import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode;
import org.opendaylight.yangtools.rfc8528.data.api.YangLibraryConstants;
-import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode;
import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountConstants;
import org.opendaylight.yangtools.yang.common.QName;
}
if (optMount.isPresent()) {
- final var label = new MountPointLabel(optMount.orElseThrow().getQName());
+ final var label = optMount.orElseThrow().asEffectiveStatement().argument();
LOG.debug("Assuming node {} and namespace {} belongs to mount point {}", xmlElementName,
nsUri, label);
package org.opendaylight.yangtools.rfc8528.model.api;
import com.google.common.annotations.Beta;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.stmt.UnknownEffectiveStatement;
* <a href="https://tools.ietf.org/html/rfc8528">RFC8528</a>.
*/
@Beta
-public interface MountPointEffectiveStatement extends UnknownEffectiveStatement<QName, MountPointStatement> {
+public interface MountPointEffectiveStatement extends UnknownEffectiveStatement<MountPointLabel, MountPointStatement> {
@Override
default StatementDefinition statementDefinition() {
return SchemaMountStatements.MOUNT_POINT;
package org.opendaylight.yangtools.rfc8528.model.api;
import com.google.common.annotations.Beta;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatementAwareDeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DocumentedDeclaredStatement.WithStatus;
* <a href="https://tools.ietf.org/html/rfc8528">RFC8528</a>.
*/
@Beta
-public interface MountPointStatement extends UnknownStatement<QName>, WithStatus<QName>,
- ConfigStatementAwareDeclaredStatement<QName> {
+public interface MountPointStatement extends UnknownStatement<MountPointLabel>, WithStatus<MountPointLabel>,
+ ConfigStatementAwareDeclaredStatement<MountPointLabel> {
@Override
default StatementDefinition statementDefinition() {
return SchemaMountStatements.MOUNT_POINT;
}
+
+ @Override
+ default String rawArgument() {
+ return argument().qname().getLocalName();
+ }
}
import com.google.common.collect.ImmutableList;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractEffectiveUnknownSchmemaNode;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
-final class MountPointEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNode<QName, MountPointStatement>
+final class MountPointEffectiveStatementImpl
+ extends AbstractEffectiveUnknownSchmemaNode<MountPointLabel, MountPointStatement>
implements MountPointEffectiveStatement, MountPointSchemaNode {
- MountPointEffectiveStatementImpl(final Current<QName, MountPointStatement> stmt,
+ MountPointEffectiveStatementImpl(final Current<MountPointLabel, MountPointStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
super(stmt.declared(), stmt.argument(), stmt.history(), substatements);
}
@Override
public QName getQName() {
- return argument();
+ return argument().qname();
}
@Override
*/
package org.opendaylight.yangtools.rfc8528.parser;
+import static java.util.Objects.requireNonNull;
+
import com.google.common.collect.ImmutableList;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement.WithQNameArgument.WithSubstatements;
+import org.opendaylight.yangtools.yang.model.spi.meta.AbstractDeclaredStatement;
+
+final class MountPointStatementImpl extends AbstractDeclaredStatement<MountPointLabel> implements MountPointStatement {
+ private final @NonNull MountPointLabel argument;
+ private final @NonNull Object substatements;
+
+ MountPointStatementImpl(final MountPointLabel argument,
+ final ImmutableList<? extends DeclaredStatement<?>> substatements) {
+ this.argument = requireNonNull(argument);
+ this.substatements = maskList(substatements);
+ }
+
+ @Override
+ public MountPointLabel argument() {
+ return argument;
+ }
-final class MountPointStatementImpl extends WithSubstatements implements MountPointStatement {
- MountPointStatementImpl(final QName argument, final ImmutableList<? extends DeclaredStatement<?>> substatements) {
- super(argument, substatements);
+ @Override
+ public ImmutableList<? extends DeclaredStatement<?>> declaredSubstatements() {
+ return unmaskList(substatements);
}
}
\ No newline at end of file
import com.google.common.collect.ImmutableList;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointEffectiveStatement;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountStatements;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
-import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.parser.api.YangParserConfiguration;
-import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractQNameStatementSupport;
+import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.BoundStmtCtx;
import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
public final class MountPointStatementSupport
- extends AbstractQNameStatementSupport<MountPointStatement, MountPointEffectiveStatement> {
+ extends AbstractStatementSupport<MountPointLabel, MountPointStatement, MountPointEffectiveStatement> {
private static final SubstatementValidator VALIDATOR =
SubstatementValidator.builder(SchemaMountStatements.MOUNT_POINT)
.addOptional(YangStmtMapping.CONFIG)
//
// We are not doing exactly that, in that we can end up rebinding the argument through 'augment', I think.
@Override
- public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return StmtContextUtils.parseIdentifier(ctx, value);
+ public MountPointLabel parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
+ return MountPointLabel.create(StmtContextUtils.parseIdentifier(ctx, value));
}
@Override
- public QName adaptArgumentValue(final StmtContext<QName, MountPointStatement, MountPointEffectiveStatement> ctx,
+ public MountPointLabel adaptArgumentValue(
+ final StmtContext<MountPointLabel, MountPointStatement, MountPointEffectiveStatement> ctx,
final QNameModule targetModule) {
- return ctx.getArgument().bindTo(targetModule).intern();
+ return MountPointLabel.create(ctx.getArgument().qname().bindTo(targetModule));
}
@Override
- public void onStatementAdded(final Mutable<QName, MountPointStatement, MountPointEffectiveStatement> stmt) {
- final StatementDefinition parentDef = stmt.coerceParentContext().publicDefinition();
+ public void onStatementAdded(
+ final Mutable<MountPointLabel, MountPointStatement, MountPointEffectiveStatement> stmt) {
+ final var parentDef = stmt.coerceParentContext().publicDefinition();
SourceException.throwIf(YangStmtMapping.CONTAINER != parentDef && YangStmtMapping.LIST != parentDef, stmt,
"Mount points may only be defined at either a container or a list");
}
@Override
- protected MountPointStatement createDeclared(final BoundStmtCtx<QName> ctx,
+ protected MountPointStatement createDeclared(final BoundStmtCtx<MountPointLabel> ctx,
final ImmutableList<DeclaredStatement<?>> substatements) {
return new MountPointStatementImpl(ctx.getArgument(), substatements);
}
}
@Override
- protected MountPointEffectiveStatement createEffective(final Current<QName, MountPointStatement> stmt,
+ protected MountPointEffectiveStatement createEffective(final Current<MountPointLabel, MountPointStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
return new MountPointEffectiveStatementImpl(stmt, substatements);
}
*/
package org.opendaylight.yangtools.rfc8528.parser;
+import org.opendaylight.yangtools.rfc8528.model.api.MountPointLabel;
import org.opendaylight.yangtools.rfc8528.model.api.MountPointStatement;
-import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.meta.DeclarationReference;
import org.opendaylight.yangtools.yang.model.spi.meta.AbstractRefStatement;
-final class RefMountPointStatement extends AbstractRefStatement<QName, MountPointStatement>
+final class RefMountPointStatement extends AbstractRefStatement<MountPointLabel, MountPointStatement>
implements MountPointStatement {
RefMountPointStatement(final MountPointStatement delegate, final DeclarationReference ref) {
super(delegate, ref);