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;
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;
@Override
public String toString() {
- return xPath.toString();
+ return xpath.toString();
}
}