Make Java core SDK root dir NonNull by default
Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/45025212 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/45025212 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/45025212 Branch: refs/heads/master Commit: 4502521240a75c61addbb71e783450a7fbe61122 Parents: ff54534 Author: Kenneth Knowles <[email protected]> Authored: Thu Oct 19 19:27:21 2017 -0700 Committer: Kenneth Knowles <[email protected]> Committed: Fri Oct 20 12:43:38 2017 -0700 ---------------------------------------------------------------------- sdks/java/core/pom.xml | 5 +++++ .../src/main/java/org/apache/beam/sdk/Pipeline.java | 12 ++++++++++-- .../src/main/java/org/apache/beam/sdk/package-info.java | 4 ++++ 3 files changed, 19 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/45025212/sdks/java/core/pom.xml ---------------------------------------------------------------------- diff --git a/sdks/java/core/pom.xml b/sdks/java/core/pom.xml index 2e54e43..5cead58 100644 --- a/sdks/java/core/pom.xml +++ b/sdks/java/core/pom.xml @@ -227,6 +227,11 @@ </dependency> <dependency> + <groupId>com.github.stephenc.findbugs</groupId> + <artifactId>findbugs-annotations</artifactId> + </dependency> + + <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> </dependency> http://git-wip-us.apache.org/repos/asf/beam/blob/45025212/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java index 760efb3..5358f7d 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java @@ -29,6 +29,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; +import javax.annotation.Nullable; import org.apache.beam.sdk.annotations.Internal; import org.apache.beam.sdk.coders.CoderRegistry; import org.apache.beam.sdk.io.Read; @@ -393,9 +394,13 @@ public class Pipeline { */ class Defaults implements PipelineVisitor { - private Pipeline pipeline; + @Nullable private Pipeline pipeline; protected Pipeline getPipeline() { + if (pipeline == null) { + throw new IllegalStateException( + "Illegal access to pipeline after visitor traversal was completed"); + } return pipeline; } @@ -484,7 +489,10 @@ public class Pipeline { private final TransformHierarchy transforms; private Set<String> usedFullNames = new HashSet<>(); - private CoderRegistry coderRegistry; + + /** Lazily initialized; access via {@link #getCoderRegistry()}. */ + @Nullable private CoderRegistry coderRegistry; + private final List<String> unstableNames = new ArrayList<>(); private final PipelineOptions defaultOptions; http://git-wip-us.apache.org/repos/asf/beam/blob/45025212/sdks/java/core/src/main/java/org/apache/beam/sdk/package-info.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/package-info.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/package-info.java index 995bcb9..7593807 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/package-info.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/package-info.java @@ -31,4 +31,8 @@ * where and how it should run after pipeline construction is complete. * */ +@DefaultAnnotation(NonNull.class) package org.apache.beam.sdk; + +import edu.umd.cs.findbugs.annotations.DefaultAnnotation; +import edu.umd.cs.findbugs.annotations.NonNull;
