*/
public class DeviceRequestFailedException extends OutboundQueueException {
private static final long serialVersionUID = 1L;
- private final Error error;
+ private final transient Error error;
public DeviceRequestFailedException(final String message, @Nonnull final Error error) {
super(message);
*
* @author michal.polkorab
*/
-public final class ExperimenterActionSerializerKey extends ActionSerializerKey<ExperimenterIdCase>
- implements ExperimenterSerializerKey {
+public final class ExperimenterActionSerializerKey extends ActionSerializerKey<ExperimenterIdCase> {
private final Class<? extends ExperimenterActionSubType> actionSubType;
*
* @author michal.polkorab
*/
-public final class ExperimenterInstructionSerializerKey extends InstructionSerializerKey<ExperimenterIdCase>
- implements ExperimenterSerializerKey {
+public final class ExperimenterInstructionSerializerKey extends InstructionSerializerKey<ExperimenterIdCase> {
/**
* Constructor.
package org.opendaylight.openflowjava.protocol.impl.core;
import com.google.common.base.MoreObjects;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.List;
}
}
+ @SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS")
private static byte[] address2bin(final String value) {
//TODO: translate ipv4 or ipv6 into byte[]
return null;
serializerRegistry.setGroupAddModConfig(connConfig.isGroupAddModEnabled());
}
serializerRegistry.init();
- serializationFactory = new SerializationFactory();
- serializationFactory.setSerializerTable(serializerRegistry);
+ serializationFactory = new SerializationFactory(serializerRegistry);
deserializerRegistry = new DeserializerRegistryImpl();
deserializerRegistry.init();
- deserializationFactory = new DeserializationFactory();
- deserializationFactory.setRegistry(deserializerRegistry);
+ deserializationFactory = new DeserializationFactory(deserializerRegistry);
}
@Override
import io.netty.handler.ssl.SslHandler;
import io.netty.util.concurrent.Future;
import java.net.InetAddress;
+import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;
LOG.debug("Requested Cipher Suites are: {}", suitesList);
String[] suites = suitesList.toArray(new String[suitesList.size()]);
engine.setEnabledCipherSuites(suites);
- LOG.debug("Cipher suites enabled in SSLEngine are: {}", engine.getEnabledCipherSuites().toString());
+ LOG.debug("Cipher suites enabled in SSLEngine are: {}",
+ Arrays.toString(engine.getEnabledCipherSuites()));
}
final SslHandler ssl = new SslHandler(engine);
final Future<Channel> handshakeFuture = ssl.handshakeFuture();
for (int i = unflushedSegments.size(); i <= segmentOffset; ++i) {
final StackedSegment newSegment = StackedSegment.create(first.getBaseXid()
- + StackedSegment.SEGMENT_SIZE * i);
+ + StackedSegment.SEGMENT_SIZE * (long)i);
LOG.debug("Adding segment {}", newSegment);
unflushedSegments.add(newSegment);
}
public class DeserializationFactory {
private final Map<TypeToClassKey, Class<?>> messageClassMap = new ConcurrentHashMap<>();
- private DeserializerRegistry registry;
+ private final DeserializerRegistry registry;
+
+ public DeserializationFactory(final DeserializerRegistry registry) {
+ this.registry = registry;
- public DeserializationFactory() {
TypeToClassMapInitializer.initializeTypeToClassMap(messageClassMap);
// Register type to class map for additional deserializers
return messageClassMap.remove(key) != null;
}
-
- public void setRegistry(final DeserializerRegistry registry) {
- this.registry = registry;
- }
-
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.action;
+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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public Action deserialize(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();
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public ErrorMessage deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
int startIndex = rawMessage.readerIndex();
ErrorMessageBuilder builder = new ErrorMessageBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+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;
private DeserializerRegistry deserializerRegistry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public ExperimenterMessage deserialize(ByteBuf message) {
+ Objects.requireNonNull(deserializerRegistry);
+
final long xid = message.readUnsignedInt();
final long expId = message.readUnsignedInt();
final long expType = message.readUnsignedInt();
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public FlowModInput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
FlowModInputBuilder builder = new FlowModInputBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
private static FlowModFlags createFlowModFlagsFromBitmap(int input) {
- final Boolean _oFPFFSENDFLOWREM = (input & 1 << 0) > 0;
- final Boolean _oFPFFCHECKOVERLAP = (input & 1 << 1) > 0;
- final Boolean _oFPFFRESETCOUNTS = (input & 1 << 2) > 0;
- final Boolean _oFPFFNOPKTCOUNTS = (input & 1 << 3) > 0;
- final Boolean _oFPFFNOBYTCOUNTS = (input & 1 << 4) > 0;
+ final Boolean _oFPFFSENDFLOWREM = (input & 1 << 0) != 0;
+ final Boolean _oFPFFCHECKOVERLAP = (input & 1 << 1) != 0;
+ final Boolean _oFPFFRESETCOUNTS = (input & 1 << 2) != 0;
+ final Boolean _oFPFFNOPKTCOUNTS = (input & 1 << 3) != 0;
+ final Boolean _oFPFFNOBYTCOUNTS = (input & 1 << 4) != 0;
return new FlowModFlags(_oFPFFCHECKOVERLAP, _oFPFFNOBYTCOUNTS, _oFPFFNOPKTCOUNTS, _oFPFFRESETCOUNTS,
_oFPFFSENDFLOWREM);
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
+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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public FlowRemovedMessage deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
FlowRemovedMessageBuilder builder = new FlowRemovedMessageBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+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 MeterModInput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
MeterModInputBuilder builder = new MeterModInputBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.openflowjava.protocol.api.extensibility.DeserializerRegistry;
MultipartReplyDescBuilder descBuilder = new MultipartReplyDescBuilder();
byte[] mfrDescBytes = new byte[DESC_STR_LEN];
input.readBytes(mfrDescBytes);
- String mfrDesc = new String(mfrDescBytes);
+ String mfrDesc = new String(mfrDescBytes, StandardCharsets.UTF_8);
descBuilder.setMfrDesc(mfrDesc.trim());
byte[] hwDescBytes = new byte[DESC_STR_LEN];
input.readBytes(hwDescBytes);
- String hwDesc = new String(hwDescBytes);
+ String hwDesc = new String(hwDescBytes, StandardCharsets.UTF_8);
descBuilder.setHwDesc(hwDesc.trim());
byte[] swDescBytes = new byte[DESC_STR_LEN];
input.readBytes(swDescBytes);
- String swDesc = new String(swDescBytes);
+ String swDesc = new String(swDescBytes, StandardCharsets.UTF_8);
descBuilder.setSwDesc(swDesc.trim());
byte[] serialNumBytes = new byte[SERIAL_NUM_LEN];
input.readBytes(serialNumBytes);
- String serialNum = new String(serialNumBytes);
+ String serialNum = new String(serialNumBytes, StandardCharsets.UTF_8);
descBuilder.setSerialNum(serialNum.trim());
byte[] dpDescBytes = new byte[DESC_STR_LEN];
input.readBytes(dpDescBytes);
- String dpDesc = new String(dpDescBytes);
+ String dpDesc = new String(dpDescBytes, StandardCharsets.UTF_8);
descBuilder.setDpDesc(dpDesc.trim());
caseBuilder.setMultipartReplyDesc(descBuilder.build());
return caseBuilder.build();
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
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;
*
* @author giuseppex.petralia@intel.com
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class MultipartRequestInputMessageFactory
implements OFDeserializer<MultipartRequestInput>, DeserializerRegistryInjector {
- private DeserializerRegistry registry;
private static final byte PADDING = 4;
private static final byte FLOW_PADDING_1 = 3;
private static final byte FLOW_PADDING_2 = 4;
private static final byte MULTIPART_REQUEST_TABLE_FEATURES_STRUCTURE_LENGTH = 64;
private static final byte COMMON_PROPERTY_LENGTH = 4;
+ private DeserializerRegistry registry;
+
@Override
public void injectDeserializerRegistry(DeserializerRegistry deserializerRegistry) {
registry = deserializerRegistry;
@Override
public MultipartRequestInput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
private static MultipartRequestFlags getMultipartRequestFlags(int input) {
- final Boolean _oFPMPFREQMORE = (input & 1 << 0) > 0;
+ final Boolean _oFPMPFREQMORE = (input & 1 << 0) != 0;
MultipartRequestFlags flag = new MultipartRequestFlags(_oFPMPFREQMORE);
return flag;
}
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
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 FlowModInput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
FlowModInputBuilder builder = new FlowModInputBuilder();
builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
private static FlowModFlagsV10 createFlowModFlagsFromBitmap(int input) {
- final Boolean _oFPFFSENDFLOWREM = (input & 1 << 0) > 0;
- final Boolean _oFPFFCHECKOVERLAP = (input & 1 << 1) > 0;
- final Boolean _oFPFFEMERG = (input & 1 << 2) > 0;
+ final Boolean _oFPFFSENDFLOWREM = (input & 1 << 0) != 0;
+ final Boolean _oFPFFCHECKOVERLAP = (input & 1 << 1) != 0;
+ final Boolean _oFPFFEMERG = (input & 1 << 2) != 0;
return new FlowModFlagsV10(_oFPFFCHECKOVERLAP, _oFPFFEMERG, _oFPFFSENDFLOWREM);
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
+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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public FlowRemovedMessage deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
FlowRemovedMessageBuilder builder = new FlowRemovedMessageBuilder();
builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
byte[] data = new byte[rawMessage.readableBytes()];
rawMessage.readBytes(data);
- if (data != null) {
-
- builder.setData(data);
- }
+ builder.setData(data);
return builder.build();
}
}
private static PortConfigV10 createPortConfig(final long input) {
- final Boolean _portDown = (input & 1 << 0) > 0;
- final Boolean _noStp = (input & 1 << 1) > 0;
- final Boolean _noRecv = (input & 1 << 2) > 0;
- final Boolean _noRecvStp = (input & 1 << 3) > 0;
- final Boolean _noFlood = (input & 1 << 4) > 0;
- final Boolean _noFwd = (input & 1 << 5) > 0;
- final Boolean _noPacketIn = (input & 1 << 6) > 0;
+ final Boolean _portDown = (input & 1 << 0) != 0;
+ final Boolean _noStp = (input & 1 << 1) != 0;
+ final Boolean _noRecv = (input & 1 << 2) != 0;
+ final Boolean _noRecvStp = (input & 1 << 3) != 0;
+ final Boolean _noFlood = (input & 1 << 4) != 0;
+ final Boolean _noFwd = (input & 1 << 5) != 0;
+ final Boolean _noPacketIn = (input & 1 << 6) != 0;
return new PortConfigV10(_noFlood, _noFwd, _noPacketIn, _noRecv, _noRecvStp, _noStp, _portDown);
}
private static PortFeaturesV10 createPortFeatures(final long input) {
- final Boolean _10mbHd = (input & 1 << 0) > 0;
- final Boolean _10mbFd = (input & 1 << 1) > 0;
- final Boolean _100mbHd = (input & 1 << 2) > 0;
- final Boolean _100mbFd = (input & 1 << 3) > 0;
- final Boolean _1gbHd = (input & 1 << 4) > 0;
- final Boolean _1gbFd = (input & 1 << 5) > 0;
- final Boolean _10gbFd = (input & 1 << 6) > 0;
- final Boolean _copper = (input & 1 << 7) > 0;
- final Boolean _fiber = (input & 1 << 8) > 0;
- final Boolean _autoneg = (input & 1 << 9) > 0;
- final Boolean _pause = (input & 1 << 10) > 0;
- final Boolean _pauseAsym = (input & 1 << 11) > 0;
+ final Boolean _10mbHd = (input & 1 << 0) != 0;
+ final Boolean _10mbFd = (input & 1 << 1) != 0;
+ final Boolean _100mbHd = (input & 1 << 2) != 0;
+ final Boolean _100mbFd = (input & 1 << 3) != 0;
+ final Boolean _1gbHd = (input & 1 << 4) != 0;
+ final Boolean _1gbFd = (input & 1 << 5) != 0;
+ final Boolean _10gbFd = (input & 1 << 6) != 0;
+ final Boolean _copper = (input & 1 << 7) != 0;
+ final Boolean _fiber = (input & 1 << 8) != 0;
+ final Boolean _autoneg = (input & 1 << 9) != 0;
+ final Boolean _pause = (input & 1 << 10) != 0;
+ final Boolean _pauseAsym = (input & 1 << 11) != 0;
return new PortFeaturesV10(_100mbFd, _100mbHd, _10gbFd, _10mbFd, _10mbHd, _1gbFd, _1gbHd, _autoneg, _copper,
_fiber, _pause, _pauseAsym);
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
+import java.nio.charset.StandardCharsets;
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;
*
* @author michal.polkorab
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class OF10StatsReplyMessageFactory implements OFDeserializer<MultipartReplyMessage>,
DeserializerRegistryInjector {
@Override
public MultipartReplyMessage deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
MultipartReplyMessageBuilder builder = new MultipartReplyMessageBuilder();
builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
MultipartReplyDescBuilder descBuilder = new MultipartReplyDescBuilder();
byte[] mfrDescBytes = new byte[DESC_STR_LEN];
input.readBytes(mfrDescBytes);
- String mfrDesc = new String(mfrDescBytes);
+ String mfrDesc = new String(mfrDescBytes, StandardCharsets.UTF_8);
descBuilder.setMfrDesc(mfrDesc.trim());
byte[] hwDescBytes = new byte[DESC_STR_LEN];
input.readBytes(hwDescBytes);
- String hwDesc = new String(hwDescBytes);
+ String hwDesc = new String(hwDescBytes, StandardCharsets.UTF_8);
descBuilder.setHwDesc(hwDesc.trim());
byte[] swDescBytes = new byte[DESC_STR_LEN];
input.readBytes(swDescBytes);
- String swDesc = new String(swDescBytes);
+ String swDesc = new String(swDescBytes, StandardCharsets.UTF_8);
descBuilder.setSwDesc(swDesc.trim());
byte[] serialNumBytes = new byte[SERIAL_NUM_LEN];
input.readBytes(serialNumBytes);
- String serialNum = new String(serialNumBytes);
+ String serialNum = new String(serialNumBytes, StandardCharsets.UTF_8);
descBuilder.setSerialNum(serialNum.trim());
byte[] dpDescBytes = new byte[DESC_STR_LEN];
input.readBytes(dpDescBytes);
- String dpDesc = new String(dpDescBytes);
+ String dpDesc = new String(dpDescBytes, StandardCharsets.UTF_8);
descBuilder.setDpDesc(dpDesc.trim());
caseBuilder.setMultipartReplyDesc(descBuilder.build());
return caseBuilder.build();
*/
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+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;
*
* @author giuseppex.petralia@intel.com
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class OF10StatsRequestInputFactory
implements OFDeserializer<MultipartRequestInput>, DeserializerRegistryInjector {
private DeserializerRegistry registry;
@Override
public MultipartRequestInput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
MultipartRequestInputBuilder builder = new MultipartRequestInputBuilder();
builder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
@SuppressWarnings("checkstyle:AbbreviationAsWordInName")
private static MultipartRequestFlags getMultipartRequestFlags(int input) {
- final Boolean _oFPMPFREQMORE = (input & 1 << 0) > 0;
+ final Boolean _oFPMPFREQMORE = (input & 1 << 0) != 0;
MultipartRequestFlags flag = new MultipartRequestFlags(_oFPMPFREQMORE);
return flag;
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import java.math.BigInteger;
+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;
private DeserializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public PacketInMessage deserialize(final ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
PacketInMessageBuilder builder = new PacketInMessageBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
builder.setAction(actions);
byte[] data = new byte[rawMessage.readableBytes()];
rawMessage.readBytes(data);
- if (data != null) {
- builder.setData(data);
- }
+
+ builder.setData(data);
return builder.build();
}
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+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;
* @author timotej.kubas
* @author michal.polkorab
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class QueueGetConfigReplyMessageFactory implements OFDeserializer<GetQueueConfigOutput>,
DeserializerRegistryInjector {
@Override
public GetQueueConfigOutput deserialize(ByteBuf rawMessage) {
+ Objects.requireNonNull(registry);
+
GetQueueConfigOutputBuilder builder = new GetQueueConfigOutputBuilder();
builder.setVersion((short) EncodeConstants.OF13_VERSION_ID);
builder.setXid(rawMessage.readUnsignedInt());
package org.opendaylight.openflowjava.protocol.impl.deserialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+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;
private DeserializerRegistry deserializerRegistry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public ExperimenterMessage deserialize(ByteBuf message) {
+ Objects.requireNonNull(deserializerRegistry);
+
final long xid = message.readUnsignedInt();
final long expId = message.readUnsignedInt();
OFDeserializer<ExperimenterDataOfChoice> deserializer = deserializerRegistry.getDeserializer(
*/
public class SerializationFactory {
- private SerializerRegistry registry;
+ private final SerializerRegistry registry;
+
+ public SerializationFactory(SerializerRegistry registry) {
+ this.registry = registry;
+ }
/**
* Transforms POJO message into ByteBuf.
new MessageTypeKey<>(version, message.getImplementedInterface()));
serializer.serialize(message, out);
}
-
- /**
- * Sets the SerializerRegistry.
- *
- * @param serializerRegistry registry with serializers
- */
- public void setSerializerTable(SerializerRegistry serializerRegistry) {
- this.registry = serializerRegistry;
- }
-
}
package org.opendaylight.openflowjava.protocol.impl.serialization.action;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.HeaderSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
private SerializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(Action action, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
final int startIndex = outBuffer.writerIndex();
outBuffer.writeShort(ActionConstants.SET_FIELD_CODE);
final int lengthIndex = outBuffer.writerIndex();
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
private static final byte MESSAGE_TYPE = 4;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(ExperimenterOfMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
long expId = message.getExperimenter().getValue();
final OFSerializer<ExperimenterDataOfChoice> serializer = registry.getSerializer(
ExperimenterSerializerKeyFactory.createExperimenterMessageSerializerKey(
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeInt(message.getExperimenter().getValue().intValue());
outBuffer.writeInt(message.getExpType().intValue());
+
// TODO: Serializer for data field is vendor specific.
- byte[] data = null;
+// byte[] data = null;
+//
+// if (data != null) {
+// outBuffer.writeBytes(data);
+// }
- if (data != null) {
- outBuffer.writeBytes(data);
- }
ByteBufUtils.updateOFHeaderLength(outBuffer);
}
}
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
private SerializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(final FlowMod message, final ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
final int index = outBuffer.writerIndex();
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeLong(message.getCookie().longValue());
*/
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
}
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(FlowRemovedMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
final int index = outBuffer.writerIndex();
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeLong(message.getCookie().longValue());
*/
public class GetFeaturesOutputFactory implements OFSerializer<GetFeaturesOutput>, SerializerRegistryInjector {
- @SuppressWarnings("unused")
- private SerializerRegistry registry;
private static final byte MESSAGE_TYPE = 6;
private static final byte PADDING = 2;
@Override
public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
- this.registry = serializerRegistry;
}
private static void writeCapabilities(Capabilities capabilities, ByteBuf outBuffer) {
*/
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.UnpooledByteBufAllocator;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.MultipartReplyBody;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyAggregateCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDescCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyExperimenterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyFlowCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyGroupDescCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyTableFeaturesCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.aggregate._case.MultipartReplyAggregate;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.desc._case.MultipartReplyDesc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.experimenter._case.MultipartReplyExperimenter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.MultipartReplyFlow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.multipart.reply.flow.FlowStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.group._case.MultipartReplyGroup;
*
* @author giuseppex.petralia@intel.com
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class MultipartReplyMessageFactory implements OFSerializer<MultipartReplyMessage>, SerializerRegistryInjector {
private static final byte MESSAGE_TYPE = 19;
- private SerializerRegistry registry;
private static final byte PADDING = 4;
private static final byte PORT_DESC_PADDING_1 = 4;
private static final byte PORT_DESC_PADDING_2 = 2;
private static final byte APPLY_SETFIELD_CODE = 14;
private static final byte APPLY_SETFIELD_MISS_CODE = 15;
+ private SerializerRegistry registry;
+
@Override
public void injectSerializerRegistry(final SerializerRegistry serializerRegistry) {
this.registry = serializerRegistry;
@Override
public void serialize(final MultipartReplyMessage message, final ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeShort(message.getType().getIntValue());
writeFlags(message.getFlags(), outBuffer);
}
private void serializeExperimenterBody(final MultipartReplyBody body, final ByteBuf outBuffer) {
- MultipartReplyExperimenterCase experimenterCase = (MultipartReplyExperimenterCase) body;
- MultipartReplyExperimenter experimenterBody = experimenterCase.getMultipartReplyExperimenter();
+// MultipartReplyExperimenterCase experimenterCase = (MultipartReplyExperimenterCase) body;
+// MultipartReplyExperimenter experimenterBody = experimenterCase.getMultipartReplyExperimenter();
// TODO: experimenterBody does not have get methods
}
writeOxmRelatedTableProperty(tableFeatureBuff, tableFeatureProp, APPLY_SETFIELD_MISS_CODE);
break;
case OFPTFPTEXPERIMENTER:
- writeExperimenterRelatedTableProperty(tableFeatureBuff, tableFeatureProp);
- break;
case OFPTFPTEXPERIMENTERMISS:
writeExperimenterRelatedTableProperty(tableFeatureBuff, tableFeatureProp);
break;
for (FlowStats flowStats : flow.getFlowStats()) {
ByteBuf flowStatsBuff = UnpooledByteBufAllocator.DEFAULT.buffer();
flowStatsBuff.writeShort(EncodeConstants.EMPTY_LENGTH);
- flowStatsBuff.writeByte(new Long(flowStats.getTableId()).byteValue());
+ flowStatsBuff.writeByte((byte)flowStats.getTableId().longValue());
flowStatsBuff.writeZero(FLOW_STATS_PADDING_1);
flowStatsBuff.writeInt(flowStats.getDurationSec().intValue());
flowStatsBuff.writeInt(flowStats.getDurationNsec().intValue());
}
private void write256String(final String toWrite, final ByteBuf outBuffer) {
- byte[] nameBytes = toWrite.getBytes();
+ byte[] nameBytes = toWrite.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 256) {
byte[] nameBytesPadding = new byte[256];
int index = 0;
}
private void write32String(final String toWrite, final ByteBuf outBuffer) {
- byte[] nameBytes = toWrite.getBytes();
+ byte[] nameBytes = toWrite.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 32) {
byte[] nameBytesPadding = new byte[32];
int index = 0;
}
private void writeName(final String name, final ByteBuf outBuffer) {
- byte[] nameBytes = name.getBytes();
+ byte[] nameBytes = name.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 16) {
byte[] nameBytesPadding = new byte[16];
int index = 0;
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
import io.netty.buffer.ByteBuf;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
output.writeShort(EncodeConstants.EMPTY_LENGTH);
output.writeByte(currTableFeature.getTableId());
output.writeZero(PADDING_IN_MULTIPART_REQUEST_TABLE_FEATURES_BODY);
- output.writeBytes(currTableFeature.getName().getBytes());
- output.writeZero(32 - currTableFeature.getName().getBytes().length);
+ final byte[] nameBytes = currTableFeature.getName().getBytes(StandardCharsets.UTF_8);
+ output.writeBytes(nameBytes);
+ output.writeZero(32 - nameBytes.length);
output.writeLong(currTableFeature.getMetadataMatch().longValue());
output.writeLong(currTableFeature.getMetadataWrite().longValue());
output.writeInt(createTableConfigBitmask(currTableFeature.getConfig()));
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
import io.netty.buffer.ByteBuf;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
}
private void writeName(final String name, final ByteBuf outBuffer) {
- byte[] nameBytes = name.getBytes();
+ byte[] nameBytes = name.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 16) {
byte[] nameBytesPadding = new byte[16];
int index = 0;
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
private SerializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(final FlowModInput message, final ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
OFSerializer<MatchV10> matchSerializer = registry.getSerializer(new MessageTypeKey<>(
message.getVersion(), MatchV10.class));
*/
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
}
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(FlowRemovedMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
OFSerializer<MatchV10> matchSerializer = registry
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
import io.netty.buffer.ByteBuf;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
}
private void writeName(final String name, final ByteBuf outBuffer) {
- byte[] nameBytes = name.getBytes();
+ byte[] nameBytes = name.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 16) {
byte[] nameBytesPadding = new byte[16];
int index = 0;
*/
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.UnpooledByteBufAllocator;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.MultipartReplyBody;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyAggregateCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyDescCase;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyExperimenterCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyFlowCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyPortStatsCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyQueueCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.MultipartReplyTableCase;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.aggregate._case.MultipartReplyAggregate;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.desc._case.MultipartReplyDesc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.experimenter._case.MultipartReplyExperimenter;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.MultipartReplyFlow;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.flow._case.multipart.reply.flow.FlowStats;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.multipart.reply.multipart.reply.body.multipart.reply.port.stats._case.MultipartReplyPortStats;
*
* @author giuseppex.petralia@intel.com
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class OF10StatsReplyMessageFactory implements OFSerializer<MultipartReplyMessage>, SerializerRegistryInjector {
private SerializerRegistry registry;
@Override
public void serialize(MultipartReplyMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeShort(message.getType().getIntValue());
writeFlags(message.getFlags(), outBuffer);
}
private void serializeExperimenterBody(MultipartReplyBody body, ByteBuf outBuffer) {
- MultipartReplyExperimenterCase experimenterCase = (MultipartReplyExperimenterCase) body;
- MultipartReplyExperimenter experimenterBody = experimenterCase.getMultipartReplyExperimenter();
+// MultipartReplyExperimenterCase experimenterCase = (MultipartReplyExperimenterCase) body;
+// MultipartReplyExperimenter experimenterBody = experimenterCase.getMultipartReplyExperimenter();
// TODO: experimenterBody does not have get methods
}
for (FlowStats flowStats : flow.getFlowStats()) {
ByteBuf flowStatsBuff = UnpooledByteBufAllocator.DEFAULT.buffer();
flowStatsBuff.writeShort(EncodeConstants.EMPTY_LENGTH);
- flowStatsBuff.writeByte(new Long(flowStats.getTableId()).byteValue());
+ flowStatsBuff.writeByte((byte)flowStats.getTableId().longValue());
flowStatsBuff.writeZero(FLOW_STATS_PADDING_1);
OFSerializer<MatchV10> matchSerializer = registry
.getSerializer(new MessageTypeKey<>(message.getVersion(), MatchV10.class));
}
private void write256String(String toWrite, ByteBuf outBuffer) {
- byte[] nameBytes = toWrite.getBytes();
+ byte[] nameBytes = toWrite.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 256) {
byte[] nameBytesPadding = new byte[256];
int index = 0;
}
private void write16String(String toWrite, ByteBuf outBuffer) {
- byte[] nameBytes = toWrite.getBytes();
+ byte[] nameBytes = toWrite.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 16) {
byte[] nameBytesPadding = new byte[16];
int index = 0;
}
private void write32String(String toWrite, ByteBuf outBuffer) {
- byte[] nameBytes = toWrite.getBytes();
+ byte[] nameBytes = toWrite.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 32) {
byte[] nameBytesPadding = new byte[32];
int index = 0;
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
*
* @author michal.polkorab
*/
+@SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public class OF10StatsRequestInputFactory implements OFSerializer<MultipartRequestInput>, SerializerRegistryInjector {
private static final byte MESSAGE_TYPE = 16;
@Override
public void serialize(final MultipartRequestInput message, final ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.OFHEADER_SIZE);
outBuffer.writeShort(message.getType().getIntValue());
outBuffer.writeShort(createMultipartRequestFlagsBitmask(message.getFlags()));
*/
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
private SerializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(PacketInMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
ByteBufUtils.writeOFHeader(MESSAGE_TYPE, message, outBuffer, EncodeConstants.EMPTY_LENGTH);
outBuffer.writeInt(message.getBufferId().intValue());
outBuffer.writeShort(message.getTotalLen().intValue());
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
import io.netty.buffer.ByteBuf;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
}
private void writeName(final String name, final ByteBuf outBuffer) {
- byte[] nameBytes = name.getBytes();
+ byte[] nameBytes = name.getBytes(StandardCharsets.UTF_8);
if (nameBytes.length < 16) {
byte[] nameBytesPadding = new byte[16];
int index = 0;
propertyBuff.writeZero(PROPERTY_HEADER_PADDING);
switch (property.getProperty()) {
case OFPQTMINRATE:
- serializeRateBody(property.getAugmentation(RateQueueProperty.class), propertyBuff);
- break;
case OFPQTMAXRATE:
serializeRateBody(property.getAugmentation(RateQueueProperty.class), propertyBuff);
break;
package org.opendaylight.openflowjava.protocol.impl.serialization.factories;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import io.netty.buffer.ByteBuf;
+import java.util.Objects;
import org.opendaylight.openflowjava.protocol.api.extensibility.OFSerializer;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistry;
import org.opendaylight.openflowjava.protocol.api.extensibility.SerializerRegistryInjector;
private SerializerRegistry registry;
@Override
+ @SuppressFBWarnings("UWF_FIELD_NOT_INITIALIZED_IN_CONSTRUCTOR") // FB doesn't recognize Objects.requireNonNull
public void serialize(ExperimenterOfMessage message, ByteBuf outBuffer) {
+ Objects.requireNonNull(registry);
+
long expId = message.getExperimenter().getValue();
OFSerializer<ExperimenterDataOfChoice> serializer = registry.getSerializer(
ExperimenterSerializerKeyFactory.createExperimenterMessageSerializerKey(
public void test() {
DeserializerRegistryImpl registry = new DeserializerRegistryImpl();
registry.init();
- DeserializationFactory factory = new DeserializationFactory();
- factory.setRegistry(registry);
+ final DeserializationFactory factory = new DeserializationFactory(registry);
ByteBuf buffer = PooledByteBufAllocator.DEFAULT.buffer();
buffer.writeByte(0);
buffer.writeShort(EncodeConstants.OFHEADER_SIZE);
public void testNotExistingDeserializer() {
DeserializerRegistryImpl registry = new DeserializerRegistryImpl();
registry.init();
- DeserializationFactory factory = new DeserializationFactory();
- factory.setRegistry(registry);
+ final DeserializationFactory factory = new DeserializationFactory(registry);
ByteBuf buffer = PooledByteBufAllocator.DEFAULT.buffer();
buffer.writeByte(0);
buffer.writeShort(EncodeConstants.OFHEADER_SIZE);
@Before
public void startUp() {
errorFactory = new ErrorMessageFactory();
+ Mockito.when(registry.getDeserializer(Matchers.any(MessageCodeKey.class))).thenReturn(deserializer);
+ errorFactory.injectDeserializerRegistry(registry);
}
/**
*/
@Test
public void testExperimenterError() {
- Mockito.when(registry.getDeserializer(Matchers.any(MessageCodeKey.class))).thenReturn(deserializer);
- errorFactory.injectDeserializerRegistry(registry);
ByteBuf bb = BufferHelper.buildBuffer("FF FF 00 00 00 01");
BufferHelper.deserialize(errorFactory, bb);
public void test() {
SerializerRegistry registry = new SerializerRegistryImpl();
registry.init();
- SerializationFactory factory = new SerializationFactory();
- factory.setSerializerTable(registry);
+ final SerializationFactory factory = new SerializationFactory(registry);
final ByteBuf buffer = PooledByteBufAllocator.DEFAULT.buffer();
HelloInputBuilder helloBuilder = new HelloInputBuilder();
helloBuilder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
public void testNotExistingSerializer() {
SerializerRegistry registry = new SerializerRegistryImpl();
registry.init();
- SerializationFactory factory = new SerializationFactory();
- factory.setSerializerTable(registry);
+ final SerializationFactory factory = new SerializationFactory(registry);
final ByteBuf buffer = PooledByteBufAllocator.DEFAULT.buffer();
HelloInputBuilder helloBuilder = new HelloInputBuilder();
helloBuilder.setVersion((short) EncodeConstants.OF10_VERSION_ID);
import io.netty.buffer.UnpooledByteBufAllocator;
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
public static String decodeNullTerminatedString(final ByteBuf rawMessage, final int length) {
byte[] name = new byte[length];
rawMessage.readBytes(name);
- return new String(name).trim();
+ return new String(name, StandardCharsets.UTF_8).trim();
}
/**
public void setUp() throws Exception {
registry = new DeserializerRegistryImpl();
registry.init();
- factory = new DeserializationFactory();
- factory.setRegistry(registry);
+ factory = new DeserializationFactory(registry);
provider = new DeserializerExtensionProviderImpl(registry, factory);
DeserializerInjector.injectDeserializers(provider);
MessageDeserializerInjector.injectLegacyDeserializers(provider);