Added validation
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / serialization / factories / ExperimenterInputMessageFactory.java
index 82ab09092c4d1da4e7680ac323bed9c376630b22..de2133f21137242176473f84a61d65d9d7b2d9fb 100644 (file)
@@ -8,14 +8,15 @@ import org.opendaylight.openflowjava.protocol.impl.util.ByteBufUtils;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.ExperimenterInput;\r
 \r
 /**\r
+ * Translates Experimenter messages\r
  * @author michal.polkorab\r
- *\r
+ * @author timotej.kubas\r
  */\r
 public class ExperimenterInputMessageFactory implements OFSerializer<ExperimenterInput>{\r
 \r
     /** Code type of Experimenter message */\r
     public static final byte MESSAGE_TYPE = 4;\r
-    private static int dataLength;\r
+    private static final byte MESSAGE_LENGTH = 8;\r
     private static ExperimenterInputMessageFactory instance;\r
     \r
     private ExperimenterInputMessageFactory() {\r
@@ -35,18 +36,23 @@ public class ExperimenterInputMessageFactory implements OFSerializer<Experimente
     @Override\r
     public void messageToBuffer(short version, ByteBuf out,\r
             ExperimenterInput message) {\r
-        dataLength = message.getData().length;\r
         ByteBufUtils.writeOFHeader(instance, message, out);\r
         out.writeInt(message.getExperimenter().intValue());\r
         out.writeInt(message.getExpType().intValue());\r
-        out.writeBytes(message.getData());\r
+        byte[] data = message.getData();\r
+        if (data != null) {\r
+            out.writeBytes(data);\r
+        }\r
     }\r
 \r
     @Override\r
-    public int computeLength() {\r
-        int ofHeaderLength = 8; //OFHeaderLength\r
-        int messageLength = 8; //experimenterHeaderLength\r
-        return messageLength + ofHeaderLength + dataLength;\r
+    public int computeLength(ExperimenterInput message) {\r
+        int length = MESSAGE_LENGTH + 2 * (Integer.SIZE / Byte.SIZE);\r
+        byte[] data = message.getData();\r
+        if (data != null) {\r
+            length += data.length;\r
+        }\r
+        return length;\r
     }\r
 \r
     @Override\r