BUG-6316: Fix Bit and EnumPair's position/value types
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / type / BitEffectiveStatementImpl.java
index a471895f924de7d937af48392c2a89dd4e00291e..381a3ed16104bf127f07b24f03009a2d201f57d8 100644 (file)
@@ -13,76 +13,54 @@ import java.util.List;
 import java.util.Objects;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.Status;
 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.BitStatement;
 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.Utils;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.DescriptionEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.EffectiveStatementBase;
+import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.AbstractEffectiveDocumentedNode;
 import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.PositionEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.ReferenceEffectiveStatementImpl;
-import org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective.StatusEffectiveStatementImpl;
 
-public class BitEffectiveStatementImpl extends EffectiveStatementBase<QName, BitStatement> implements
-        BitsTypeDefinition.Bit {
+public class BitEffectiveStatementImpl extends AbstractEffectiveDocumentedNode<QName, BitStatement> {
 
     private final QName qName;
     private final SchemaPath schemaPath;
-    private Long position;
-    private String description;
-    private String reference;
-    private Status status;
+    private final Long declaredPosition;
     private final List<UnknownSchemaNode> unknownSchemaNodes;
 
     public BitEffectiveStatementImpl(final StmtContext<QName, BitStatement, ?> ctx) {
         super(ctx);
 
-        List<UnknownSchemaNode> unknownSchemaNodesInit = new ArrayList<>();
-
         qName = ctx.getStatementArgument();
-        schemaPath = Utils.getSchemaPath(ctx);
+        schemaPath = ctx.getSchemaPath().get();
 
+        final List<UnknownSchemaNode> unknownSchemaNodesInit = new ArrayList<>();
+        Long declaredPositionInit = null;
         for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
-            if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) {
-                description = ((DescriptionEffectiveStatementImpl) effectiveStatement).argument();
-            }
-            if (effectiveStatement instanceof ReferenceEffectiveStatementImpl) {
-                reference = ((ReferenceEffectiveStatementImpl) effectiveStatement).argument();
-            }
-            if (effectiveStatement instanceof StatusEffectiveStatementImpl) {
-                status = ((StatusEffectiveStatementImpl) effectiveStatement).argument();
-            }
             if (effectiveStatement instanceof PositionEffectiveStatementImpl) {
-                position = ((PositionEffectiveStatementImpl) effectiveStatement).argument();
+                declaredPositionInit = ((PositionEffectiveStatementImpl) effectiveStatement).argument();
             }
-
             if (effectiveStatement instanceof UnknownSchemaNode) {
                 unknownSchemaNodesInit.add((UnknownSchemaNode) effectiveStatement);
             }
         }
 
+        declaredPosition = declaredPositionInit;
         unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodesInit);
     }
 
-    @Override
-    public Long getPosition() {
-        return position;
+    public Long getDeclaredPosition() {
+        return declaredPosition;
     }
 
-    @Override
     public String getName() {
         return qName.getLocalName();
     }
 
-    @Override
     public QName getQName() {
         return qName;
     }
 
-    @Override
     public SchemaPath getPath() {
         return schemaPath;
     }
@@ -92,28 +70,13 @@ public class BitEffectiveStatementImpl extends EffectiveStatementBase<QName, Bit
         return unknownSchemaNodes;
     }
 
-    @Override
-    public String getDescription() {
-        return description;
-    }
-
-    @Override
-    public String getReference() {
-        return reference;
-    }
-
-    @Override
-    public Status getStatus() {
-        return status;
-    }
-
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
         result = prime * result + qName.hashCode();
         result = prime * result + schemaPath.hashCode();
-        result = prime * result + Objects.hashCode(position);
+        result = prime * result + Objects.hashCode(declaredPosition);
         result = prime * result + Objects.hashCode(unknownSchemaNodes);
         return result;
     }
@@ -129,13 +92,13 @@ public class BitEffectiveStatementImpl extends EffectiveStatementBase<QName, Bit
         if (getClass() != obj.getClass()) {
             return false;
         }
-        BitsTypeDefinition.Bit other = (BitsTypeDefinition.Bit) obj;
+        final BitsTypeDefinition.Bit other = (BitsTypeDefinition.Bit) obj;
         return Objects.equals(qName, other.getQName()) && Objects.equals(schemaPath, other.getPath());
     }
 
     @Override
     public String toString() {
         return BitEffectiveStatementImpl.class.getSimpleName() + "[name=" + qName.getLocalName() + ", position="
-                + position + "]";
+                + declaredPosition + "]";
     }
 }