Cleanup AbstractActionInstructionSerializer
[openflowplugin.git] / openflowplugin-impl / src / main / java / org / opendaylight / openflowplugin / impl / protocol / serialization / instructions / AbstractActionInstructionSerializer.java
index 0de90d0fde94faafcb164636e9525203e3d0e963..99680fed33217f43c426d3d46589df34d00ab34a 100644 (file)
@@ -8,8 +8,9 @@
 
 package org.opendaylight.openflowplugin.impl.protocol.serialization.instructions;
 
+import static java.util.Objects.requireNonNull;
+
 import io.netty.buffer.ByteBuf;
-import java.util.Optional;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
 import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
 import org.opendaylight.openflowjava.protocol.api.util.EncodeConstants;
@@ -19,40 +20,40 @@ import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common.Ord
 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.ActionList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.instruction.Instruction;
 
-public abstract class AbstractActionInstructionSerializer extends AbstractInstructionSerializer implements SerializerRegistryInjector {
-
-    private SerializerRegistry registry;
+public abstract class AbstractActionInstructionSerializer<T extends Instruction>
+        extends AbstractInstructionSerializer<T> implements SerializerRegistryInjector {
+    private SerializerRegistry registry = null;
 
     @Override
-    public void serialize(Instruction input, ByteBuf outBuffer) {
+    public void serialize(final T input, final ByteBuf outBuffer) {
         outBuffer.writeShort(getType());
     }
 
     /**
-     * Try to write list of OpenFlowPlugin actions to output buffer
+     * Try to write list of OpenFlowPlugin actions to output buffer.
+     *
      * @param actions List of OpenFlowPlugin actions
      * @param outBuffer output buffer
      * @param startIndex start index of byte buffer
      */
-    protected void writeActions(ActionList actions, short version, ByteBuf outBuffer, int startIndex) {
-        Optional.ofNullable(actions).flatMap(as -> Optional.ofNullable(as.getAction())).map(as -> {
-            int lengthIndex = outBuffer.writerIndex();
+    protected void writeActions(final ActionList actions, final short version, final ByteBuf outBuffer,
+            final int startIndex) {
+        if (actions != null) {
+            final int lengthIndex = outBuffer.writerIndex();
             outBuffer.writeShort(EncodeConstants.EMPTY_LENGTH);
             outBuffer.writeZero(InstructionConstants.PADDING_IN_ACTIONS_INSTRUCTION);
-            as.stream().sorted(OrderComparator.build()).forEach(a -> ActionUtil
-                    .writeAction(a.getAction(), version, registry, outBuffer));
+            actions.nonnullAction().values().stream()
+                .sorted(OrderComparator.build())
+                .forEach(a -> ActionUtil.writeAction(a.getAction(), version, registry, outBuffer));
             outBuffer.setShort(lengthIndex, outBuffer.writerIndex() - startIndex);
-            return actions;
-        }).orElseGet(() -> {
+        } else {
             outBuffer.writeShort(getLength());
             outBuffer.writeZero(InstructionConstants.PADDING_IN_ACTIONS_INSTRUCTION);
-            return actions;
-        });
+        }
     }
 
     @Override
-    public void injectSerializerRegistry(SerializerRegistry serializerRegistry) {
-        registry = serializerRegistry;
+    public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
+        registry = requireNonNull(serializerRegistry);
     }
-
 }