From db62cc72f128bbda2a81c3a7fead203e9efed30f Mon Sep 17 00:00:00 2001 From: Brian Hulette Date: Thu, 6 May 2021 13:41:44 -0700 Subject: [PATCH] [BEAM-12258] Make resourceHints non-nullable (#14736) --- .../transforms/resourcehints/ResourceHints.java | 5 +---- .../resourcehints/ResourceHintsOptions.java | 14 +++++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHints.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHints.java index 07697826e1535..aeecc53514da4 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHints.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHints.java @@ -85,10 +85,7 @@ public static ResourceHints create() { public static ResourceHints fromOptions(PipelineOptions options) { ResourceHintsOptions resourceHintsOptions = options.as(ResourceHintsOptions.class); ResourceHints result = create(); - @Nullable List hints = resourceHintsOptions.getResourceHints(); - if (hints == null) { - return result; - } + List hints = resourceHintsOptions.getResourceHints(); Splitter splitter = Splitter.on('=').limit(2); for (String hint : hints) { List parts = splitter.splitToList(hint); diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHintsOptions.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHintsOptions.java index 2b18feb2755c6..f63ee2c71a26c 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHintsOptions.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/resourcehints/ResourceHintsOptions.java @@ -19,19 +19,27 @@ import com.google.auto.service.AutoService; import java.util.List; +import org.apache.beam.sdk.options.Default; +import org.apache.beam.sdk.options.DefaultValueFactory; import org.apache.beam.sdk.options.Description; import org.apache.beam.sdk.options.PipelineOptions; import org.apache.beam.sdk.options.PipelineOptionsRegistrar; import org.apache.beam.vendor.guava.v26_0_jre.com.google.common.collect.ImmutableList; -import org.checkerframework.checker.nullness.qual.Nullable; /** Options that are used to control configuration of the remote environment. */ public interface ResourceHintsOptions extends PipelineOptions { + class EmptyListDefault implements DefaultValueFactory { + @Override + public List create(PipelineOptions options) { + return ImmutableList.of(); + } + } + @Description("Resource hints used for all transform execution environments.") - @Nullable + @Default.InstanceFactory(EmptyListDefault.class) List getResourceHints(); - void setResourceHints(@Nullable List value); + void setResourceHints(List value); /** Register the {@link ResourceHintsOptions}. */ @AutoService(PipelineOptionsRegistrar.class)