import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ImmutableSet.Builder;
import com.google.common.collect.Iterables;
import java.util.Collection;
+import java.util.Date;
+import java.util.Optional;
import java.util.Set;
import java.util.function.Predicate;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.common.YangVersion;
+import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
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.stmt.BelongsToStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
+import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
+import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName;
+import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName;
+import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.UnknownStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.YangDataStatementImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
public final class StmtContextUtils {
- private static final Logger LOG = LoggerFactory.getLogger(StmtContextUtils.class);
-
public static final Splitter LIST_KEY_SPLITTER = Splitter.on(' ').omitEmptyStrings().trimResults();
private StmtContextUtils() {
statementDef.getStatementName(), leafStmtCtx.getStatementArgument());
});
}
+
+ public static QName qnameFromArgument(StmtContext<?, ?, ?> ctx, final String value) {
+ if (Strings.isNullOrEmpty(value)) {
+ return ctx.getPublicDefinition().getStatementName();
+ }
+
+ String prefix;
+ QNameModule qNameModule = null;
+ String localName = null;
+
+ final String[] namesParts = value.split(":");
+ switch (namesParts.length) {
+ case 1:
+ localName = namesParts[0];
+ qNameModule = StmtContextUtils.getRootModuleQName(ctx);
+ break;
+ default:
+ prefix = namesParts[0];
+ localName = namesParts[1];
+ qNameModule = StmtContextUtils.getModuleQNameByPrefix(ctx, prefix);
+ // in case of unknown statement argument, we're not going to parse it
+ if (qNameModule == null
+ && ctx.getPublicDefinition().getDeclaredRepresentationClass()
+ .isAssignableFrom(UnknownStatementImpl.class)) {
+ localName = value;
+ qNameModule = StmtContextUtils.getRootModuleQName(ctx);
+ }
+ if (qNameModule == null
+ && ctx.getCopyHistory().getLastOperation() == CopyType.ADDED_BY_AUGMENTATION) {
+ ctx = ctx.getOriginalCtx();
+ qNameModule = StmtContextUtils.getModuleQNameByPrefix(ctx, prefix);
+ }
+ break;
+ }
+
+ qNameModule = InferenceException.throwIfNull(qNameModule, ctx.getStatementSourceReference(),
+ "Cannot resolve QNameModule for '%s'", value);
+
+ final QNameModule resultQNameModule;
+ if (qNameModule.getRevision() == null) {
+ resultQNameModule = QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV)
+ .intern();
+ } else {
+ resultQNameModule = qNameModule;
+ }
+
+ return ctx.getFromNamespace(QNameCacheNamespace.class, QName.create(resultQNameModule, localName));
+ }
+
+ public static QNameModule getRootModuleQName(final StmtContext<?, ?, ?> ctx) {
+ if (ctx == null) {
+ return null;
+ }
+
+ final StmtContext<?, ?, ?> rootCtx = ctx.getRoot();
+ final QNameModule qNameModule;
+
+ if (producesDeclared(rootCtx, ModuleStatement.class)) {
+ qNameModule = rootCtx.getFromNamespace(ModuleCtxToModuleQName.class, rootCtx);
+ } else if (producesDeclared(rootCtx, SubmoduleStatement.class)) {
+ final String belongsToModuleName = firstAttributeOf(rootCtx.declaredSubstatements(),
+ BelongsToStatement.class);
+ qNameModule = rootCtx.getFromNamespace(ModuleNameToModuleQName.class, belongsToModuleName);
+ } else {
+ qNameModule = null;
+ }
+
+ Preconditions.checkArgument(qNameModule != null, "Failed to look up root QNameModule for %s", ctx);
+ if (qNameModule.getRevision() != null) {
+ return qNameModule;
+ }
+
+ return QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV).intern();
+ }
+
+ public static QNameModule getModuleQNameByPrefix(final StmtContext<?, ?, ?> ctx, final String prefix) {
+ final ModuleIdentifier modId = ctx.getRoot().getFromNamespace(ImpPrefixToModuleIdentifier.class, prefix);
+ final QNameModule qNameModule = ctx.getFromNamespace(ModuleIdentifierToModuleQName.class, modId);
+
+ if (qNameModule == null && producesDeclared(ctx.getRoot(), SubmoduleStatement.class)) {
+ final String moduleName = ctx.getRoot().getFromNamespace(BelongsToPrefixToModuleName.class, prefix);
+ return ctx.getFromNamespace(ModuleNameToModuleQName.class, moduleName);
+ }
+ return qNameModule;
+ }
+
+ public static SourceIdentifier createSourceIdentifier(final StmtContext<?, ?, ?> root) {
+ final QNameModule qNameModule = root.getFromNamespace(ModuleCtxToModuleQName.class, root);
+ if (qNameModule != null) {
+ // creates SourceIdentifier for a module
+ return RevisionSourceIdentifier.create((String) root.getStatementArgument(),
+ qNameModule.getFormattedRevision());
+ }
+
+ // creates SourceIdentifier for a submodule
+ final Date revision = Optional.ofNullable(getLatestRevision(root.declaredSubstatements()))
+ .orElse(SimpleDateFormatUtil.DEFAULT_DATE_REV);
+ final String formattedRevision = SimpleDateFormatUtil.getRevisionFormat().format(revision);
+ return RevisionSourceIdentifier.create((String) root.getStatementArgument(), formattedRevision);
+ }
+
+ public static Date getLatestRevision(final Iterable<? extends StmtContext<?, ?, ?>> subStmts) {
+ Date revision = null;
+ for (final StmtContext<?, ?, ?> subStmt : subStmts) {
+ if (subStmt.getPublicDefinition().getDeclaredRepresentationClass().isAssignableFrom(RevisionStatement
+ .class)) {
+ if (revision == null && subStmt.getStatementArgument() != null) {
+ revision = (Date) subStmt.getStatementArgument();
+ } else if (subStmt.getStatementArgument() != null && ((Date) subStmt.getStatementArgument()).compareTo
+ (revision) > 0) {
+ revision = (Date) subStmt.getStatementArgument();
+ }
+ }
+ }
+ return revision;
+ }
+
+ public static boolean isUnknownNode(final StmtContext<?, ?, ?> stmtCtx) {
+ return stmtCtx != null && stmtCtx.getPublicDefinition().getDeclaredRepresentationClass()
+ .isAssignableFrom(UnknownStatementImpl.class);
+ }
}
import org.opendaylight.yangtools.yang.parser.spi.meta.SomeModifiersUnresolvedException;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupportBundle;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules;
import org.opendaylight.yangtools.yang.parser.spi.source.ModulesDeviatedByModules.SupportedModules;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext.PhaseCompletionProgress;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveSchemaContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private SomeModifiersUnresolvedException propagateException(final SourceSpecificContext source,
final RuntimeException cause) throws SomeModifiersUnresolvedException {
- final SourceIdentifier sourceId = Utils.createSourceIdentifier(source.getRoot());
+ final SourceIdentifier sourceId = StmtContextUtils.createSourceIdentifier(source.getRoot());
if (!(cause instanceof SourceException)) {
/*
* This should not be happening as all our processing should provide SourceExceptions.
if (!addedCause) {
addedCause = true;
- final SourceIdentifier sourceId = Utils.createSourceIdentifier(failedSource.getRoot());
+ final SourceIdentifier sourceId = StmtContextUtils.createSourceIdentifier(failedSource.getRoot());
buildFailure = new SomeModifiersUnresolvedException(currentPhase, sourceId, sourceEx);
} else {
buildFailure.addSuppressed(sourceEx);
import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace;
import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Verify.verify(maybeParentPath.isPresent(), "Parent %s does not have a SchemaPath", parent);
final SchemaPath parentPath = maybeParentPath.get();
- if (Utils.isUnknownNode(this)) {
+ if (StmtContextUtils.isUnknownNode(this)) {
return parentPath.createChild(getPublicDefinition().getStatementName());
}
if (argument instanceof QName) {
if (argument instanceof String) {
// FIXME: This may yield illegal argument exceptions
final StmtContext<?, ?, ?> originalCtx = getOriginalCtx();
- final QName qname = originalCtx != null ? Utils.qNameFromArgument(originalCtx, (String) argument) : Utils
- .qNameFromArgument(this, (String) argument);
+ final QName qname = originalCtx != null ? StmtContextUtils.qnameFromArgument(originalCtx, (String) argument)
+ : StmtContextUtils.qnameFromArgument(this, (String) argument);
return parentPath.createChild(qname);
}
if (argument instanceof SchemaNodeIdentifier
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.spi.source.AnyxmlSchemaLocationNamespace;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.AnyXmlEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.YangModeledAnyXmlEffectiveStatementImpl;
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ArgumentEffectiveStatementImpl;
public class ArgumentStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
if (YangStmtMapping.USES == augmentNode.getParentContext().getPublicDefinition()) {
final StatementContextBase<?, ?, ?> targetNode = Utils.findNode(getSearchRoot(augmentNode),
augmentNode.getStatementArgument());
- if (Utils.isUnknownNode(targetNode)) {
+ if (StmtContextUtils.isUnknownNode(targetNode)) {
augmentNode.setIsSupportedToBuildEffective(false);
LOG.warn(
"Uses-augment to unknown node {}. Augmentation has not been performed. At line: {}",
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.BitEffectiveStatementImpl;
public class BitStatementImpl extends AbstractDeclaredStatement<QName> implements BitStatement {
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.CaseEffectiveStatementImpl;
public class CaseStatementImpl extends AbstractDeclaredStatement<QName> implements CaseStatement {
}
@Override public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.spi.source.ImplicitSubstatement;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ContainerEffectiveStatementImpl;
public class ContainerStatementImpl extends AbstractDeclaredStatement<QName> implements ContainerStatement {
@Override
public QName parseArgumentValue(final StmtContext<?,?,?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx,value);
+ return StmtContextUtils.qnameFromArgument(ctx,value);
}
@Override
@Override
public QName parseArgumentValue(final StmtContext<?,?,?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.FeatureEffectiveStatementImpl;
public class FeatureStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.GroupingEffectiveStatementImpl;
public class GroupingStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.IdentityEffectiveStatementImpl;
public class IdentityStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.IfFeatureEffectiveStatementImpl;
if(YangVersion.VERSION_1_1.equals(ctx.getRootVersion())) {
return parseIfFeatureExpression(ctx, value);
} else {
- final QName qName = Utils.qNameFromArgument(ctx, value);
+ final QName qName = StmtContextUtils.qnameFromArgument(ctx, value);
return setQNames -> setQNames.contains(qName);
}
}
@Override
public Predicate<Set<QName>> visitIdentifier_ref_arg(final Identifier_ref_argContext ctx) {
- final QName featureQName = Utils.qNameFromArgument(stmtCtx, ctx.getText());
+ final QName featureQName = StmtContextUtils.qnameFromArgument(stmtCtx, ctx.getText());
return setQNames -> setQNames.contains(featureQName);
}
}
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.InputEffectiveStatementImpl;
public class InputStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, "input");
+ return StmtContextUtils.qnameFromArgument(ctx, "input");
}
@Override
final Builder<SchemaNodeIdentifier> builder = ImmutableSet.builder();
int tokens = 0;
for (String keyToken : StmtContextUtils.LIST_KEY_SPLITTER.split(value)) {
- builder.add(SchemaNodeIdentifier.create(false, Utils.qNameFromArgument(ctx, keyToken)));
+ builder.add(SchemaNodeIdentifier.create(false, StmtContextUtils.qnameFromArgument(ctx, keyToken)));
tokens++;
}
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.LeafListEffectiveStatementImpl;
public class LeafListStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value)
{
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
}
@Override public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx,value);
+ return StmtContextUtils.qnameFromArgument(ctx,value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ListEffectiveStatementImpl;
public class ListStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.SemanticVersionNamespace;
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;
import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToNamespace;
import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleIdentifier;
stmt.addContext(PreLinkageModuleNamespace.class, moduleName, stmt);
- Optional<Date> revisionDate = Optional.ofNullable(Utils.getLatestRevision(stmt.declaredSubstatements()));
+ Optional<Date> revisionDate = Optional.ofNullable(StmtContextUtils.getLatestRevision(
+ stmt.declaredSubstatements()));
if (!revisionDate.isPresent()) {
revisionDate = Optional.of(SimpleDateFormatUtil.DEFAULT_DATE_REV);
}
SourceException.throwIf(!moduleNs.isPresent(), stmt.getStatementSourceReference(),
"Namespace of the module [%s] is missing", stmt.getStatementArgument());
- Optional<Date> revisionDate = Optional.ofNullable(Utils.getLatestRevision(stmt.declaredSubstatements()));
+ Optional<Date> revisionDate = Optional.ofNullable(StmtContextUtils.getLatestRevision(
+ stmt.declaredSubstatements()));
if (!revisionDate.isPresent()) {
revisionDate = Optional.of(SimpleDateFormatUtil.DEFAULT_DATE_REV);
}
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.NotificationEffectiveStatementImpl;
public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.OutputEffectiveStatementImpl;
public class OutputStatementImpl extends AbstractDeclaredStatement<QName> implements OutputStatement {
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, "output");
+ return StmtContextUtils.qnameFromArgument(ctx, "output");
}
@Override
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import javax.xml.namespace.NamespaceContext;
import org.opendaylight.yangtools.yang.common.QNameModule;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
/**
* A {@link NamespaceContext} implementation based on the set of imports and local module namespace.
return localNamespaceURI();
}
- final QNameModule module = Utils.getModuleQNameByPrefix(ctx, prefix);
+ final QNameModule module = StmtContextUtils.getModuleQNameByPrefix(ctx, prefix);
return module == null ? null : module.getNamespace().toString();
}
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.SubmoduleEffectiveStatementImpl;
stmt.addToNs(BelongsToPrefixToModuleName.class, prefix, belongsToModuleName);
}
- private ModuleIdentifier getSubmoduleIdentifier(
+ private static ModuleIdentifier getSubmoduleIdentifier(
final Mutable<String, SubmoduleStatement, EffectiveStatement<String, SubmoduleStatement>> stmt) {
- final Date maybeDate = Utils.getLatestRevision(stmt.declaredSubstatements());
+ final Date maybeDate = StmtContextUtils.getLatestRevision(stmt.declaredSubstatements());
final Optional<Date> revisionDate = maybeDate != null ? Optional.of(maybeDate) : DEFAULT_REVISION;
final ModuleIdentifier submoduleIdentifier = ModuleIdentifierImpl.create(stmt.getStatementArgument(),
import org.opendaylight.yangtools.yang.parser.spi.meta.StatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.TypeDefEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.type.BinaryTypeEffectiveStatementImpl;
typeStmt = BuiltinEffectiveStatements.UINT64;
break;
default:
- final QName qname = Utils.qNameFromArgument(ctx, ctx.getStatementArgument());
+ final QName qname = StmtContextUtils.qnameFromArgument(ctx, ctx.getStatementArgument());
final StmtContext<?, TypedefStatement, TypedefEffectiveStatement> typedef =
ctx.getFromNamespace(TypeNamespace.class, qname);
SourceException.throwIfNull(typedef, ctx.getStatementSourceReference(), "Type '%s' not found", qname);
return;
}
- final QName typeQName = Utils.qNameFromArgument(stmt, stmt.getStatementArgument());
+ final QName typeQName = StmtContextUtils.qnameFromArgument(stmt, stmt.getStatementArgument());
final ModelActionBuilder typeAction = stmt.newInferenceAction(ModelProcessingPhase.EFFECTIVE_MODEL);
final Prerequisite<StmtContext<?, ?, ?>> typePrereq = typeAction.requiresCtx(stmt, TypeNamespace.class,
typeQName, ModelProcessingPhase.EFFECTIVE_MODEL);
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.TypeDefEffectiveStatementImpl;
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
return targetCtx.getFromNamespace(ModuleCtxToModuleQName.class, targetCtx);
}
if (targetCtx.getPublicDefinition() == YangStmtMapping.AUGMENT) {
- return Utils.getRootModuleQName(targetCtx);
+ return StmtContextUtils.getRootModuleQName(targetCtx);
}
final Object targetStmtArgument = targetCtx.getStatementArgument();
import static org.opendaylight.yangtools.yang.common.YangConstants.RFC6020_YANG_NAMESPACE;
import static org.opendaylight.yangtools.yang.common.YangConstants.YANG_XPATH_FUNCTIONS_PREFIX;
-import static org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils.firstAttributeOf;
import com.google.common.base.CharMatcher;
-import com.google.common.base.Preconditions;
import com.google.common.base.Splitter;
-import com.google.common.base.Strings;
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
-import java.util.Date;
import java.util.HashSet;
import java.util.List;
-import java.util.Optional;
import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.antlr.v4.runtime.tree.TerminalNode;
import org.opendaylight.yangtools.antlrv4.code.gen.YangStatementParser;
import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
import org.opendaylight.yangtools.yang.common.YangVersion;
-import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.yangtools.yang.model.api.Status;
-import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.RevisionStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Relative;
-import org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement;
-import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
-import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
-import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType;
-import org.opendaylight.yangtools.yang.parser.spi.meta.InferenceException;
-import org.opendaylight.yangtools.yang.parser.spi.meta.QNameCacheNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
-import org.opendaylight.yangtools.yang.parser.spi.source.BelongsToPrefixToModuleName;
-import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToModuleIdentifier;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleCtxToModuleQName;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleIdentifierToModuleQName;
-import org.opendaylight.yangtools.yang.parser.spi.source.ModuleNameToModuleQName;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReference;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.RootStatementContext;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
for (final String keyToken : keyTokens) {
final SchemaNodeIdentifier.Relative keyNode = (Relative) SchemaNodeIdentifier.Relative.create(false,
- Utils.qNameFromArgument(ctx, keyToken));
+ StmtContextUtils.qnameFromArgument(ctx, keyToken));
keyNodes.add(keyNode);
}
final List<QName> qNames = new ArrayList<>();
for (final String nodeName : SLASH_SPLITTER.split(trimSingleLastSlashFromXPath(path))) {
try {
- final QName qName = Utils.qNameFromArgument(ctx, nodeName);
+ final QName qName = StmtContextUtils.qnameFromArgument(ctx, nodeName);
qNames.add(qName);
} catch (final RuntimeException e) {
throw new SourceException(ctx.getStatementSourceReference(), e,
}
}
- public static QName qNameFromArgument(StmtContext<?, ?, ?> ctx, final String value) {
- if (Strings.isNullOrEmpty(value)) {
- return ctx.getPublicDefinition().getStatementName();
- }
-
- String prefix;
- QNameModule qNameModule = null;
- String localName = null;
-
- final String[] namesParts = value.split(":");
- switch (namesParts.length) {
- case 1:
- localName = namesParts[0];
- qNameModule = getRootModuleQName(ctx);
- break;
- default:
- prefix = namesParts[0];
- localName = namesParts[1];
- qNameModule = getModuleQNameByPrefix(ctx, prefix);
- // in case of unknown statement argument, we're not going to parse it
- if (qNameModule == null
- && ctx.getPublicDefinition().getDeclaredRepresentationClass()
- .isAssignableFrom(UnknownStatementImpl.class)) {
- localName = value;
- qNameModule = getRootModuleQName(ctx);
- }
- if (qNameModule == null
- && ctx.getCopyHistory().getLastOperation() == CopyType.ADDED_BY_AUGMENTATION) {
- ctx = ctx.getOriginalCtx();
- qNameModule = getModuleQNameByPrefix(ctx, prefix);
- }
- break;
- }
-
- qNameModule = InferenceException.throwIfNull(qNameModule, ctx.getStatementSourceReference(),
- "Cannot resolve QNameModule for '%s'", value);
-
- final QNameModule resultQNameModule;
- if (qNameModule.getRevision() == null) {
- resultQNameModule = QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV)
- .intern();
- } else {
- resultQNameModule = qNameModule;
- }
-
- return ctx.getFromNamespace(QNameCacheNamespace.class, QName.create(resultQNameModule, localName));
- }
-
- public static QNameModule getModuleQNameByPrefix(final StmtContext<?, ?, ?> ctx, final String prefix) {
- final ModuleIdentifier modId = ctx.getRoot().getFromNamespace(ImpPrefixToModuleIdentifier.class, prefix);
- final QNameModule qNameModule = ctx.getFromNamespace(ModuleIdentifierToModuleQName.class, modId);
-
- if (qNameModule == null && StmtContextUtils.producesDeclared(ctx.getRoot(), SubmoduleStatement.class)) {
- final String moduleName = ctx.getRoot().getFromNamespace(BelongsToPrefixToModuleName.class, prefix);
- return ctx.getFromNamespace(ModuleNameToModuleQName.class, moduleName);
- }
- return qNameModule;
- }
-
- public static QNameModule getRootModuleQName(final StmtContext<?, ?, ?> ctx) {
- if (ctx == null) {
- return null;
- }
-
- final StmtContext<?, ?, ?> rootCtx = ctx.getRoot();
- final QNameModule qNameModule;
-
- if (StmtContextUtils.producesDeclared(rootCtx, ModuleStatement.class)) {
- qNameModule = rootCtx.getFromNamespace(ModuleCtxToModuleQName.class, rootCtx);
- } else if (StmtContextUtils.producesDeclared(rootCtx, SubmoduleStatement.class)) {
- final String belongsToModuleName = firstAttributeOf(rootCtx.declaredSubstatements(),
- BelongsToStatement.class);
- qNameModule = rootCtx.getFromNamespace(ModuleNameToModuleQName.class, belongsToModuleName);
- } else {
- qNameModule = null;
- }
-
- Preconditions.checkArgument(qNameModule != null, "Failed to look up root QNameModule for %s", ctx);
- if (qNameModule.getRevision() != null) {
- return qNameModule;
- }
-
- return QNameModule.create(qNameModule.getNamespace(), SimpleDateFormatUtil.DEFAULT_DATE_REV).intern();
- }
-
@Nullable
public static StatementContextBase<?, ?, ?> findNode(final StmtContext<?, ?, ?> rootStmtCtx,
final SchemaNodeIdentifier node) {
return (StatementContextBase<?, ?, ?>) rootStmtCtx.getFromNamespace(SchemaNodeIdentifierBuildNamespace.class, node);
}
- public static boolean isUnknownNode(final StmtContext<?, ?, ?> stmtCtx) {
- return stmtCtx != null && stmtCtx.getPublicDefinition().getDeclaredRepresentationClass()
- .isAssignableFrom(UnknownStatementImpl.class);
- }
-
static String internBoolean(final String input) {
if ("true".equals(input)) {
return "true";
}
}
- public static Status parseStatus(final String value) {
- switch (value) {
- case "current":
- return Status.CURRENT;
- case "deprecated":
- return Status.DEPRECATED;
- case "obsolete":
- return Status.OBSOLETE;
- default:
- LOG.warn("Invalid 'status' statement: {}", value);
- return null;
- }
- }
-
- public static Date getLatestRevision(final Iterable<? extends StmtContext<?, ?, ?>> subStmts) {
- Date revision = null;
- for (final StmtContext<?, ?, ?> subStmt : subStmts) {
- if (subStmt.getPublicDefinition().getDeclaredRepresentationClass().isAssignableFrom(RevisionStatement
- .class)) {
- if (revision == null && subStmt.getStatementArgument() != null) {
- revision = (Date) subStmt.getStatementArgument();
- } else if (subStmt.getStatementArgument() != null && ((Date) subStmt.getStatementArgument()).compareTo
- (revision) > 0) {
- revision = (Date) subStmt.getStatementArgument();
- }
- }
- }
- return revision;
- }
-
/**
* Replaces illegal characters of QName by the name of the character (e.g.
* '?' is replaced by "QuestionMark" etc.).
public static boolean belongsToTheSameModule(final QName targetStmtQName, final QName sourceStmtQName) {
return targetStmtQName.getModule().equals(sourceStmtQName.getModule());
}
-
- public static SourceIdentifier createSourceIdentifier(final RootStatementContext<?, ?, ?> root) {
- final QNameModule qNameModule = root.getFromNamespace(ModuleCtxToModuleQName.class, root);
- if (qNameModule != null) {
- // creates SourceIdentifier for a module
- return RevisionSourceIdentifier.create((String) root.getStatementArgument(),
- qNameModule.getFormattedRevision());
- }
-
- // creates SourceIdentifier for a submodule
- final Date revision = Optional.ofNullable(Utils.getLatestRevision(root.declaredSubstatements()))
- .orElse(SimpleDateFormatUtil.DEFAULT_DATE_REV);
- final String formattedRevision = SimpleDateFormatUtil.getRevisionFormat().format(revision);
- return RevisionSourceIdentifier.create((String) root.getStatementArgument(), formattedRevision);
- }
}
import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
public final class AugmentEffectiveStatementImpl extends
AbstractEffectiveDocumentedDataNodeContainer<SchemaNodeIdentifier, AugmentStatement> implements
this.targetPath = ctx.getStatementArgument().asSchemaPath();
- final QNameModule rootModuleQName = Utils.getRootModuleQName(ctx);
+ final QNameModule rootModuleQName = StmtContextUtils.getRootModuleQName(ctx);
this.namespace = rootModuleQName.getNamespace();
this.revision = rootModuleQName.getRevision();
import org.opendaylight.yangtools.yang.model.api.stmt.ImportStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.MissingSubstatementException;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.ImpPrefixToSemVerModuleIdentifier;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
public class ImportEffectiveStatementImpl extends DeclaredEffectiveStatementBase<String, ImportStatement> implements
ModuleImport {
* When 'revision-date' of an import is not specified in yang source, we
* need to find revision of imported module.
*/
- final QNameModule importedModule = Utils.getModuleQNameByPrefix(ctx, this.prefix);
+ final QNameModule importedModule = StmtContextUtils.getModuleQNameByPrefix(ctx, this.prefix);
SourceException.throwIfNull(importedModule, ctx.getStatementSourceReference(),
"Unable to find import of module %s with prefix %s.", this.moduleName, this.prefix);
return importedModule.getRevision();
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
public final class UnknownEffectiveStatementImpl extends UnknownEffectiveStatementBase<String> {
} else {
QName maybeQNameArgumentInit = null;
try {
- maybeQNameArgumentInit = Utils.qNameFromArgument(ctx, argument());
+ maybeQNameArgumentInit = StmtContextUtils.qnameFromArgument(ctx, argument());
} catch (IllegalArgumentException e) {
maybeQNameArgumentInit = getNodeType();
}
import org.opendaylight.yangtools.yang.model.api.YangDataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
+import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
/**
* Effective statement representation of 'yang-data' extension defined in https://tools.ietf.org/html/rfc8040#section-8
QName maybeQNameArgumentInit;
try {
- maybeQNameArgumentInit = Utils.qNameFromArgument(ctx, argument());
+ maybeQNameArgumentInit = StmtContextUtils.qnameFromArgument(ctx, argument());
} catch (IllegalArgumentException e) {
maybeQNameArgumentInit = getNodeType();
}
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ChildSchemaNodes;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc7950.effective.ActionEffectiveStatementImpl;
public class ActionStatementImpl extends AbstractDeclaredStatement<QName> implements ActionStatement {
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override
import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
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;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.ChildSchemaNodes;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc7950.effective.AnyDataEffectiveStatementImpl;
/**
@Override
public QName parseArgumentValue(final StmtContext<?, ?, ?> ctx, final String value) {
- return Utils.qNameFromArgument(ctx, value);
+ return StmtContextUtils.qnameFromArgument(ctx, value);
}
@Override