*/
package org.opendaylight.yangtools.yang.common;
-import static com.google.common.base.Preconditions.checkArgument;
import static java.util.Objects.requireNonNull;
import com.google.common.annotations.Beta;
import java.io.DataOutput;
import java.io.IOException;
import java.util.Map.Entry;
-import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.concepts.WritableObject;
private static final long serialVersionUID = 1L;
private final ImmutableBiMap<String, QNameModule> mapping;
- private final QNameModule defaultNamespace;
public BiMapYangNamespaceContext(final BiMap<String, QNameModule> mapping) {
- this(mapping, null);
- }
-
- public BiMapYangNamespaceContext(final BiMap<String, QNameModule> mapping,
- final QNameModule defaultNamespace) {
- this.defaultNamespace = defaultNamespace;
this.mapping = ImmutableBiMap.copyOf(mapping);
- if (defaultNamespace != null) {
- checkArgument(this.mapping.containsValue(defaultNamespace),
- "Mapping %s does not contain default namespace %s", this.mapping, defaultNamespace);
- }
- }
-
- @Override
- public Optional<QNameModule> getDefaultNamespace() {
- return Optional.ofNullable(defaultNamespace);
}
@Override
@Override
public void writeTo(final DataOutput out) throws IOException {
- if (defaultNamespace != null) {
- out.writeBoolean(true);
- defaultNamespace.writeTo(out);
- } else {
- out.writeBoolean(false);
- }
-
out.writeInt(mapping.size());
for (Entry<String, QNameModule> entry : mapping.entrySet()) {
out.writeUTF(entry.getKey());
}
public static BiMapYangNamespaceContext readFrom(final DataInput in) throws IOException {
- final boolean haveDefault = in.readBoolean();
- final QNameModule defaultNamespace = haveDefault ? QNameModule.readFrom(in) : null;
final int size = in.readInt();
final Builder<String, QNameModule> builder = ImmutableBiMap.builder();
for (int i = 0; i < size; ++i) {
builder.put(prefix, namespace);
}
- return new BiMapYangNamespaceContext(builder.build(), defaultNamespace);
+ return new BiMapYangNamespaceContext(builder.build());
}
@Override
public int hashCode() {
- return Objects.hash(defaultNamespace, mapping);
+ return mapping.hashCode();
}
@Override
public boolean equals(final Object obj) {
- if (this == obj) {
- return true;
- }
- if (!(obj instanceof BiMapYangNamespaceContext)) {
- return false;
- }
- final BiMapYangNamespaceContext other = (BiMapYangNamespaceContext) obj;
- return defaultNamespace.equals(other.defaultNamespace) && mapping.equals(other.mapping);
+ return this == obj || obj instanceof BiMapYangNamespaceContext
+ && mapping.equals(((BiMapYangNamespaceContext) obj).mapping);
}
@Override
public String toString() {
- return MoreObjects.toStringHelper(this).add("defaultNamespace", defaultNamespace).add("mapping", mapping)
- .toString();
+ return MoreObjects.toStringHelper(this).add("mapping", mapping).toString();
}
}