Integration test with hadshake
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / MessageTypeKey.java
1 /* Copyright (C)2013 Pantheon Technologies, s.r.o. All rights reserved. */\r
2 package org.opendaylight.openflowjava.protocol.impl.serialization;\r
3 \r
4 import org.opendaylight.yangtools.yang.binding.DataObject;\r
5 \r
6 /**\r
7  * @author michal.polkorab\r
8  * @param <E> message type (class)\r
9  *\r
10  */\r
11 public class MessageTypeKey<E extends DataObject> {\r
12 \r
13     private final Class<E> msgType;\r
14     private final short msgVersion;\r
15     \r
16     /**\r
17      * @param msgVersion protocol version\r
18      * @param msgType type of message\r
19      */\r
20     public MessageTypeKey(short msgVersion, Class<E> msgType) {\r
21         super();\r
22         this.msgType = msgType;\r
23         this.msgVersion = msgVersion;\r
24     }\r
25     \r
26     /**\r
27      * @return msgVersion\r
28      */\r
29     public short getMsgVersion() {\r
30         return msgVersion;\r
31     }\r
32 \r
33     /**\r
34      * @return the msgType\r
35      */\r
36     public Class<E> getMsgType() {\r
37         return msgType;\r
38     }\r
39 \r
40     @Override\r
41     public String toString() {\r
42         return "msgVersion: " + msgVersion + " msgType: " + msgType.getName();\r
43     }\r
44 \r
45     @Override\r
46     public int hashCode() {\r
47         final int prime = 31;\r
48         int result = 1;\r
49         result = prime * result + msgVersion;\r
50         return result;\r
51     }\r
52 \r
53     @Override\r
54     public boolean equals(Object obj) {\r
55         if (this == obj)\r
56             return true;\r
57         if (obj == null)\r
58             return false;\r
59         if (getClass() != obj.getClass())\r
60             return false;\r
61         MessageTypeKey<?> other = (MessageTypeKey<?>) obj;\r
62         if (msgType == null) {\r
63             if (other.msgType != null)\r
64                 return false;\r
65         } else if (!other.msgType.isAssignableFrom(msgType))\r
66             return false;\r
67         if (msgVersion != other.msgVersion)\r
68             return false;\r
69         return true;\r
70     }\r
71  \r
72 }\r