Fix for Bug 144, Bug 147, 148 - improved codec
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / dom / serializer / api / ValueWithQName.java
1 package org.opendaylight.controller.sal.binding.dom.serializer.api;
2
3 import java.util.Map.Entry;
4
5 import org.opendaylight.yangtools.yang.common.QName;
6
7 public class ValueWithQName<V> implements Entry<QName, V>{
8     
9     final QName qname;
10     final V value;
11     
12     public ValueWithQName(QName qname, V value) {
13         super();
14         this.qname = qname;
15         this.value = value;
16     }
17
18     public QName getQname() {
19         return qname;
20     }
21
22     public V getValue() {
23         return value;
24     }
25     
26     @Override
27     public QName getKey() {
28         return qname;
29     }
30     
31     @Override
32     public V setValue(V value) {
33         throw new UnsupportedOperationException();
34     }
35
36     @Override
37     public int hashCode() {
38         final int prime = 31;
39         int result = 1;
40         result = prime * result + ((qname == null) ? 0 : qname.hashCode());
41         result = prime * result + ((value == null) ? 0 : value.hashCode());
42         return result;
43     }
44
45     @Override
46     public boolean equals(Object obj) {
47         if (this == obj) {
48             return true;
49         }
50         if (obj == null) {
51             return false;
52         }
53         if (getClass() != obj.getClass()) {
54             return false;
55         }
56         @SuppressWarnings("rawtypes")
57         ValueWithQName other = (ValueWithQName) obj;
58         if (qname == null) {
59             if (other.qname != null)
60                 return false;
61         } else if (!qname.equals(other.qname))
62             return false;
63         if (value == null) {
64             if (other.value != null) {
65                 return false;
66             }
67         } else if (!value.equals(other.value)) {
68             return false;
69         }
70         return true;
71     }
72 }