We can use a simple list and reorganize our builders for clarity.
Change-Id: I3660eab1e0ace31e900d6e31e0ada276624b8edc
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
@Override
public Action deserialize(final ByteBuf input) {
- final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
- .ActionBuilder builder = new ActionBuilder();
input.skipBytes(2 * Short.BYTES);
- OutputActionCaseBuilder caseBuilder = new OutputActionCaseBuilder();
- OutputActionBuilder actionBuilder = new OutputActionBuilder();
- actionBuilder.setPort(new PortNumber(readUint32(input)));
- actionBuilder.setMaxLength(readUint16(input));
- caseBuilder.setOutputAction(actionBuilder.build());
- builder.setActionChoice(caseBuilder.build());
+ final var action = new OutputActionBuilder()
+ .setPort(new PortNumber(readUint32(input)))
+ .setMaxLength(readUint16(input))
+ .build();
input.skipBytes(ActionConstants.OUTPUT_PADDING);
- return builder.build();
+
+ return new ActionBuilder()
+ .setActionChoice(new OutputActionCaseBuilder().setOutputAction(action).build())
+ .build();
}
}
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.action;
+import static java.util.Objects.requireNonNull;
+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
-import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistryInjector;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFDeserializer;
@Override
@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public Action deserialize(final ByteBuf input) {
- Objects.requireNonNull(registry);
-
- final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping
- .ActionBuilder builder = new ActionBuilder();
final int startIndex = input.readerIndex();
+
input.skipBytes(2 * Short.BYTES);
- final SetFieldCaseBuilder caseBuilder = new SetFieldCaseBuilder();
- SetFieldActionBuilder actionBuilder = new SetFieldActionBuilder();
int oxmClass = input.getUnsignedShort(input.readerIndex());
// get oxm_field & hasMask byte and extract the field value
int oxmField = input.getUnsignedByte(input.readerIndex() + Short.BYTES) >>> 1;
long expId = input.getUnsignedInt(input.readerIndex() + Short.BYTES + 2 * Byte.BYTES);
key.setExperimenterId(Uint32.valueOf(expId));
}
- OFDeserializer<MatchEntry> matchDeserializer = registry.getDeserializer(key);
- List<MatchEntry> entry = new ArrayList<>();
- entry.add(matchDeserializer.deserialize(input));
- actionBuilder.setMatchEntry(entry);
- caseBuilder.setSetFieldAction(actionBuilder.build());
- builder.setActionChoice(caseBuilder.build());
+
+ final OFDeserializer<MatchEntry> matchDeserializer = requireNonNull(registry).getDeserializer(key);
+ final var entry = matchDeserializer.deserialize(input);
+
int paddingRemainder = (input.readerIndex() - startIndex) % EncodeConstants.PADDING;
if (paddingRemainder != 0) {
input.skipBytes(EncodeConstants.PADDING - paddingRemainder);
}
- return builder.build();
+
+ return new ActionBuilder()
+ .setActionChoice(new SetFieldCaseBuilder()
+ .setSetFieldAction(new SetFieldActionBuilder().setMatchEntry(List.of(entry)).build())
+ .build())
+ .build();
}
@Override
@Override
public Action deserialize(final ByteBuf input) {
- final ActionBuilder builder = new ActionBuilder();
input.skipBytes(2 * Short.BYTES);
- SetMplsTtlCaseBuilder caseBuilder = new SetMplsTtlCaseBuilder();
- SetMplsTtlActionBuilder actionBuilder = new SetMplsTtlActionBuilder();
- actionBuilder.setMplsTtl(readUint8(input));
- caseBuilder.setSetMplsTtlAction(actionBuilder.build());
- builder.setActionChoice(caseBuilder.build());
+ final var ttl = readUint8(input);
input.skipBytes(ActionConstants.SET_MPLS_TTL_PADDING);
- return builder.build();
+
+ return new ActionBuilder()
+ .setActionChoice(new SetMplsTtlCaseBuilder()
+ .setSetMplsTtlAction(new SetMplsTtlActionBuilder().setMplsTtl(ttl).build())
+ .build())
+ .build();
}
}
@Override
public Action deserialize(final ByteBuf input) {
- final ActionBuilder builder = new ActionBuilder();
input.skipBytes(2 * Short.BYTES);
- SetNwTtlCaseBuilder caseBuilder = new SetNwTtlCaseBuilder();
- SetNwTtlActionBuilder actionBuilder = new SetNwTtlActionBuilder();
- actionBuilder.setNwTtl(readUint8(input));
- caseBuilder.setSetNwTtlAction(actionBuilder.build());
- builder.setActionChoice(caseBuilder.build());
+ final var ttl = readUint8(input);
input.skipBytes(ActionConstants.SET_NW_TTL_PADDING);
- return builder.build();
+
+ return new ActionBuilder()
+ .setActionChoice(new SetNwTtlCaseBuilder()
+ .setSetNwTtlAction(new SetNwTtlActionBuilder().setNwTtl(ttl).build())
+ .build())
+ .build();
}
}
@Override
public Action deserialize(final ByteBuf input) {
- final ActionBuilder builder = new ActionBuilder();
input.skipBytes(2 * Short.BYTES);
- SetQueueCaseBuilder caseBuilder = new SetQueueCaseBuilder();
- SetQueueActionBuilder actionBuilder = new SetQueueActionBuilder();
- actionBuilder.setQueueId(readUint32(input));
- caseBuilder.setSetQueueAction(actionBuilder.build());
- builder.setActionChoice(caseBuilder.build());
- return builder.build();
+
+ return new ActionBuilder()
+ .setActionChoice(new SetQueueCaseBuilder()
+ .setSetQueueAction(new SetQueueActionBuilder().setQueueId(readUint32(input)).build())
+ .build())
+ .build();
}
}