summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarek Gradzki <mgradzki@cisco.com>2016-09-14 14:49:56 +0200
committerMarek Gradzki <mgradzki@cisco.com>2016-09-14 14:57:59 +0200
commitd8489c4d78acba2ed6b470df564c5ed2e740422a (patch)
tree9ef3d6864fbeae9a64297cf826a4e0b486e20a40
parent4053837b4e542470afeb96f09c40370e9903b2c6 (diff)
Fix ClassifySession read NPE when NodeContext is missing
Change-Id: Ieca5ad125df5f26f82351871a0238e65be3e300c Signed-off-by: Marek Gradzki <mgradzki@cisco.com>
-rw-r--r--v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImpl.java7
-rw-r--r--v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImplTest.java8
2 files changed, 14 insertions, 1 deletions
diff --git a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImpl.java b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImpl.java
index 9f61ab0..e1bf501 100644
--- a/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImpl.java
+++ b/v3po/v3po2vpp/src/main/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImpl.java
@@ -28,6 +28,7 @@ import io.fd.honeycomb.translate.read.ReaderFactory;
import io.fd.honeycomb.translate.read.registry.ModifiableReaderRegistryBuilder;
import io.fd.honeycomb.translate.util.RWUtils;
import io.fd.honeycomb.translate.util.read.BindingBrokerReader;
+import java.util.List;
import java.util.stream.Collector;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -149,7 +150,11 @@ public final class VppClassifierContextManagerImpl implements VppClassifierConte
}
final String tableName = getTableName(tableIndex, ctx);
final Optional<ClassifyTableContext> tableCtx = ctx.read(getMappingIid(tableName));
- return Optional.fromNullable(tableCtx.get().getNodeContext().stream()
+ final List<NodeContext> nodeContext = tableCtx.get().getNodeContext();
+ if (nodeContext == null) {
+ return Optional.absent();
+ }
+ return Optional.fromNullable(nodeContext.stream()
.filter(n -> n.getIndex().equals(nodeIndex))
.findFirst()
.map(nodes -> nodes.getName())
diff --git a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImplTest.java b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImplTest.java
index cbc0c38..3e198e0 100644
--- a/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImplTest.java
+++ b/v3po/v3po2vpp/src/test/java/io/fd/honeycomb/translate/v3po/vppclassifier/VppClassifierContextManagerImplTest.java
@@ -120,6 +120,14 @@ public class VppClassifierContextManagerImplTest {
}
@Test
+ public void testGetNodeNameMissingNodeCtx() throws Exception {
+ final ClassifyTableContext tableCtx = table(TABLE_ID_0, TABLE_NAME_0, "aa");
+ when(ctx.read(VPP_CLASSIFIER_CONTEXT_IID)).thenReturn(Optional.of(context(tableCtx)));
+ when(ctx.read(TABLE_IID_0)).thenReturn(Optional.of(tableCtx));
+ assertEquals(Optional.absent(), vppClassfierContext.getNodeName(TABLE_ID_0, 123, ctx));
+ }
+
+ @Test
public void testGetNodeName() throws Exception {
final ClassifyTableContext tableCtx = table(TABLE_ID_0, TABLE_NAME_0, "aa", node("node123", 123));
when(ctx.read(VPP_CLASSIFIER_CONTEXT_IID)).thenReturn(Optional.of(context(tableCtx)));