*/
package org.opendaylight.yangtools.yang.parser.spi.meta;
+import com.google.common.base.Optional;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
-import org.opendaylight.yangtools.yang.common.QNameModule;
-import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
-import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
-import java.util.Collection;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
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.IdentifierNamespace;
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
+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.StatementContextBase;
public interface StmtContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>> {
@Nullable
A getStatementArgument();
- @Nullable
- List<Object> getArgumentsFromRoot();
-
- List<StmtContext<?,?,?>> getStmtContextsFromRoot();
+ /**
+ * Return the {@link SchemaPath} of this statement. Not all statements have a SchemaPath, in which case
+ * {@link Optional#absent()} is returned.
+ *
+ * @return Optional SchemaPath
+ */
+ @Nonnull Optional<SchemaPath> getSchemaPath();
@Nonnull
<K, V, KT extends K, N extends IdentifierNamespace<K, V>> V getFromNamespace(
*/
package org.opendaylight.yangtools.yang.parser.stmt.reactor;
+import com.google.common.base.Optional;
import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.NamespaceStorageNode;
private final SourceSpecificContext sourceContext;
private final A argument;
- RootStatementContext(ContextBuilder<A, D, E> builder, SourceSpecificContext sourceContext) throws SourceException {
+ RootStatementContext(final ContextBuilder<A, D, E> builder, final SourceSpecificContext sourceContext) throws SourceException {
super(builder);
this.sourceContext = sourceContext;
this.argument = builder.getDefinition().parseArgumentValue(this, builder.getRawArgument());
}
- RootStatementContext(RootStatementContext<A, D, E> original, QNameModule newQNameModule, TypeOfCopy typeOfCopy)
+ RootStatementContext(final RootStatementContext<A, D, E> original, final QNameModule newQNameModule, final TypeOfCopy typeOfCopy)
throws SourceException {
super(original);
* determines whether copy is used by augmentation or uses
* @throws SourceException
*/
- private void copyDeclaredStmts(RootStatementContext<A, D, E> original, QNameModule newQNameModule,
- TypeOfCopy typeOfCopy) throws SourceException {
+ private void copyDeclaredStmts(final RootStatementContext<A, D, E> original, final QNameModule newQNameModule,
+ final TypeOfCopy typeOfCopy) throws SourceException {
Collection<? extends StmtContext<?, ?, ?>> originalDeclaredSubstatements = original.declaredSubstatements();
for (StmtContext<?, ?, ?> stmtContext : originalDeclaredSubstatements) {
this.addEffectiveSubstatement(stmtContext.createCopy(newQNameModule, this, typeOfCopy));
* determines whether copy is used by augmentation or uses
* @throws SourceException
*/
- private void copyEffectiveStmts(RootStatementContext<A, D, E> original, QNameModule newQNameModule,
- TypeOfCopy typeOfCopy) throws SourceException {
+ private void copyEffectiveStmts(final RootStatementContext<A, D, E> original, final QNameModule newQNameModule,
+ final TypeOfCopy typeOfCopy) throws SourceException {
Collection<? extends StmtContext<?, ?, ?>> originalEffectiveSubstatements = original.effectiveSubstatements();
for (StmtContext<?, ?, ?> stmtContext : originalEffectiveSubstatements) {
this.addEffectiveSubstatement(stmtContext.createCopy(newQNameModule, this, typeOfCopy));
* @throws SourceException instance of SourceException
*/
@Override
- public StatementContextBase<?, ?, ?> createCopy(StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
+ public StatementContextBase<?, ?, ?> createCopy(final StatementContextBase<?, ?, ?> newParent, final TypeOfCopy typeOfCopy)
throws SourceException {
return createCopy(null, newParent, typeOfCopy);
}
* @throws SourceException instance of SourceException
*/
@Override
- public StatementContextBase<A, D, E> createCopy(QNameModule newQNameModule,
- StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy) throws SourceException {
+ public StatementContextBase<A, D, E> createCopy(final QNameModule newQNameModule,
+ final StatementContextBase<?, ?, ?> newParent, final TypeOfCopy typeOfCopy) throws SourceException {
RootStatementContext<A, D, E> copy = new RootStatementContext<>(this, newQNameModule, typeOfCopy);
copy.addAllToCopyHistory(this.getCopyHistory());
return copy;
}
- /**
- * @return this' argument as it is the only from root (this)
- */
- @Override
- public List<Object> getArgumentsFromRoot() {
- List<Object> argumentList = new LinkedList<>();
- argumentList.add(argument);
- return argumentList;
- }
-
- /**
- * @return this as it is the only\context from root (this)
- */
@Override
- public List<StmtContext<?, ?, ?>> getStmtContextsFromRoot() {
- List<StmtContext<?, ?, ?>> stmtContextsList = new LinkedList<>();
- stmtContextsList.add(this);
- return stmtContextsList;
+ public Optional<SchemaPath> getSchemaPath() {
+ return Optional.of(SchemaPath.ROOT);
}
/**
public boolean isRootContext() {
return true;
}
-
}
*/
package org.opendaylight.yangtools.yang.parser.stmt.reactor;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
-import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import java.util.List;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.GroupingUtils;
-import org.opendaylight.yangtools.yang.common.QNameModule;
+import com.google.common.base.Optional;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Verify;
import java.util.Collection;
import org.opendaylight.yangtools.yang.common.QName;
-import com.google.common.base.Preconditions;
+import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
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.stmt.AugmentStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.NamespaceStorageNode;
import org.opendaylight.yangtools.yang.parser.spi.meta.NamespaceBehaviour.Registry;
+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.spi.validation.ValidationBundlesNamespace;
+import org.opendaylight.yangtools.yang.parser.spi.validation.ValidationBundlesNamespace.ValidationBundleType;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.GroupingUtils;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
-class SubstatementContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
+final class SubstatementContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
extends StatementContextBase<A, D, E> {
private final StatementContextBase<?, ?, ?> parent;
private final A argument;
+ private volatile SchemaPath schemaPath;
- SubstatementContext(StatementContextBase<?, ?, ?> parent,
- ContextBuilder<A, D, E> builder) throws SourceException {
+ SubstatementContext(final StatementContextBase<?, ?, ?> parent,
+ final ContextBuilder<A, D, E> builder) throws SourceException {
super(builder);
- this.parent = Preconditions.checkNotNull(parent,
- "Parent must not be null");
- this.argument = builder.getDefinition().parseArgumentValue(this,
- builder.getRawArgument());
+ this.parent = Preconditions.checkNotNull(parent, "Parent must not be null");
+ this.argument = builder.getDefinition().parseArgumentValue(this, builder.getRawArgument());
}
@SuppressWarnings("unchecked")
- SubstatementContext(SubstatementContext<A, D, E> original,
- QNameModule newQNameModule,
- StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
- throws SourceException {
+ SubstatementContext(final SubstatementContext<A, D, E> original,
+ final QNameModule newQNameModule,
+ final StatementContextBase<?, ?, ?> newParent, final TypeOfCopy typeOfCopy) {
super(original);
this.parent = newParent;
if (newQNameModule != null) {
if (original.argument instanceof QName) {
QName originalQName = (QName) original.argument;
- this.argument = (A) QName.create(newQNameModule,
- originalQName.getLocalName());
- } else if (StmtContextUtils.producesDeclared(original,
- KeyStatement.class)) {
- this.argument = (A) StmtContextUtils
- .replaceModuleQNameForKey(
+ this.argument = (A) QName.create(newQNameModule, originalQName.getLocalName());
+ } else if (StmtContextUtils.producesDeclared(original, KeyStatement.class)) {
+ this.argument = (A) StmtContextUtils.replaceModuleQNameForKey(
(StmtContext<Collection<SchemaNodeIdentifier>, KeyStatement, ?>) original,
newQNameModule);
} else {
}
}
- private void copyDeclaredStmts(SubstatementContext<A, D, E> original,
- QNameModule newQNameModule, TypeOfCopy typeOfCopy)
+
+ private void copyDeclaredStmts(final SubstatementContext<A, D, E> original,
+ final QNameModule newQNameModule, final TypeOfCopy typeOfCopy)
throws SourceException {
Collection<? extends StatementContextBase<?, ?, ?>> originalDeclaredSubstatements = original
.declaredSubstatements();
}
}
- private void copyEffectiveStmts(SubstatementContext<A, D, E> original,
- QNameModule newQNameModule, TypeOfCopy typeOfCopy)
+ private void copyEffectiveStmts(final SubstatementContext<A, D, E> original,
+ final QNameModule newQNameModule, final TypeOfCopy typeOfCopy)
throws SourceException {
Collection<? extends StatementContextBase<?, ?, ?>> originalEffectiveSubstatements = original
.effectiveSubstatements();
@Override
public StatementContextBase<?, ?, ?> createCopy(
- StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
+ final StatementContextBase<?, ?, ?> newParent, final TypeOfCopy typeOfCopy)
throws SourceException {
return createCopy(null, newParent, typeOfCopy);
}
@Override
- public StatementContextBase<A, D, E> createCopy(QNameModule newQNameModule,
- StatementContextBase<?, ?, ?> newParent, TypeOfCopy typeOfCopy)
+ public StatementContextBase<A, D, E> createCopy(final QNameModule newQNameModule,
+ final StatementContextBase<?, ?, ?> newParent, final TypeOfCopy typeOfCopy)
throws SourceException {
- SubstatementContext<A, D, E> copy = new SubstatementContext<>(this,
- newQNameModule, newParent, typeOfCopy);
+ SubstatementContext<A, D, E> copy = new SubstatementContext<>(this, newQNameModule, newParent, typeOfCopy);
copy.addAllToCopyHistory(this.getCopyHistory());
copy.addToCopyHistory(typeOfCopy);
return copy;
}
- @Override
- public List<Object> getArgumentsFromRoot() {
- List<Object> argumentsFromRoot = parent.getArgumentsFromRoot();
- argumentsFromRoot.add(argument);
- return argumentsFromRoot;
+ private boolean isSupportedAsShorthandCase() {
+ final Collection<?> supportedCaseShorthands = getFromNamespace(ValidationBundlesNamespace.class,
+ ValidationBundleType.SUPPORTED_CASE_SHORTHANDS);
+ return supportedCaseShorthands == null || supportedCaseShorthands.contains(getPublicDefinition());
+ }
+
+ private SchemaPath createSchemaPath() {
+ final Optional<SchemaPath> maybeParentPath = parent.getSchemaPath();
+ Verify.verify(maybeParentPath.isPresent(), "Parent %s does not have a SchemaPath", parent);
+ final SchemaPath parentPath = maybeParentPath.get();
+
+ if (argument instanceof QName) {
+ QName qname = (QName) argument;
+ if (StmtContextUtils.producesDeclared(this, UsesStatement.class)) {
+ return maybeParentPath.orNull();
+ }
+
+ final SchemaPath path;
+ if (StmtContextUtils.producesDeclared(getParentContext(), ChoiceStatement.class)
+ && isSupportedAsShorthandCase()) {
+ path = parentPath.createChild(qname);
+ } else {
+ path = parentPath;
+ }
+ return path.createChild(qname);
+ }
+ if (argument instanceof String) {
+ // FIXME: This may yield illegal argument exceptions
+ final StatementContextBase<?, ?, ?> originalCtx = getOriginalCtx();
+ final QName qname = (originalCtx != null) ? Utils.qNameFromArgument(originalCtx, (String) argument)
+ : Utils.qNameFromArgument(this, (String) argument);
+ return parentPath.createChild(qname);
+ }
+ if (argument instanceof SchemaNodeIdentifier &&
+ (StmtContextUtils.producesDeclared(this, AugmentStatement.class)
+ || StmtContextUtils.producesDeclared(this, RefineStatement.class))) {
+
+ return parentPath.createChild(((SchemaNodeIdentifier) argument).getPathFromRoot());
+ }
+ if (Utils.isUnknownNode(this)) {
+ return parentPath.createChild(getPublicDefinition().getStatementName());
+ }
+
+ // FIXME: this does not look right
+ return maybeParentPath.orNull();
}
@Override
- public List<StmtContext<?, ?, ?>> getStmtContextsFromRoot() {
- List<StmtContext<?, ?, ?>> stmtContextsList = parent
- .getStmtContextsFromRoot();
- stmtContextsList.add(this);
- return stmtContextsList;
+ public Optional<SchemaPath> getSchemaPath() {
+ SchemaPath local = schemaPath;
+ if (local == null) {
+ synchronized (this) {
+ local = schemaPath;
+ if (local == null) {
+ local = createSchemaPath();
+ schemaPath = local;
+ }
+ }
+
+ }
+
+ return Optional.fromNullable(local);
}
@Override
import java.util.Collection;
import java.util.Date;
import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Set;
import org.opendaylight.yangtools.yang.model.api.Deviation;
import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
-import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.BelongsToStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ModuleStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
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.api.stmt.UsesStatement;
import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
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.ModuleNameToModuleQName;
import org.opendaylight.yangtools.yang.parser.spi.source.PrefixToModule;
import org.opendaylight.yangtools.yang.parser.spi.source.QNameToStatementDefinition;
-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.RootStatementContext;
import org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public final class Utils {
-
private static final Logger LOG = LoggerFactory.getLogger(Utils.class);
private static final CharMatcher DOUBLE_QUOTE_MATCHER = CharMatcher.is('"');
private static final CharMatcher SINGLE_QUOTE_MATCHER = CharMatcher.is('\'');
return (StatementContextBase<?, ?, ?>) rootStmtCtx.getFromNamespace(SchemaNodeIdentifierBuildNamespace.class, node);
}
- public static SchemaPath getSchemaPath(final StmtContext<?, ?, ?> ctx) {
-
- if (ctx == null) {
- return null;
- }
-
- final Iterator<StmtContext<?, ?, ?>> iteratorFromRoot = ctx.getStmtContextsFromRoot().iterator();
- // skip root argument
- if (iteratorFromRoot.hasNext()) {
- iteratorFromRoot.next();
- }
-
- List<QName> qNamesFromRoot = new LinkedList<>();
- while (iteratorFromRoot.hasNext()) {
- StmtContext<?, ?, ?> nextStmtCtx = iteratorFromRoot.next();
- Object nextStmtArgument = nextStmtCtx.getStatementArgument();
- if (nextStmtArgument instanceof QName) {
- QName qname = (QName) nextStmtArgument;
- if (StmtContextUtils.producesDeclared(nextStmtCtx, UsesStatement.class)) {
- continue;
- }
- if (StmtContextUtils.producesDeclared(nextStmtCtx.getParentContext(), ChoiceStatement.class)
- && isSupportedAsShorthandCase(nextStmtCtx)) {
- qNamesFromRoot.add(qname);
- }
- qNamesFromRoot.add(qname);
- } else if (nextStmtArgument instanceof String) {
- // FIXME: This may yield illegal argument exceptions
- StatementContextBase<?, ?, ?> originalCtx = ctx
- .getOriginalCtx();
- final QName qName = (originalCtx != null) ? qNameFromArgument(
- originalCtx, (String) nextStmtArgument)
- : qNameFromArgument(ctx, (String) nextStmtArgument);
- qNamesFromRoot.add(qName);
- } else if ((StmtContextUtils.producesDeclared(nextStmtCtx, AugmentStatement.class)
- || StmtContextUtils.producesDeclared(nextStmtCtx, RefineStatement.class))
- && nextStmtArgument instanceof SchemaNodeIdentifier) {
- addQNamesFromSchemaNodeIdentifierToList(qNamesFromRoot, (SchemaNodeIdentifier) nextStmtArgument);
- } else if (isUnknownNode(nextStmtCtx)) {
- qNamesFromRoot.add(nextStmtCtx.getPublicDefinition().getStatementName());
- } else {
- return SchemaPath.SAME;
- }
- }
-
- final SchemaPath schemaPath = SchemaPath.create(qNamesFromRoot, true);
- return schemaPath;
- }
-
public static boolean isUnknownNode(final StmtContext<?, ?, ?> stmtCtx) {
return stmtCtx.getPublicDefinition().getDeclaredRepresentationClass()
.isAssignableFrom(UnknownStatementImpl.class);
}
- private static boolean isSupportedAsShorthandCase(final StmtContext<?, ?, ?> statementCtx) {
-
- Collection<?> supportedCaseShorthands = statementCtx.getFromNamespace(ValidationBundlesNamespace.class,
- ValidationBundleType.SUPPORTED_CASE_SHORTHANDS);
-
- return supportedCaseShorthands == null || supportedCaseShorthands.contains(statementCtx.getPublicDefinition());
- }
-
- private static void addQNamesFromSchemaNodeIdentifierToList(final List<QName> qNamesFromRoot,
- final SchemaNodeIdentifier augmentTargetPath) {
- for (QName qname : augmentTargetPath.getPathFromRoot()) {
- qNamesFromRoot.add(qname);
- }
- }
-
public static Deviation.Deviate parseDeviateFromString(final String deviate) {
// Yang constants should be lowercase so we have throw if value does not
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
abstract class AbstractEffectiveSchemaNode<D extends DeclaredStatement<QName>> extends
AbstractEffectiveDocumentedNode<QName, D> implements SchemaNode {
private final SchemaPath path;
private final List<UnknownSchemaNode> unknownNodes;
- AbstractEffectiveSchemaNode(StmtContext<QName, D, ?> ctx) {
+ AbstractEffectiveSchemaNode(final StmtContext<QName, D, ?> ctx) {
super(ctx);
this.qname = ctx.getStatementArgument();
- this.path = Utils.getSchemaPath(ctx);
+ this.path = ctx.getSchemaPath().get();
Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
ImmutableList.Builder<UnknownSchemaNode> listBuilder = new ImmutableList.Builder<>();
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
abstract class AbstractEffectiveSimpleDataNodeContainer<D extends DeclaredStatement<QName>> extends
AbstractEffectiveDocumentedDataNodeContainer<QName, D> implements DataNodeContainer, AugmentationTarget,
private final Set<AugmentationSchema> augmentations;
private final List<UnknownSchemaNode> unknownNodes;
- public AbstractEffectiveSimpleDataNodeContainer(StmtContext<QName, D, ?> ctx) {
+ public AbstractEffectiveSimpleDataNodeContainer(final StmtContext<QName, D, ?> ctx) {
super(ctx);
this.qname = ctx.getStatementArgument();
- this.path = Utils.getSchemaPath(ctx);
+ this.path = ctx.getSchemaPath().get();
this.constraints = new EffectiveConstraintDefinitionImpl(this);
ConfigEffectiveStatementImpl configStmt = firstEffective(ConfigEffectiveStatementImpl.class);
final StmtContext<?, TypedefStatement, TypedefEffectiveStatement> typeStmt =
ctx.getFromNamespace(TypeNamespace.class, qName);
if (typeStmt == null) {
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
} else {
- path = Utils.getSchemaPath(ctx.getFromNamespace(TypeNamespace.class, qName));
+ path = ctx.getFromNamespace(TypeNamespace.class, qName).getSchemaPath().get();
}
UnitsEffectiveStatementImpl unitsStmt = firstEffective(UnitsEffectiveStatementImpl.class);
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
public class ExtensionEffectiveStatementImpl extends AbstractEffectiveDocumentedNode<QName, ExtensionStatement>
implements ExtensionDefinition {
final StmtContext<QName, ExtensionStatement, EffectiveStatement<QName, ExtensionStatement>> ctx) {
super(ctx);
this.qname = ctx.getStatementArgument();
- this.schemaPath = Utils.getSchemaPath(ctx);
+ this.schemaPath = ctx.getSchemaPath().get();
// initSubstatementCollections
Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
public class GroupingEffectiveStatementImpl extends
AbstractEffectiveDocumentedDataNodeContainer<QName, GroupingStatement> implements GroupingDefinition {
super(ctx);
qname = ctx.getStatementArgument();
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
// initCopyType
List<TypeOfCopy> copyTypesFromOriginal = ctx.getCopyHistory();
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
public class NotificationEffectiveStatementImpl extends
AbstractEffectiveDocumentedDataNodeContainer<QName, NotificationStatement> implements NotificationDefinition {
final StmtContext<QName, NotificationStatement, EffectiveStatement<QName, NotificationStatement>> ctx) {
super(ctx);
this.qname = ctx.getStatementArgument();
- this.path = Utils.getSchemaPath(ctx);
+ this.path = ctx.getSchemaPath().get();
// initSubstatementCollections
Collection<? extends EffectiveStatement<?, ?>> effectiveSubstatements = effectiveSubstatements();
import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
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;
public final class RefineEffectiveStatementImpl extends
AbstractEffectiveDocumentedNode<SchemaNodeIdentifier, RefineStatement> implements SchemaNode {
public RefineEffectiveStatementImpl(final StmtContext<SchemaNodeIdentifier, RefineStatement, ?> ctx) {
super(ctx);
qname = ctx.getStatementArgument().getLastComponent();
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
refineTargetNode = (SchemaNode) ctx.getEffectOfStatement().iterator().next().buildEffective();
// initSubstatementCollectionsAndFields
}
this.maybeQNameArgument = maybeQNameArgumentInit;
}
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(maybeQNameArgument);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(maybeQNameArgument);
nodeParameter = (ctx.rawStatementArgument() == null) ? "" : ctx.rawStatementArgument();
// TODO init other fields (see Bug1412Test)
import org.opendaylight.yangtools.yang.parser.spi.GroupingNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext.TypeOfCopy;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
public final class UsesEffectiveStatementImpl extends EffectiveStatementBase<QName, UsesStatement> implements UsesNode {
private final SchemaPath groupingPath;
// initGroupingPath
StmtContext<?, GroupingStatement, EffectiveStatement<QName, GroupingStatement>> grpCtx = ctx.getFromNamespace(
GroupingNamespace.class, ctx.getStatementArgument());
- this.groupingPath = Utils.getSchemaPath(grpCtx);
+ this.groupingPath = grpCtx.getSchemaPath().get();
// initCopyType
List<TypeOfCopy> copyTypesFromOriginal = ctx.getCopyHistory();
import org.opendaylight.yangtools.yang.model.api.stmt.BitStatement;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DescriptionEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PositionEffectiveStatementImpl;
List<UnknownSchemaNode> unknownSchemaNodesInit = new ArrayList<>();
qName = ctx.getStatementArgument();
- schemaPath = Utils.getSchemaPath(ctx);
+ schemaPath = ctx.getSchemaPath().get();
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) {
import org.opendaylight.yangtools.yang.model.util.BaseTypes;
import org.opendaylight.yangtools.yang.model.util.BitsType;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
public class BitsSpecificationEffectiveStatementImpl extends
List<Bit> bitsInit = new ArrayList<>();
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(QNAME);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(QNAME);
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof Bit) {
import org.opendaylight.yangtools.yang.model.util.ExtendedType.Builder;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.FractionDigitsEffectiveStatementImpl;
if (!initRanges.isEmpty() && validateRanges(initRanges)) {
isExtended = true;
rangeConstraints = ImmutableList.copyOf(initRanges);
- SchemaPath parentPath = Utils.getSchemaPath(ctx.getParentContext());
+ SchemaPath parentPath = ctx.getParentContext().getSchemaPath().get();
extendedTypeQName = QName.create(parentPath.getLastComponent().getModule(), QNAME.getLocalName());
path = parentPath.createChild(extendedTypeQName);
} else {
isExtended = false;
rangeConstraints = DEFAULT_RANGE_STATEMENTS;
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(QNAME);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(QNAME);
}
}
import org.opendaylight.yangtools.yang.model.api.stmt.EnumStatement;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DescriptionEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ReferenceEffectiveStatementImpl;
public EnumEffectiveStatementImpl(final StmtContext<String, EnumStatement, ?> ctx) {
super(ctx);
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
for (final EffectiveStatement<?,?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) {
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.EnumerationType;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
public class EnumSpecificationEffectiveStatementImpl extends
List<EnumPair> enumsInit = new ArrayList<>();
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(QNAME);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(QNAME);
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof EnumPair) {
import org.opendaylight.yangtools.yang.parser.spi.IdentityNamespace;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.TypeUtils;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.BaseEffectiveStatementImpl;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
final StmtContext<String, IdentityRefSpecification, EffectiveStatement<String, IdentityRefSpecification>> ctx) {
super(ctx);
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(QNAME);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(QNAME);
final BaseEffectiveStatementImpl base = firstEffective(BaseEffectiveStatementImpl.class);
if (base != null) {
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
abstract class IntegerEffectiveImplBase extends
super(ctx);
this.qName = QName.create(YangConstants.RFC6020_YANG_MODULE, localName);
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
final String rangeDescription = "Integer values between " + minRange + " and " + maxRange + ", inclusively.";
final RangeConstraint defaultRange = new RangeConstraintEffectiveImpl(minRange, maxRange,
import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.Leafref;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PathEffectiveStatementImpl;
public LeafrefSpecificationEffectiveStatementImpl(final StmtContext<String, LeafrefSpecification, EffectiveStatement<String, LeafrefSpecification>> ctx) {
super(ctx);
- path = Utils.getSchemaPath(ctx.getParentContext()).createChild(QNAME);
+ path = ctx.getParentContext().getSchemaPath().get().createChild(QNAME);
for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
if (effectiveStatement instanceof PathEffectiveStatementImpl) {
import org.opendaylight.yangtools.yang.model.api.type.RangeConstraint;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
abstract class UnsignedIntegerEffectiveImplBase extends
super(ctx);
this.qName = QName.create(YangConstants.RFC6020_YANG_MODULE, localName);
- path = Utils.getSchemaPath(ctx);
+ path = ctx.getSchemaPath().get();
final String rangeDescription = "Integer values between " + MIN_RANGE + " and " + maxRange + ", inclusively.";
final RangeConstraint defaultRange = new RangeConstraintEffectiveImpl(MIN_RANGE, maxRange,