import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
+/**
+ * @deprecated use {@link org.opendaylight.yangtools.yang.model.util.type.EnumPairBuilder} instead.
+ */
+@Deprecated
public final class EnumPairImpl implements EnumPair, Immutable {
private final List<UnknownSchemaNode> unknownSchemaNodes;
private final String description;
private final Integer value;
private final String name;
- /**
- * @deprecated Use the constructor without a SchemaPath
- */
- @Deprecated
public EnumPairImpl(final String name, final Integer value, final SchemaPath path, final String description,
final String reference, final Status status, final Collection<UnknownSchemaNode> unknownSchemaNodes) {
this(name, value, description, reference, status, unknownSchemaNodes);
--- /dev/null
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.util.type;
+
+import com.google.common.annotations.Beta;
+import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
+import java.util.Collection;
+import java.util.List;
+import org.opendaylight.yangtools.concepts.Builder;
+import org.opendaylight.yangtools.concepts.Mutable;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
+
+/**
+ * Utility builder for {@link EnumPair} instances.
+ *
+ * @author Robert Varga
+ */
+@Beta
+public final class EnumPairBuilder implements Builder<EnumPair>, Mutable {
+ private final String name;
+ private final Integer value;
+
+ private List<UnknownSchemaNode> unknownSchemaNodes = ImmutableList.of();
+ private Status status = Status.CURRENT;
+ private String description;
+ private String reference;
+
+ private EnumPairBuilder(final String name, final Integer value) {
+ this.name = Preconditions.checkNotNull(name);
+ this.value = Preconditions.checkNotNull(value);
+ }
+
+ public static EnumPairBuilder create(final String name, final Integer value) {
+ return new EnumPairBuilder(name, value);
+ }
+
+ public EnumPairBuilder setDescription(final String description) {
+ this.description = description;
+ return this;
+ }
+
+ public EnumPairBuilder setReference(final String reference) {
+ this.reference = reference;
+ return this;
+ }
+
+ public EnumPairBuilder setStatus(final Status status) {
+ this.status = Preconditions.checkNotNull(status);
+ return this;
+ }
+
+ public EnumPairBuilder setUnknownSchemaNodes(final Collection<UnknownSchemaNode> unknownSchemaNodes) {
+ this.unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodes);
+ return this;
+ }
+
+ public EnumPairBuilder setUnknownSchemaNodes(final UnknownSchemaNode... unknownSchemaNodes) {
+ this.unknownSchemaNodes = ImmutableList.copyOf(unknownSchemaNodes);
+ return this;
+ }
+
+ @Override
+ public EnumPair build() {
+ return new EnumPairImpl(name, value, description, reference, status, unknownSchemaNodes);
+ }
+
+}
--- /dev/null
+/*
+ * Copyright (c) 2015 Pantheon Technologies s.r.o. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.util.type;
+
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+import java.util.List;
+import java.util.Objects;
+import org.opendaylight.yangtools.concepts.Immutable;
+import org.opendaylight.yangtools.yang.model.api.Status;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
+
+final class EnumPairImpl implements EnumPair, Immutable {
+ private final List<UnknownSchemaNode> unknownSchemaNodes;
+ private final String description;
+ private final String reference;
+ private final Status status;
+ private final Integer value;
+ private final String name;
+
+ EnumPairImpl(final String name, final Integer value, final String description, final String reference,
+ final Status status, final List<UnknownSchemaNode> unknownSchemaNodes) {
+ this.value = Preconditions.checkNotNull(value);
+ this.name = Preconditions.checkNotNull(name);
+ this.description = description;
+ this.reference = reference;
+ this.status = Preconditions.checkNotNull(status);
+ this.unknownSchemaNodes = Preconditions.checkNotNull(unknownSchemaNodes);
+ }
+
+ @Override
+ public List<UnknownSchemaNode> getUnknownSchemaNodes() {
+ return unknownSchemaNodes;
+ }
+
+ @Override
+ public String getDescription() {
+ return description;
+ }
+
+ @Override
+ public String getReference() {
+ return reference;
+ }
+
+ @Override
+ public Status getStatus() {
+ return status;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public Integer getValue() {
+ return value;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + unknownSchemaNodes.hashCode();
+ result = prime * result + name.hashCode();
+ result = prime * result + value.hashCode();
+ return result;
+ }
+
+ @Override
+ public boolean equals(final Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (!(obj instanceof EnumPair)) {
+ return false;
+ }
+ EnumPair other = (EnumPair) obj;
+ if (!Objects.equals(name, other.getName())) {
+ return false;
+ }
+
+ return Objects.equals(value, other.getValue()) &&
+ Objects.equals(unknownSchemaNodes, other.getUnknownSchemaNodes());
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this).add("name", name).add("value", value).toString();
+ }
+}
import static org.mockito.Mockito.mock;
import com.google.common.base.Optional;
import java.util.ArrayList;
-import java.util.Collection;
import org.junit.Test;
import org.opendaylight.yangtools.concepts.Builder;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
import org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
import org.opendaylight.yangtools.yang.model.util.BaseConstraints;
import org.opendaylight.yangtools.yang.model.util.BitImpl;
-import org.opendaylight.yangtools.yang.model.util.EnumPairImpl;
import org.opendaylight.yangtools.yang.model.util.RevisionAwareXPathImpl;
import org.opendaylight.yangtools.yang.model.util.UnresolvedNumber;
final UnresolvedNumber max = UnresolvedNumber.max();
final LengthConstraint lengthConstraint = BaseConstraints.newLengthConstraint(min, max, absent, absent);
final RangeConstraint rangeConstraint= BaseConstraints.newRangeConstraint(min, max, absent, absent);
- final UnknownSchemaNode UNKNOWN_SCHEMA_NODE= mock(UnknownSchemaNode.class);
- final Collection<UnknownSchemaNode> collection = new ArrayList<>(1);
- collection.add(UNKNOWN_SCHEMA_NODE);
- final EnumPairImpl enumPair = new EnumPairImpl("enum1", 1, "description", "reference",
- Status.CURRENT, collection);
+
+ final EnumPair enumPair = EnumPairBuilder.create("enum1", 1).setDescription("description")
+ .setReference("reference").setUnknownSchemaNodes(mock(UnknownSchemaNode.class)).build();
final InvalidLengthConstraintException invalidLengthConstraintException = new InvalidLengthConstraintException(
lengthConstraint, "error msg", "other important messages");
@Test(expected = InvalidEnumDefinitionException.class)
public void invalidEnumDefinitionExceptionTest() {
final UnknownSchemaNode UNKNOWN_SCHEMA_NODE= mock(UnknownSchemaNode.class);
- final Collection<UnknownSchemaNode> collection = new ArrayList<>(1);
- collection.add(UNKNOWN_SCHEMA_NODE);
- final EnumPairImpl enumPair1 = new EnumPairImpl("enum1", 1, "description", "reference",
- Status.CURRENT, collection);
- final EnumPairImpl enumPair2 = new EnumPairImpl("enum", 1, "description", "reference",
- Status.CURRENT, collection);
+ final EnumPair enumPair1 = EnumPairBuilder.create("enum1", 1).setDescription("description")
+ .setReference("reference").setUnknownSchemaNodes(UNKNOWN_SCHEMA_NODE).build();
+ final EnumPair enumPair2 = EnumPairBuilder.create("enum", 1).setDescription("description")
+ .setReference("reference").setUnknownSchemaNodes(UNKNOWN_SCHEMA_NODE).build();
final EnumerationTypeBuilder enumerationTypeBuilder = BaseTypes.enumerationTypeBuilder(SCHEMA_PATH);
enumerationTypeBuilder.addEnum(enumPair1);
enumerationTypeBuilder.addEnum(enumPair2);
import org.opendaylight.yangtools.yang.model.api.stmt.TypeStatement.EnumSpecification;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
-import org.opendaylight.yangtools.yang.model.util.EnumPairImpl;
import org.opendaylight.yangtools.yang.model.util.type.BaseTypes;
+import org.opendaylight.yangtools.yang.model.util.type.EnumPairBuilder;
import org.opendaylight.yangtools.yang.model.util.type.EnumerationTypeBuilder;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
"Enum '%s' must have a value statement", p);
}
- p = new EnumPairImpl(p.getName(), newValue, p.getDescription(), p.getReference(), p.getStatus(),
- p.getUnknownSchemaNodes());
+ p = EnumPairBuilder.create(p.getName(), newValue).setDescription(p.getDescription())
+ .setReference(p.getReference()).setStatus(p.getStatus())
+ .setUnknownSchemaNodes(p.getUnknownSchemaNodes()).build();
}
if (highestValue == null || highestValue < p.getValue()) {