Remove trailing whitespace
[openflowjava.git] / openflow-protocol-impl / src / main / java / org / opendaylight / openflowjava / protocol / impl / deserialization / factories / HelloMessageFactory.java
index eeb9893e29cbe50f1700aa64d2599b47d89c85b9..ca0a79c8d2271809a4674da4363188ba030a181c 100644 (file)
@@ -8,14 +8,13 @@
 
 package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
 
+import io.netty.buffer.ByteBuf;
+
 import java.util.ArrayList;
 import java.util.List;
 
-import io.netty.buffer.ByteBuf;
-
-import org.opendaylight.openflowjava.protocol.impl.deserialization.OFDeserializer;
-import org.opendaylight.openflowjava.protocol.impl.serialization.factories.HelloInputMessageFactory;
-import org.opendaylight.openflowjava.protocol.impl.util.EncodeConstants;
+import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
+import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessage;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.HelloMessageBuilder;
@@ -29,33 +28,18 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731
  */
 public class HelloMessageFactory implements OFDeserializer<HelloMessage> {
 
-    private static HelloMessageFactory instance;
-    
-    private HelloMessageFactory() {
-        // do nothing, just singleton
-    }
-    
-    /**
-     * @return singleton factory
-     */
-    public static synchronized HelloMessageFactory getInstance() {
-        if (instance == null) {
-            instance = new HelloMessageFactory();
-        }
-        return instance;
-    }
-    
+    private static final byte HELLO_ELEMENT_HEADER_SIZE = 4;
     @Override
-    public HelloMessage bufferToMessage(ByteBuf rawMessage, short version) {
+    public HelloMessage deserialize(ByteBuf rawMessage) {
         HelloMessageBuilder builder = new HelloMessageBuilder();
-        builder.setVersion(version);
+        builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
         builder.setXid(rawMessage.readUnsignedInt());
         if (rawMessage.readableBytes() > 0) {
             builder.setElements(readElement(rawMessage));
         }
         return builder.build();
     }
-    
+
     private static List<Elements> readElement(ByteBuf input) {
         List<Elements> elementsList = new ArrayList<>();
         while (input.readableBytes() > 0) {
@@ -64,7 +48,7 @@ public class HelloMessageFactory implements OFDeserializer<HelloMessage> {
             int elementLength = input.readUnsignedShort();
             if (type == HelloElementType.VERSIONBITMAP.getIntValue()) {
                 elementsBuilder.setType(HelloElementType.forValue(type));
-                int[] versionBitmap = new int[(elementLength - HelloInputMessageFactory.HELLO_ELEMENT_HEADER_SIZE) / 4];
+                int[] versionBitmap = new int[(elementLength - HELLO_ELEMENT_HEADER_SIZE) / 4];
                 for (int i = 0; i < versionBitmap.length; i++) {
                     versionBitmap[i] = (int) input.readUnsignedInt();
                 }
@@ -73,12 +57,14 @@ public class HelloMessageFactory implements OFDeserializer<HelloMessage> {
                 if (paddingRemainder != 0) {
                     input.readBytes(EncodeConstants.PADDING - paddingRemainder);
                 }
+            } else {
+                return elementsList;
             }
             elementsList.add(elementsBuilder.build());
         }
         return elementsList;
     }
-    
+
     private static List<Boolean> readVersionBitmap(int[] input){
         List<Boolean> versionBitmapList = new ArrayList<>();
         for (int i = 0; i < input.length; i++) {