X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-api%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fmodel%2Fparser%2Fapi%2FYangParserConfiguration.java;h=a602a821fe72d68ec8b030bb4cfeeba0d2d3ec65;hb=d605800fa3da3ea340497c683bd83ea37c12da6c;hp=7040ab16fd6d414113033b020089308e5a140beb;hpb=306e07d63da1d140511c4ab3adf64eb765b1671a;p=yangtools.git diff --git a/yang/yang-parser-api/src/main/java/org/opendaylight/yangtools/yang/model/parser/api/YangParserConfiguration.java b/yang/yang-parser-api/src/main/java/org/opendaylight/yangtools/yang/model/parser/api/YangParserConfiguration.java index 7040ab16fd..a602a821fe 100644 --- a/yang/yang-parser-api/src/main/java/org/opendaylight/yangtools/yang/model/parser/api/YangParserConfiguration.java +++ b/yang/yang-parser-api/src/main/java/org/opendaylight/yangtools/yang/model/parser/api/YangParserConfiguration.java @@ -10,7 +10,10 @@ package org.opendaylight.yangtools.yang.model.parser.api; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; +import com.google.common.base.MoreObjects; +import java.util.Objects; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; @@ -20,24 +23,59 @@ import org.opendaylight.yangtools.yang.model.repo.api.StatementParserMode; @Beta @NonNullByDefault public final class YangParserConfiguration implements Immutable { - public static final YangParserConfiguration DEFAULT = new YangParserConfiguration(StatementParserMode.DEFAULT_MODE); + /** + * System-wide default configuration. + */ + public static final YangParserConfiguration DEFAULT = builder().build(); private final StatementParserMode parserMode; + private final boolean retainDeclarationReferences; - private YangParserConfiguration(final StatementParserMode parserMode) { + private YangParserConfiguration(final StatementParserMode parserMode, final boolean retainDeclarationReferences) { this.parserMode = requireNonNull(parserMode); + this.retainDeclarationReferences = retainDeclarationReferences; } public StatementParserMode parserMode() { return parserMode; } + public boolean retainDeclarationReferences() { + return retainDeclarationReferences; + } + + @Override + public int hashCode() { + return Objects.hash(parserMode, retainDeclarationReferences); + } + + @Override + public boolean equals(final @Nullable Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof YangParserConfiguration)) { + return false; + } + final YangParserConfiguration other = (YangParserConfiguration) obj; + return parserMode == other.parserMode && retainDeclarationReferences == other.retainDeclarationReferences; + } + + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("parserMode", parserMode) + .add("retainDeclarationReferences", retainDeclarationReferences) + .toString(); + } + public static Builder builder() { return new Builder(); } public static final class Builder implements org.opendaylight.yangtools.concepts.Builder { private StatementParserMode parserMode = StatementParserMode.DEFAULT_MODE; + private boolean retainDeclarationReferences = false; private Builder() { // Hidden on purpose @@ -45,11 +83,16 @@ public final class YangParserConfiguration implements Immutable { @Override public YangParserConfiguration build() { - return new YangParserConfiguration(parserMode); + return new YangParserConfiguration(parserMode, retainDeclarationReferences); + } + + public Builder parserMode(final StatementParserMode newParserMode) { + this.parserMode = requireNonNull(newParserMode); + return this; } - public Builder setParserMode(final StatementParserMode parserMode) { - this.parserMode = requireNonNull(parserMode); + public Builder retainDeclarationReferences(final boolean newRetainDeclarationReferences) { + this.retainDeclarationReferences = newRetainDeclarationReferences; return this; } }