Bug 4412: New yang parser effective statements cleanup
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / CaseShorthandImpl.java
index 54d927f617b657cb5f4d717a348381d10d7cc6a1..ce54d65427ca47f3ccf9521e09e5a714ed4d4129 100644 (file)
@@ -7,56 +7,46 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
-import com.google.common.collect.ImmutableList;
 import com.google.common.base.Optional;
-import org.opendaylight.yangtools.yang.model.api.SchemaNode;
-import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
-import com.google.common.collect.Iterables;
-import java.util.Collections;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
 import java.util.Arrays;
-import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
-import org.opendaylight.yangtools.yang.model.api.Status;
-import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UsesNode;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
 public class CaseShorthandImpl implements ChoiceCaseNode, DerivableSchemaNode {
 
     private final DataSchemaNode caseShorthandNode;
     private final QName qName;
     private final SchemaPath path;
-
     private final String description;
     private final String reference;
     private final Status status;
-
     private final boolean augmenting;
     private final boolean addedByUses;
-    ConstraintDefinition constraints;
-    private ChoiceCaseNode original;
-
-    ImmutableList<UnknownSchemaNode> unknownNodes;
+    private final ConstraintDefinition constraints;
+    private final List<UnknownSchemaNode> unknownNodes;
 
-    public CaseShorthandImpl(DataSchemaNode caseShorthandNode) {
+    public CaseShorthandImpl(final DataSchemaNode caseShorthandNode) {
         this.caseShorthandNode = caseShorthandNode;
         this.qName = caseShorthandNode.getQName();
-
-        SchemaPath caseShorthandNodePath = caseShorthandNode.getPath();
-        Iterable<QName> pathFromRoot = caseShorthandNodePath.getPathFromRoot();
-        this.path = SchemaPath
-                .create(Iterables.limit(pathFromRoot,
-                        Iterables.size(pathFromRoot) - 1),
-                        caseShorthandNodePath.isAbsolute());
-
+        this.path = Preconditions.checkNotNull(caseShorthandNode.getPath().getParent());
         this.description = caseShorthandNode.getDescription();
         this.reference = caseShorthandNode.getReference();
         this.status = caseShorthandNode.getStatus();
@@ -133,7 +123,7 @@ public class CaseShorthandImpl implements ChoiceCaseNode, DerivableSchemaNode {
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(QName name) {
+    public DataSchemaNode getDataChildByName(final QName name) {
         if (qName.equals(name)) {
             return caseShorthandNode;
         } else {
@@ -142,7 +132,7 @@ public class CaseShorthandImpl implements ChoiceCaseNode, DerivableSchemaNode {
     }
 
     @Override
-    public DataSchemaNode getDataChildByName(String name) {
+    public DataSchemaNode getDataChildByName(final String name) {
         if (qName.getLocalName().equals(name)) {
             return caseShorthandNode;
         } else {
@@ -162,15 +152,15 @@ public class CaseShorthandImpl implements ChoiceCaseNode, DerivableSchemaNode {
 
     @Override
     public Optional<? extends SchemaNode> getOriginal() {
-        return Optional.fromNullable(original);
+        return Optional.absent();
     }
 
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + ((qName == null) ? 0 : qName.hashCode());
-        result = prime * result + ((path == null) ? 0 : path.hashCode());
+        result = prime * result + Objects.hashCode(qName);
+        result = prime * result + Objects.hashCode(path);
         return result;
     }
 
@@ -186,32 +176,16 @@ public class CaseShorthandImpl implements ChoiceCaseNode, DerivableSchemaNode {
             return false;
         }
         CaseShorthandImpl other = (CaseShorthandImpl) obj;
-        if (qName == null) {
-            if (other.qName != null) {
-                return false;
-            }
-        } else if (!qName.equals(other.qName)) {
-            return false;
-        }
-        if (path == null) {
-            if (other.path != null) {
-                return false;
-            }
-        } else if (!path.equals(other.path)) {
-            return false;
-        }
-        return true;
+        return Objects.equals(qName, other.qName) && Objects.equals(path, other.path);
     }
 
     @Override
     public String toString() {
-        StringBuilder sb = new StringBuilder(
-                CaseShorthandImpl.class.getSimpleName());
+        StringBuilder sb = new StringBuilder(CaseShorthandImpl.class.getSimpleName());
         sb.append("[");
         sb.append("qname=");
         sb.append(qName);
         sb.append("]");
         return sb.toString();
     }
-
-}
\ No newline at end of file
+}