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=fd9623b0bc3f0c59a7f06a387e2f9e7ae3922f42;hb=91f43b1ce6453fef9e04e6673e7637fb5dba8b38;hp=cdea92063311b54a3887f85ff1f3598923c6e242;hpb=be1171fbcc4469bd090366052f96a2ae08ffac25;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 cdea920633..fd9623b0bc 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,71 +7,57 @@ */ 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.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 final List unknownNodes; + private final boolean yin; public ExtensionEffectiveStatementImpl( - StmtContext> ctx) { + final StmtContext> ctx) { super(ctx); - this.qname = ctx.getStatementArgument(); - this.schemaPath = Utils.getSchemaPath(ctx); + this.schemaPath = ctx.getSchemaPath().get(); - initSubstatementCollections(); - initFields(); - - } - - private void initFields() { + final List unknownNodesInit = new ArrayList<>(); + for (EffectiveStatement unknownNode : effectiveSubstatements()) { + if (unknownNode instanceof UnknownSchemaNode) { + unknownNodesInit.add((UnknownSchemaNode) unknownNode); + } + } + this.unknownNodes = ImmutableList.copyOf(unknownNodesInit); + // 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(); - } else - yin = false; - - } - - private void initSubstatementCollections() { - Collection> effectiveSubstatements = effectiveSubstatements(); - - LinkedList unknownNodes = new LinkedList(); - - for (EffectiveStatement effectiveStatement : effectiveSubstatements) { - if (effectiveStatement instanceof UnknownSchemaNode) { - UnknownSchemaNode unknownNode = (UnknownSchemaNode) effectiveStatement; - unknownNodes.add(unknownNode); + YinElementEffectiveStatementImpl yinElement = argumentSubstatement + .firstEffective(YinElementEffectiveStatementImpl.class); + if (yinElement != null) { + this.yin = yinElement.argument(); + } else { + this.yin = false; } + } else { + this.argument = null; + this.yin = false; } - - this.unknownNodes = ImmutableList.copyOf(unknownNodes); } @Override @@ -103,9 +89,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; } @@ -121,34 +106,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 +}