Skip to content

Commit

Permalink
Migrate to checkerframework nullness annotations
Browse files Browse the repository at this point in the history
  • Loading branch information
kennknowles committed Jul 22, 2020
1 parent cb0f900 commit ecedd3e
Show file tree
Hide file tree
Showing 697 changed files with 2,288 additions and 3,170 deletions.
Expand Up @@ -46,7 +46,7 @@
public class WriteOneFilePerWindow extends PTransform<PCollection<String>, PDone> {
private static final DateTimeFormatter FORMATTER = ISODateTimeFormat.hourMinute();
private String filenamePrefix;
@Nullable private Integer numShards;
private @Nullable Integer numShards;

public WriteOneFilePerWindow(String filenamePrefix, Integer numShards) {
this.filenamePrefix = filenamePrefix;
Expand Down
Expand Up @@ -21,6 +21,7 @@ import com.google.api.services.bigquery.model.TableFieldSchema
import com.google.api.services.bigquery.model.TableReference
import com.google.api.services.bigquery.model.TableRow
import com.google.api.services.bigquery.model.TableSchema
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
import org.apache.beam.examples.kotlin.common.ExampleBigQueryTableOptions
import org.apache.beam.examples.kotlin.common.ExampleOptions
import org.apache.beam.examples.kotlin.common.ExampleUtils
Expand All @@ -40,6 +41,7 @@ import org.apache.beam.sdk.transforms.windowing.*
import org.apache.beam.sdk.values.KV
import org.apache.beam.sdk.values.PCollection
import org.apache.beam.sdk.values.PCollectionList
import org.checkerframework.checker.nullness.qual.Nullable
import org.joda.time.Duration
import org.joda.time.Instant

Expand Down Expand Up @@ -351,6 +353,7 @@ object TriggerExample {
* Calculate total flow and number of records for each freeway and format the results to TableRow
* objects, to save to BigQuery.
*/
@SuppressFBWarnings("NP_METHOD_PARAMETER_TIGHTENS_ANNOTATION") // kotlin-specific spotbugs false positive
internal class TotalFlow(private val triggerType: String) : PTransform<PCollection<KV<String, Int>>, PCollection<TableRow>>() {

override fun expand(flowInfo: PCollection<KV<String, Int>>): PCollection<TableRow> {
Expand Down
Expand Up @@ -28,7 +28,6 @@
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.Endpoints.ApiServiceDescriptor;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.ArtifactInformation;
Expand All @@ -55,6 +54,7 @@
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.hash.HashCode;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.hash.Hashing;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.io.Files;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -336,28 +336,24 @@ private static File zipDirectory(File directory) throws IOException {
}

private static class ProcessPayloadReferenceJSON {
@Nullable private String os;
@Nullable private String arch;
@Nullable private String command;
@Nullable private Map<String, String> env;
private @Nullable String os;
private @Nullable String arch;
private @Nullable String command;
private @Nullable Map<String, String> env;

@Nullable
public String getOs() {
public @Nullable String getOs() {
return os;
}

@Nullable
public String getArch() {
public @Nullable String getArch() {
return arch;
}

@Nullable
public String getCommand() {
public @Nullable String getCommand() {
return command;
}

@Nullable
public Map<String, String> getEnv() {
public @Nullable Map<String, String> getEnv() {
return env;
}
}
Expand Down
Expand Up @@ -30,7 +30,6 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
import org.apache.beam.model.expansion.v1.ExpansionApi;
import org.apache.beam.model.jobmanagement.v1.ArtifactApi;
import org.apache.beam.model.jobmanagement.v1.ArtifactRetrievalServiceGrpc;
Expand All @@ -56,6 +55,7 @@
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.base.Strings;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Cross-language external transform.
Expand Down Expand Up @@ -147,10 +147,10 @@ public abstract static class ExpandableTransform<InputT extends PInput, OutputT
private final Endpoints.ApiServiceDescriptor endpoint;
private final Integer namespaceIndex;

@Nullable private transient RunnerApi.Components expandedComponents;
@Nullable private transient RunnerApi.PTransform expandedTransform;
@Nullable private transient Map<PCollection, String> externalPCollectionIdMap;
@Nullable private transient Map<Coder, String> externalCoderIdMap;
private transient RunnerApi.@Nullable Components expandedComponents;
private transient RunnerApi.@Nullable PTransform expandedTransform;
private transient @Nullable Map<PCollection, String> externalPCollectionIdMap;
private transient @Nullable Map<Coder, String> externalCoderIdMap;

ExpandableTransform(
String urn,
Expand Down
Expand Up @@ -23,13 +23,13 @@
import java.io.IOException;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.sdk.coders.Coder;
import org.apache.beam.sdk.runners.AppliedPTransform;
import org.apache.beam.sdk.transforms.PTransform;
import org.apache.beam.sdk.values.PCollection;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap;
import org.checkerframework.checker.nullness.qual.Nullable;

/** Translating External transforms to proto. */
public class ExternalTranslation {
Expand Down
Expand Up @@ -23,7 +23,6 @@
import java.util.Collection;
import java.util.Collections;
import java.util.concurrent.ExecutionException;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.Components;
import org.apache.beam.model.pipeline.v1.RunnerApi.Environment;
Expand All @@ -35,6 +34,7 @@
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.CacheBuilder;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.CacheLoader;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.cache.LoadingCache;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Vends Java SDK objects rehydrated from a Runner API {@link Components} collection.
Expand All @@ -49,7 +49,7 @@ public class RehydratedComponents {
* This class may be used in the context of a pipeline or not. If not, then it cannot rehydrate
* {@link PCollection PCollections}.
*/
@Nullable private final Pipeline pipeline;
private final @Nullable Pipeline pipeline;

/**
* A non-evicting cache, serving as a memo table for rehydrated {@link WindowingStrategy
Expand All @@ -61,8 +61,7 @@ public class RehydratedComponents {
new CacheLoader<String, WindowingStrategy<?, ?>>() {
@Override
public WindowingStrategy<?, ?> load(String id) throws Exception {
@Nullable
RunnerApi.WindowingStrategy windowingStrategyProto =
RunnerApi.@Nullable WindowingStrategy windowingStrategyProto =
components.getWindowingStrategiesOrDefault(id, null);
checkState(
windowingStrategyProto != null,
Expand All @@ -80,7 +79,7 @@ public class RehydratedComponents {
new CacheLoader<String, Coder<?>>() {
@Override
public Coder<?> load(String id) throws Exception {
@Nullable RunnerApi.Coder coder = components.getCodersOrDefault(id, null);
RunnerApi.@Nullable Coder coder = components.getCodersOrDefault(id, null);
checkState(coder != null, "No coder with id '%s' in serialized components", id);
return CoderTranslation.fromProto(
coder, RehydratedComponents.this, TranslationContext.DEFAULT);
Expand Down
Expand Up @@ -19,7 +19,6 @@

import java.util.Map;
import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi.SideInput;
import org.apache.beam.sdk.coders.Coder;
import org.apache.beam.sdk.transforms.ViewFn;
Expand All @@ -31,6 +30,7 @@
import org.apache.beam.sdk.values.PValueBase;
import org.apache.beam.sdk.values.TupleTag;
import org.apache.beam.sdk.values.WindowingStrategy;
import org.checkerframework.checker.nullness.qual.Nullable;

/** A {@link PCollectionView} created from the components of a {@link SideInput}. */
public class RunnerPCollectionView<T> extends PValueBase implements PCollectionView<T> {
Expand Down
Expand Up @@ -26,7 +26,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.Components;
import org.apache.beam.model.pipeline.v1.RunnerApi.Environment;
Expand All @@ -42,6 +41,7 @@
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.HashBiMap;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableSet;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Iterables;
import org.checkerframework.checker.nullness.qual.Nullable;

/** SDK objects that will be represented at some later point within a {@link Components} object. */
public class SdkComponents {
Expand Down
Expand Up @@ -25,7 +25,6 @@
import java.util.List;
import java.util.Map;
import java.util.concurrent.ThreadLocalRandom;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.FunctionSpec;
import org.apache.beam.model.pipeline.v1.RunnerApi.ParDoPayload;
Expand Down Expand Up @@ -68,6 +67,7 @@
import org.apache.beam.sdk.values.WindowingStrategy;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableMap;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Maps;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;

/**
Expand Down
Expand Up @@ -21,7 +21,6 @@

import java.util.Map;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import org.apache.beam.runners.core.construction.SplittableParDo.ProcessKeyedElements;
import org.apache.beam.sdk.options.PipelineOptions;
import org.apache.beam.sdk.runners.AppliedPTransform;
Expand Down Expand Up @@ -55,6 +54,7 @@
import org.apache.beam.sdk.values.Row;
import org.apache.beam.sdk.values.TupleTag;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.util.concurrent.Uninterruptibles;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;

/**
Expand Down Expand Up @@ -124,7 +124,7 @@ static class NaiveProcessFn<InputT, OutputT, RestrictionT, PositionT, WatermarkE
extends DoFn<KV<InputT, RestrictionT>, OutputT> {
private final DoFn<InputT, OutputT> fn;

@Nullable private transient DoFnInvoker<InputT, OutputT> invoker;
private transient @Nullable DoFnInvoker<InputT, OutputT> invoker;

NaiveProcessFn(DoFn<InputT, OutputT> fn) {
this.fn = fn;
Expand Down
Expand Up @@ -26,7 +26,6 @@
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import javax.annotation.Nullable;
import org.apache.beam.sdk.coders.BooleanCoder;
import org.apache.beam.sdk.coders.CollectionCoder;
import org.apache.beam.sdk.coders.InstantCoder;
Expand All @@ -37,6 +36,7 @@
import org.apache.beam.sdk.transforms.windowing.PaneInfo;
import org.apache.beam.sdk.transforms.windowing.PaneInfo.PaneInfoCoder;
import org.apache.beam.sdk.util.common.ElementByteSizeObserver;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;

/**
Expand Down Expand Up @@ -76,8 +76,7 @@ public static <K> Timer<K> cleared(
}

/** Returns the key that the timer is set on. */
@Nullable
public abstract K getUserKey();
public abstract @Nullable K getUserKey();

/**
* Returns the tag that the timer is set on. The tag is {@code ""} when the timer is for a {@link
Expand All @@ -99,22 +98,19 @@ public static <K> Timer<K> cleared(
* org.apache.beam.model.pipeline.v1.RunnerApi.TimerFamilySpec} that is associated with this
* timer.
*/
@Nullable
public abstract Instant getFireTimestamp();
public abstract @Nullable Instant getFireTimestamp();

/**
* Returns the watermark that the timer is supposed to be held. This field is nullable only when
* the timer is being cleared.
*/
@Nullable
public abstract Instant getHoldTimestamp();
public abstract @Nullable Instant getHoldTimestamp();

/**
* Returns the {@link PaneInfo} that is related to the timer. This field is nullable only when the
* timer is being cleared.
*/
@Nullable
public abstract PaneInfo getPane();
public abstract @Nullable PaneInfo getPane();

@Override
public boolean equals(Object other) {
Expand Down
Expand Up @@ -29,7 +29,6 @@
import java.util.List;
import java.util.NoSuchElementException;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.beam.sdk.coders.Coder;
import org.apache.beam.sdk.coders.CoderException;
import org.apache.beam.sdk.coders.ListCoder;
Expand All @@ -51,6 +50,7 @@
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.annotations.VisibleForTesting;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableList;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Lists;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.joda.time.Instant;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Expand Down
Expand Up @@ -23,7 +23,6 @@
import java.io.IOException;
import java.util.Collections;
import java.util.Map;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.FunctionSpec;
import org.apache.beam.model.pipeline.v1.RunnerApi.WindowIntoPayload;
Expand All @@ -34,6 +33,7 @@
import org.apache.beam.sdk.transforms.windowing.Window.Assign;
import org.apache.beam.sdk.transforms.windowing.WindowFn;
import org.apache.beam.vendor.grpc.v1p26p0.com.google.protobuf.InvalidProtocolBufferException;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Utility methods for translating a {@link Window.Assign} to and from {@link RunnerApi}
Expand Down
Expand Up @@ -29,7 +29,6 @@
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi;
import org.apache.beam.model.pipeline.v1.RunnerApi.Components;
import org.apache.beam.model.pipeline.v1.RunnerApi.FunctionSpec;
Expand All @@ -41,6 +40,7 @@
import org.apache.beam.runners.core.construction.graph.PipelineNode.PTransformNode;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.HashMultimap;
import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.Multimap;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* Utilities to insert synthetic {@link PCollectionNode PCollections} for {@link PCollection
Expand Down Expand Up @@ -340,10 +340,8 @@ public static StageOrTransform transform(PTransformNode transform) {
return new AutoValue_OutputDeduplicator_StageOrTransform(null, transform);
}

@Nullable
abstract ExecutableStage getStage();
abstract @Nullable ExecutableStage getStage();

@Nullable
abstract PTransformNode getTransform();
abstract @Nullable PTransformNode getTransform();
}
}
Expand Up @@ -21,13 +21,13 @@

import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import org.apache.beam.model.pipeline.v1.RunnerApi.Components;
import org.apache.beam.model.pipeline.v1.RunnerApi.ComponentsOrBuilder;
import org.apache.beam.model.pipeline.v1.RunnerApi.MessageWithComponents;
import org.apache.beam.model.pipeline.v1.RunnerApi.PTransform;
import org.apache.beam.model.pipeline.v1.RunnerApi.Pipeline;
import org.apache.beam.sdk.runners.PTransformOverride;
import org.checkerframework.checker.nullness.qual.Nullable;

/**
* A way to apply a Proto-based {@link PTransformOverride}.
Expand Down
Expand Up @@ -21,4 +21,4 @@
package org.apache.beam.runners.core.construction.graph;

import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
import edu.umd.cs.findbugs.annotations.NonNull;
import org.checkerframework.checker.nullness.qual.NonNull;
Expand Up @@ -21,4 +21,4 @@
package org.apache.beam.runners.core.construction;

import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
import edu.umd.cs.findbugs.annotations.NonNull;
import org.checkerframework.checker.nullness.qual.NonNull;

0 comments on commit ecedd3e

Please sign in to comment.