Corrected equals & hashcode methods in extension keys
[openflowjava.git] / openflow-protocol-api / src / main / java / org / opendaylight / openflowjava / protocol / api / extensibility / MessageCodeKey.java
1 /*\r
2  * Copyright (c) 2013 Pantheon Technologies s.r.o. and others.  All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 package org.opendaylight.openflowjava.protocol.api.extensibility;\r
9 \r
10 /**\r
11  * @author michal.polkorab\r
12  */\r
13 public class MessageCodeKey {\r
14 \r
15     private short msgVersion;\r
16     private int msgType;\r
17     private Class<?> clazz;\r
18 \r
19     /**\r
20      * Constructor\r
21      * @param version wire protocol version\r
22      * @param value used as distinguisher (read from binary data / buffer)\r
23      * @param clazz class of object that is going to be deserialized\r
24      */\r
25     public MessageCodeKey(short version, int value, Class<?> clazz) {\r
26         this.msgVersion = version;\r
27         this.msgType = value;\r
28         this.clazz = clazz;\r
29     }\r
30 \r
31     @Override\r
32     public int hashCode() {\r
33         final int prime = 31;\r
34         int result = 1;\r
35         result = prime * result + ((clazz == null) ? 0 : clazz.hashCode());\r
36         result = prime * result + msgType;\r
37         result = prime * result + msgVersion;\r
38         return result;\r
39     }\r
40 \r
41     @Override\r
42     public boolean equals(Object obj) {\r
43         if (this == obj)\r
44             return true;\r
45         if (obj == null)\r
46             return false;\r
47         if (!(obj instanceof MessageCodeKey))\r
48             return false;\r
49         MessageCodeKey other = (MessageCodeKey) obj;\r
50         if (clazz == null) {\r
51             if (other.clazz != null)\r
52                 return false;\r
53         } else if (!clazz.equals(other.clazz))\r
54             return false;\r
55         if (msgType != other.msgType)\r
56             return false;\r
57         if (msgVersion != other.msgVersion)\r
58             return false;\r
59         return true;\r
60     }\r
61 \r
62     @Override\r
63     public String toString() {\r
64         return "msgVersion: " + msgVersion + " objectClass: " + clazz.getName() + " msgType: " + msgType;\r
65     }\r
66 \r
67 }