From: Martin Bobak Date: Tue, 12 May 2015 14:03:38 +0000 (+0200) Subject: fix npe when calculating IpMatchHash X-Git-Tag: release/lithium~192 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=d9c48552b30dbcf6a0603762707741d29240abec;p=openflowplugin.git fix npe when calculating IpMatchHash Change-Id: I32a0af1b840cb1716be40f8a7596e1fa235f51b8 Signed-off-by: Martin Bobak --- diff --git a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/HashUtil.java b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/HashUtil.java index 6ea6fa68c2..3c906fcb4c 100644 --- a/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/HashUtil.java +++ b/openflowplugin-impl/src/main/java/org/opendaylight/openflowplugin/impl/util/HashUtil.java @@ -8,6 +8,7 @@ package org.opendaylight.openflowplugin.impl.util; +import com.google.common.annotations.VisibleForTesting; import java.math.BigInteger; import java.util.StringTokenizer; import org.opendaylight.openflowplugin.api.openflow.md.util.OpenflowVersion; @@ -518,7 +519,8 @@ public final class HashUtil { return hash; } - private static long calculateIpMatchHash(final IpMatch ipMatch) { + @VisibleForTesting + public static long calculateIpMatchHash(final IpMatch ipMatch) { long hash = 0; Short ipEcn = ipMatch.getIpEcn(); if (null != ipEcn) { @@ -529,15 +531,20 @@ public final class HashUtil { hash += ipProtocol; } - Short ipDscp = ipMatch.getIpDscp().getValue(); - if (null != ipDscp) { - hash += ipDscp; + if (null != ipMatch.getIpDscp()) { + Short ipDscp = ipMatch.getIpDscp().getValue(); + if (null != ipDscp) { + hash += ipDscp; + } } IpVersion ipVersion = ipMatch.getIpProto(); - if (null != ipVersion) { + if (null != ipVersion) + + { hash += ipVersion.getIntValue(); } + return hash; } diff --git a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/HashUtilTest.java b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/HashUtilTest.java index f7451a475c..11c822096d 100644 --- a/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/HashUtilTest.java +++ b/openflowplugin-impl/src/test/java/org/opendaylight/openflowplugin/impl/util/HashUtilTest.java @@ -13,6 +13,7 @@ import org.junit.Test; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev100924.MacAddress; +import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -119,4 +120,11 @@ public class HashUtilTest { } } + @Test + public void calculateIpMatchHash() { + IpMatchBuilder ipMatchBuilder = new IpMatchBuilder(); + ipMatchBuilder.setIpEcn((short) 42); + HashUtil.calculateIpMatchHash(ipMatchBuilder.build()); + } + } \ No newline at end of file