import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
import com.google.common.base.Verify;
-import java.util.Objects;
+import com.google.common.collect.ImmutableList;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.rfc8040.model.api.YangDataEffectiveStatement;
import org.opendaylight.yangtools.rfc8040.model.api.YangDataSchemaNode;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.UnknownEffectiveStatementBase;
-import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
+import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContextUtils;
@Beta
private final @NonNull QName maybeQNameArgument;
private final @NonNull ContainerEffectiveStatement container;
- YangDataEffectiveStatementImpl(final StmtContext<String, YangDataStatement, ?> ctx) {
- super(ctx);
+ YangDataEffectiveStatementImpl(final Current<String, YangDataStatement> stmt,
+ final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
+ super(stmt, substatements);
QName maybeQNameArgumentInit;
try {
- maybeQNameArgumentInit = StmtContextUtils.parseIdentifier(ctx, argument());
+ maybeQNameArgumentInit = StmtContextUtils.parseIdentifier(stmt.caerbannog(), argument());
} catch (IllegalArgumentException e) {
maybeQNameArgumentInit = getNodeType();
}
this.maybeQNameArgument = maybeQNameArgumentInit;
- path = ctx.coerceParentContext().getSchemaPath().get().createChild(maybeQNameArgument);
+ path = stmt.getParent().getSchemaPath().createChild(maybeQNameArgument);
container = findFirstEffectiveSubstatement(ContainerEffectiveStatement.class).get();
// TODO: this is strong binding of two API contracts. Unfortunately ContainerEffectiveStatement design is
}
@Override
- public @NonNull SchemaPath getPath() {
+ @Deprecated
+ public SchemaPath getPath() {
return path;
}
}
@Override
- public @NonNull ContainerSchemaNode getContainerSchemaNode() {
+ public ContainerSchemaNode getContainerSchemaNode() {
// Verified in the constructor
return (ContainerSchemaNode) container;
}
@Override
- public int hashCode() {
- return Objects.hash(maybeQNameArgument, path);
- }
-
- @Override
- public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
-
- if (!(obj instanceof YangDataEffectiveStatementImpl)) {
- return false;
- }
-
- final YangDataEffectiveStatementImpl other = (YangDataEffectiveStatementImpl) obj;
- return Objects.equals(maybeQNameArgument, other.maybeQNameArgument) && Objects.equals(path, other.path);
+ public YangDataEffectiveStatement asEffectiveStatement() {
+ return this;
}
@Override