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%2FExtensionEffectiveStatementImpl.java;h=da4a2a92ec937e6e6c2fbec70fa2ef3b46a6f283;hb=82af449e4ef07d80490e79484d0402b81009541e;hp=df925dd16be2925411d66cb98f08d3495158b9d8;hpb=aa15d5b495394588969fca0aef43e801ce5d8086;p=yangtools.git diff --git a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java index df925dd16b..da4a2a92ec 100644 --- a/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java +++ b/yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/effective/ExtensionEffectiveStatementImpl.java @@ -7,72 +7,65 @@ */ package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective; -import java.util.Collection; -import java.util.LinkedList; -import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils; -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 com.google.common.collect.ImmutableList; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; +import java.util.Objects; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition; import org.opendaylight.yangtools.yang.model.api.SchemaPath; import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode; +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; -public class ExtensionEffectiveStatementImpl extends - AbstractEffectiveDocumentedNode implements - ExtensionDefinition { +public class ExtensionEffectiveStatementImpl extends AbstractEffectiveDocumentedNode + implements ExtensionDefinition { private final QName qname; - String argument; + private final String argument; private final SchemaPath schemaPath; - ImmutableList unknownNodes; - boolean yin; + private List unknownNodes; + private final boolean yin; public ExtensionEffectiveStatementImpl( - StmtContext> ctx) { - super(ctx); - + final StmtContext> ctx) { + super(ctx, false); this.qname = ctx.getStatementArgument(); - this.schemaPath = Utils.getSchemaPath(ctx); - - initSubstatementCollections(); - initFields(); - - } - - private void initFields() { + this.schemaPath = ctx.getSchemaPath().get(); + // initFields ArgumentEffectiveStatementImpl argumentSubstatement = firstEffective(ArgumentEffectiveStatementImpl.class); - if (argumentSubstatement != null) { this.argument = argumentSubstatement.argument().getLocalName(); - } - - YinElementEffectiveStatementImpl yinElement = firstEffective(YinElementEffectiveStatementImpl.class); - if (yinElement != null) { - this.yin = yinElement.argument(); + YinElementEffectiveStatementImpl yinElement = argumentSubstatement + .firstEffective(YinElementEffectiveStatementImpl.class); + if (yinElement != null) { + this.yin = yinElement.argument(); + } else { + this.yin = false; + } } else { - yin = false; + this.argument = null; + this.yin = false; } - } - private void initSubstatementCollections() { - Collection> effectiveSubstatements = effectiveSubstatements(); - - LinkedList unknownNodes = new LinkedList(); + void initUnknownSchemaNodes() { + if (unknownNodes != null) { + return; + } - for (EffectiveStatement effectiveStatement : effectiveSubstatements) { - if (effectiveStatement instanceof UnknownSchemaNode) { - UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + Collection> buildedUnknownNodes = getOmittedUnknownSubstatements(); + List unknownNodesInit = new ArrayList<>(); + for (EffectiveStatement unknownNode : buildedUnknownNodes) { + if (unknownNode instanceof UnknownSchemaNode) { + unknownNodesInit.add((UnknownSchemaNode) unknownNode); } } - - this.unknownNodes = ImmutableList.copyOf(unknownNodes); + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); } @Override @@ -87,6 +80,9 @@ public class ExtensionEffectiveStatementImpl extends @Override public List getUnknownSchemaNodes() { + if (unknownNodes == null) { + initUnknownSchemaNodes(); + } return unknownNodes; } @@ -104,9 +100,8 @@ public class ExtensionEffectiveStatementImpl extends public int hashCode() { final int prime = 31; int result = 1; - result = prime * result + ((qname == null) ? 0 : qname.hashCode()); - result = prime * result - + ((schemaPath == null) ? 0 : schemaPath.hashCode()); + result = prime * result + Objects.hashCode(qname); + result = prime * result + Objects.hashCode(schemaPath); return result; } @@ -122,34 +117,17 @@ public class ExtensionEffectiveStatementImpl extends return false; } ExtensionEffectiveStatementImpl other = (ExtensionEffectiveStatementImpl) obj; - if (qname == null) { - if (other.qname != null) { - return false; - } - } else if (!qname.equals(other.qname)) { - return false; - } - if (schemaPath == null) { - if (other.schemaPath != null) { - return false; - } - } else if (!schemaPath.equals(other.schemaPath)) { - return false; - } - return true; + return Objects.equals(qname, other.qname) && Objects.equals(schemaPath, other.schemaPath); } @Override public String toString() { - StringBuilder sb = new StringBuilder( - ExtensionEffectiveStatementImpl.class.getSimpleName()); - sb.append("["); - sb.append("argument=").append(argument); - sb.append(", qname=").append(qname); - sb.append(", schemaPath=").append(schemaPath); - sb.append(", extensionSchemaNodes=").append(unknownNodes); - sb.append(", yin=").append(yin); - sb.append("]"); - return sb.toString(); + return ExtensionEffectiveStatementImpl.class.getSimpleName() + "[" + + "argument=" + argument + + ", qname=" + qname + + ", schemaPath=" + schemaPath + + ", extensionSchemaNodes=" + unknownNodes + + ", yin=" + yin + + "]"; } -} \ No newline at end of file +}