Bug-1421 - MD-SAL app cannot create a flow entry which adds a VLAN tag with the speci...
[openflowplugin.git] / openflowplugin / src / main / java / org / opendaylight / openflowplugin / openflow / md / core / MessageFactory.java
index c876917f28c8e9e97ed97bdb1a175f84bc1f9484..febf50e48f8994f5ba4e65f1b2fc0f64c251695f 100644 (file)
@@ -8,6 +8,7 @@
 package org.opendaylight.openflowplugin.openflow.md.core;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.HelloElementType;
@@ -55,11 +56,14 @@ public abstract class MessageFactory {
     public static HelloInput createHelloInput(short helloVersion, long helloXid, List<Short> versionOrder) {
         HelloInputBuilder helloInputbuilder = prepareHelloInputBuilder(helloVersion, helloXid);
         if (versionOrder != null) {
-            List<Elements> elementList = new ArrayList<>();
             
             ElementsBuilder elementsBuilder = new ElementsBuilder();
             elementsBuilder.setType(HelloElementType.VERSIONBITMAP);
-            List<Boolean> booleanList = new ArrayList<>();
+            int resultVersionListSize = 0;
+            if (!versionOrder.isEmpty()) {
+                resultVersionListSize = versionOrder.get(0) + 1;
+            }
+            List<Boolean> booleanList = new ArrayList<>(resultVersionListSize);
             
             int versionOrderIndex = versionOrder.size() - 1;
             
@@ -74,7 +78,8 @@ public abstract class MessageFactory {
             }
             
             elementsBuilder.setVersionBitmap(booleanList);
-            elementList.add(elementsBuilder.build());
+
+            List<Elements> elementList = Collections.singletonList(elementsBuilder.build());
             helloInputbuilder.setElements(elementList);
         }
         return helloInputbuilder.build();