X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fstmt%2Frfc6020%2Feffective%2FDeviationEffectiveStatementImpl.java;h=b66abf8c67bd7aa3fdd00c3bd819fa05b4fed7f4;hb=refs%2Fchanges%2F18%2F35918%2F2;hp=66a19f22ab3504e883ed27da28a451c5b9256e46;hpb=3d283ec6184505ad5e7eefb173044ff383222e9f;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeviationEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeviationEffectiveStatementImpl.java index 66a19f22ab..b66abf8c67 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeviationEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/DeviationEffectiveStatementImpl.java @@ -7,9 +7,10 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; -import java.util.LinkedList; +import com.google.common.collect.ImmutableList; +import java.util.ArrayList; import java.util.List; - +import java.util.Objects; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.api.Deviation; import org.opendaylight.yangtools.yang.model.api.SchemaPath; @@ -19,36 +20,29 @@ import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement; import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; -import com.google.common.collect.ImmutableList; - -public class DeviationEffectiveStatementImpl extends EffectiveStatementBase +public class DeviationEffectiveStatementImpl extends DeclaredEffectiveStatementBase implements Deviation, Immutable { + private final SchemaPath targetPath; + private final Deviate deviate; + private final String reference; + private final List unknownSchemaNodes; - private SchemaPath targetPath; - private Deviate deviate; - private String reference; - private ImmutableList unknownSchemaNodes; - - public DeviationEffectiveStatementImpl(StmtContext ctx) { + public DeviationEffectiveStatementImpl(final StmtContext ctx) { super(ctx); + this.targetPath = ctx.getStatementArgument().asSchemaPath(); - List unknownSchemaNodesInit = new LinkedList<>(); + DeviateEffectiveStatementImpl deviateStmt = firstEffective(DeviateEffectiveStatementImpl.class); + this.deviate = (deviateStmt == null) ? null : deviateStmt.argument(); - targetPath = SchemaPath.create(ctx.getStatementArgument().getPathFromRoot(), ctx.getStatementArgument() - .isAbsolute()); + ReferenceEffectiveStatementImpl referenceStmt = firstEffective(ReferenceEffectiveStatementImpl.class); + this.reference = (referenceStmt == null) ? null : referenceStmt.argument(); + List unknownSchemaNodesInit = new ArrayList<>(); for (final EffectiveStatement effectiveStatement : effectiveSubstatements()) { - if (effectiveStatement instanceof DeviateEffectiveStatementImpl) { - deviate = ((DeviateEffectiveStatementImpl) effectiveStatement).argument(); - } - if (effectiveStatement instanceof ReferenceEffectiveStatementImpl) { - reference = ((ReferenceEffectiveStatementImpl) effectiveStatement).argument(); - } if (effectiveStatement instanceof UnknownSchemaNode) { unknownSchemaNodesInit.add((UnknownSchemaNode) effectiveStatement); } } - unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodesInit); } @@ -76,14 +70,14 @@ public class DeviationEffectiveStatementImpl extends EffectiveStatementBase