*/
package org.opendaylight.yangtools.yang.data.impl.schema.nodes;
+import com.google.common.base.MoreObjects.ToStringHelper;
+import com.google.common.collect.ImmutableMap;
import java.util.Map;
-
+import java.util.Objects;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.AttributesContainer;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
-
-import com.google.common.base.Objects.ToStringHelper;
-import com.google.common.collect.ImmutableMap;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-public abstract class AbstractImmutableNormalizedValueAttrNode<K extends YangInstanceIdentifier.PathArgument,V>
+public abstract class AbstractImmutableNormalizedValueAttrNode<K extends PathArgument,V>
extends AbstractImmutableNormalizedValueNode<K, V>
implements AttributesContainer {
@Override
protected int valueHashCode() {
- final int result = getValue().hashCode();
-// FIXME: are attributes part of hashCode/equals?
-// for (final Entry<?, ?> a : attributes.entrySet()) {
-// result = 31 * result + a.hashCode();
-// }
+ final int result = getValue() != null ? getValue().hashCode() : 1;
+ // FIXME: are attributes part of hashCode/equals?
return result;
}
@Override
protected boolean valueEquals(final AbstractImmutableNormalizedNode<?, ?> other) {
- if (!getValue().equals(other.getValue())) {
+ // We can not call directly getValue.equals because of Empty Type
+ // Definition leaves which allways have NULL value
+
+ if (!Objects.deepEquals(getValue(), other.getValue())) {
return false;
}
-// FIXME: are attributes part of hashCode/equals?
-// final Set<Entry<QName, String>> tas = getAttributes().entrySet();
-// final Set<Entry<QName, String>> oas = container.getAttributes().entrySet();
-//
-// return tas.containsAll(oas) && oas.containsAll(tas);
+ // FIXME: are attributes part of hashCode/equals?
return true;
}
+
}