* @param length mask length
*/
protected static void writeMask(byte[] mask, ByteBuf outBuffer, int length) {
- if (mask != null && mask.length != length) {
+ if (mask == null) {
+ return;
+ }
+
+ if (mask.length != length) {
throw new IllegalArgumentException("incorrect length of mask: "
+ mask.length + ", expected: " + length);
}
import java.util.Collection;
import java.util.Collections;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Objects;
import java.util.Optional;
import java.util.concurrent.ConcurrentHashMap;
convertor = Optional.ofNullable(convertorsForVersion.get(type));
if (!convertor.isPresent()) {
- for (final Class<?> convertorType : convertorsForVersion.keySet()) {
+ for (Entry<Class<?>, Convertor<?, ?, ? extends ConvertorData>> entry :
+ convertorsForVersion.entrySet()) {
+ final Class<?> convertorType = entry.getKey();
if (type.isAssignableFrom(convertorType)) {
- final Convertor<?, ?, ? extends ConvertorData> foundConvertor =
- convertorsForVersion.get(convertorType);
+ final Convertor<?, ?, ? extends ConvertorData> foundConvertor = entry.getValue();
convertor = Optional.ofNullable(foundConvertor);
if (convertor.isPresent()) {
import com.google.common.collect.Lists;
import com.google.common.net.InetAddresses;
import com.google.common.primitives.UnsignedBytes;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.math.BigInteger;
import java.net.Inet4Address;
import java.net.InetAddress;
import java.util.BitSet;
import java.util.Iterator;
import java.util.List;
+import javax.annotation.Nullable;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IetfInetUtil;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
return netMask;
}
+ @Nullable
public static Ipv6ArbitraryMask extractIpv6AddressMask(final Ipv6Prefix ipv6Prefix) {
Iterator<String> addressParts = PREFIX_SPLITTER.split(ipv6Prefix.getValue()).iterator();
addressParts.next();
inetAddress = InetAddress.getByAddress(finalmask);
} catch (UnknownHostException e) {
LOG.error("Failed to convert the Ipv6 subnetmask from integer to mask value ", e);
+ return null;
}
return new Ipv6ArbitraryMask(inetAddress.getHostAddress());
}
return netmask;
}
+ @Nullable
+ @SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS")
public static byte[] convertArbitraryMaskToByteArray(DottedQuad mask) {
String maskValue;
if (mask != null && mask.getValue() != null) {
maskInIpFormat = InetAddress.getByName(maskValue);
} catch (UnknownHostException e) {
LOG.error("Failed to resolve the ip address of the mask ", e);
+ return null;
}
byte[] bytes = maskInIpFormat.getAddress();
return bytes;
return false;
}
+ @Nullable
+ @SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS")
public static byte[] convertIpv6ArbitraryMaskToByteArray(final Ipv6ArbitraryMask mask) {
String maskValue;
if (mask != null && mask.getValue() != null) {
maskInIpFormat = InetAddress.getByName(maskValue);
} catch (UnknownHostException e) {
LOG.error("Failed to convert mask string to ipv6 format mask ",e);
+ return null;
}
return maskInIpFormat.getAddress();
}
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.common;
+import java.io.Serializable;
import java.util.Comparator;
import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.Ordered;
*
* @param <T> T
*/
-public class OrderComparator<T extends Ordered> implements Comparator<T> {
+public class OrderComparator<T extends Ordered> implements Comparator<T>, Serializable {
+ private static final long serialVersionUID = 1L;
@SuppressWarnings("rawtypes")
private static final OrderComparator INSTANCE = new OrderComparator();
import com.google.common.base.MoreObjects;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
import com.google.common.collect.Ordering;
import java.math.BigInteger;
import java.util.ArrayList;
/**
* default match entries - empty.
*/
- public static final List<MatchEntry> DEFAULT_MATCH_ENTRIES = new ArrayList<>();
+ public static final List<MatchEntry> DEFAULT_MATCH_ENTRIES = ImmutableList.of();
// Default values for when things are null
private static final TableId DEFAULT_TABLE_ID = new TableId(0L);
package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.util.Iterator;
+import javax.annotation.Nullable;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;
import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpDscp;
* @param addressParts the address parts
* @return the byte [ ]
*/
+ @Nullable
+ @SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS")
public static byte[] extractIpv4Mask(final Iterator<String> addressParts) {
final int prefix;
if (addressParts.hasNext()) {
import org.slf4j.LoggerFactory;
public final class ExtensionSessionManagerImpl implements ExtensionSessionManager {
+ private static final Logger LOG = LoggerFactory.getLogger(ExtensionSessionManagerImpl.class);
+
+ private static ExtensionSessionManagerImpl INSTANCE = new ExtensionSessionManagerImpl();
- protected static final Logger LOG = LoggerFactory.getLogger(ExtensionSessionManagerImpl.class);
- private static ExtensionSessionManagerImpl INSTANCE;
private ExtensionConverterProvider extensionConverterProvider;
/**
* Returns singleton instance.
*/
public static ExtensionSessionManager getInstance() {
- if (INSTANCE == null) {
- INSTANCE = new ExtensionSessionManagerImpl();
- }
-
return INSTANCE;
}
package org.opendaylight.openflowplugin.openflow.md.util;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* OF-action related utilities.
* @param tosValue TypeOfService value
* @return DSCP value
*/
+ @SuppressFBWarnings("ICAST_QUESTIONABLE_UNSIGNED_RIGHT_SHIFT")
public static Short tosToDscp(short tosValue) {
return (short) (tosValue >>> ActionUtil.ENC_FIELD_BIT_SIZE);
}
import com.google.common.base.Preconditions;
import com.google.common.io.BaseEncoding;
+import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
import java.math.BigInteger;
import java.util.Arrays;
+import javax.annotation.Nullable;
public final class ByteUtil {
private ByteUtil() {
*/
public static String bytesToHexstring(final byte[] bytes, final String delimiter) {
BaseEncoding be = HEX_16_ENCODING;
- if (delimiter != DEFAULT_HEX_SEPARATOR) {
+ if (!DEFAULT_HEX_SEPARATOR.equals(delimiter)) {
be = PLAIN_HEX_16_ENCODING.withSeparator(delimiter, 2);
}
return be.encode(bytes);
* @param numBytes convert to number of bytes
* @return byte array containing n * 8 bits.
*/
- public static byte[] convertBigIntegerToNBytes(final BigInteger bigInteger, final int numBytes) {
+ @Nullable
+ @SuppressFBWarnings("PZLA_PREFER_ZERO_LENGTH_ARRAYS")
+ public static byte[] convertBigIntegerToNBytes(@Nullable final BigInteger bigInteger, final int numBytes) {
if (bigInteger == null) {
return null;
}
*/
package org.opendaylight.openflowplugin.openflow.md.util;
-import com.google.common.base.Optional;
import com.google.common.base.Splitter;
import java.math.BigInteger;
import java.util.List;
-import java.util.concurrent.ExecutionException;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.apache.commons.lang3.StringUtils;
-import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.openflowplugin.api.OFConstants;
import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnectorKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.opendaylight.yangtools.yang.binding.KeyedInstanceIdentifier;
import org.slf4j.Logger;
public static String bigIntegerToPaddedHex(final BigInteger dataPathId) {
return StringUtils.leftPad(dataPathId.toString(16), 16, "0");
}
-
- // TODO : create new module openflowplugin-util, move there this method along with
- // TestProviderTransactionUtil#getDataObject
- private static <T extends DataObject> T getDataObject(final ReadTransaction readOnlyTransaction,
- final InstanceIdentifier<T> identifier) {
- Optional<T> optionalData = null;
- try {
- optionalData = readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, identifier).get();
- if (optionalData.isPresent()) {
- return optionalData.get();
- }
- } catch (ExecutionException | InterruptedException e) {
- LOG.error("Read transaction for identifier {} failed.", identifier, e);
- }
- return null;
- }
}