From 37d06b9108ba589f7f7ad51abd223b16c3ddf64b Mon Sep 17 00:00:00 2001 From: Scott Wegner Date: Thu, 12 May 2016 11:32:30 -0700 Subject: [PATCH] Window display data should be safe for null windowFn --- .../apache/beam/sdk/transforms/windowing/Window.java | 10 ++++++---- .../beam/sdk/transforms/windowing/WindowTest.java | 11 ++++++----- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Window.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Window.java index b9dd451fe2b7..ab6b7f0cb4d5 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Window.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Window.java @@ -599,14 +599,16 @@ public PCollection apply(PCollection input) { @Override public void populateDisplayData(DisplayData.Builder builder) { super.populateDisplayData(builder); - builder - .add(DisplayData.item("windowFn", windowFn.getClass())) - .include(windowFn); + + if (windowFn != null) { + builder + .add(DisplayData.item("windowFn", windowFn.getClass())) + .include(windowFn); + } if (allowedLateness != null) { builder.addIfNotDefault(DisplayData.item("allowedLateness", allowedLateness), Duration.millis(BoundedWindow.TIMESTAMP_MAX_VALUE.getMillis())); - } if (trigger != null && !(trigger instanceof DefaultTrigger)) { diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/windowing/WindowTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/windowing/WindowTest.java index 885f549d8d90..cd5eb2d4f521 100644 --- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/windowing/WindowTest.java +++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/windowing/WindowTest.java @@ -272,16 +272,17 @@ public void testDisplayData() { @Test public void testDisplayDataExcludesUnspecifiedProperties() { - Window.Bound window = Window.into(new GlobalWindows()); - - DisplayData displayData = DisplayData.from(window); - assertThat(displayData, not(hasDisplayItem(hasKey(isOneOf( + Window.Bound onlyHasAccumulationMode = Window.named("foobar").discardingFiredPanes(); + assertThat(DisplayData.from(onlyHasAccumulationMode), not(hasDisplayItem(hasKey(isOneOf( + "windowFn", "trigger", "outputTimeFn", - "accumulationMode", "allowedLateness", "closingBehavior"))))); + Window.Bound noAccumulationMode = Window.into(new GlobalWindows()); + assertThat(DisplayData.from(noAccumulationMode), + not(hasDisplayItem(hasKey("accumulationMode")))); } @Test