Make DecimalTypeDefinition.getFractionDigits() return int
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / stmt / rfc6020 / effective / MustEffectiveStatementImpl.java
index bbb7437c236f3df0693f975cd3fb6c641c75be25..b03f416be22db456aef13a6a14cc8658e3e2a5ce 100644 (file)
@@ -8,80 +8,68 @@
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
 
 import java.util.Objects;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.model.api.MustDefinition;
 import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
 
-public class MustEffectiveStatementImpl extends
-        EffectiveStatementBase<RevisionAwareXPath, MustStatement> implements
-        MustDefinition {
+public class MustEffectiveStatementImpl extends DeclaredEffectiveStatementBase<RevisionAwareXPath, MustStatement>
+        implements MustDefinition {
 
-    private RevisionAwareXPath xPath;
-    private String description;
-    private String errorAppTag;
-    private String errorMessage;
-    private String reference;
+    private final RevisionAwareXPath xpath;
+    private final String description;
+    private final String errorAppTag;
+    private final String errorMessage;
+    private final String reference;
 
-    public MustEffectiveStatementImpl(
-            StmtContext<RevisionAwareXPath, MustStatement, ?> ctx) {
+    public MustEffectiveStatementImpl(final StmtContext<RevisionAwareXPath, MustStatement, ?> ctx) {
         super(ctx);
+        this.xpath = ctx.getStatementArgument();
 
-        initFields();
+        DescriptionEffectiveStatementImpl descriptionStmt = firstEffective(DescriptionEffectiveStatementImpl.class);
+        this.description = descriptionStmt == null ? null : descriptionStmt.argument();
 
-        xPath = ctx.getStatementArgument();
-    }
+        ErrorAppTagEffectiveStatementImpl errorAppTagStmt = firstEffective(ErrorAppTagEffectiveStatementImpl.class);
+        this.errorAppTag = errorAppTagStmt == null ? null : errorAppTagStmt.argument();
 
-    private void initFields() {
-
-        for (final EffectiveStatement<?, ?> effectiveStatement : effectiveSubstatements()) {
-
-            if (effectiveStatement instanceof DescriptionEffectiveStatementImpl) {
-                description = ((DescriptionEffectiveStatementImpl) effectiveStatement).argument();
-            }
-            if (effectiveStatement instanceof ErrorAppTagEffectiveStatementImpl) {
-                errorAppTag = ((ErrorAppTagEffectiveStatementImpl) effectiveStatement).argument();
-            }
-            if (effectiveStatement instanceof ErrorMessageEffectiveStatementImpl) {
-                errorMessage = ((ErrorMessageEffectiveStatementImpl) effectiveStatement).argument();
-            }
-            if (effectiveStatement instanceof ReferenceEffectiveStatementImpl) {
-                reference = ((ReferenceEffectiveStatementImpl) effectiveStatement).argument();
-            }
-        }
+        ErrorMessageEffectiveStatementImpl errorMessageStmt = firstEffective(ErrorMessageEffectiveStatementImpl.class);
+        this.errorMessage = errorMessageStmt == null ? null : errorMessageStmt.argument();
+
+        ReferenceEffectiveStatementImpl referenceStmt = firstEffective(ReferenceEffectiveStatementImpl.class);
+        this.reference = referenceStmt == null ? null : referenceStmt.argument();
     }
 
     @Override
     public RevisionAwareXPath getXpath() {
-        return xPath;
+        return xpath;
     }
 
     @Override
-    public String getDescription() {
-        return description;
+    public Optional<String> getDescription() {
+        return Optional.ofNullable(description);
     }
 
     @Override
-    public String getErrorAppTag() {
-        return errorAppTag;
+    public Optional<String> getErrorAppTag() {
+        return Optional.ofNullable(errorAppTag);
     }
 
     @Override
-    public String getErrorMessage() {
-        return errorMessage;
+    public Optional<String> getErrorMessage() {
+        return Optional.ofNullable(errorMessage);
     }
 
     @Override
-    public String getReference() {
-        return reference;
+    public Optional<String> getReference() {
+        return Optional.ofNullable(reference);
     }
 
     @Override
     public int hashCode() {
         final int prime = 31;
         int result = 1;
-        result = prime * result + Objects.hashCode(xPath);
+        result = prime * result + Objects.hashCode(xpath);
         result = prime * result + Objects.hashCode(description);
         result = prime * result + Objects.hashCode(reference);
         return result;
@@ -99,25 +87,13 @@ public class MustEffectiveStatementImpl extends
             return false;
         }
         final MustEffectiveStatementImpl other = (MustEffectiveStatementImpl) obj;
-        if (xPath == null) {
-            if (other.xPath != null) {
-                return false;
-            }
-        } else if (!xPath.equals(other.xPath)) {
+        if (!Objects.equals(xpath, other.xpath)) {
             return false;
         }
-        if (description == null) {
-            if (other.description != null) {
-                return false;
-            }
-        } else if (!description.equals(other.description)) {
+        if (!Objects.equals(description, other.description)) {
             return false;
         }
-        if (reference == null) {
-            if (other.reference != null) {
-                return false;
-            }
-        } else if (!reference.equals(other.reference)) {
+        if (!Objects.equals(reference, other.reference)) {
             return false;
         }
         return true;
@@ -125,6 +101,6 @@ public class MustEffectiveStatementImpl extends
 
     @Override
     public String toString() {
-        return xPath.toString();
+        return xpath.toString();
     }
 }