Repository: incubator-beam Updated Branches: refs/heads/master 4ce85ed94 -> 8d127beb8
Add a test demonstrating how to use ValueProvider with non-serializable data Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/74682c92 Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/74682c92 Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/74682c92 Branch: refs/heads/master Commit: 74682c92d3d2bc5cd5385812ce985a8a75ee4899 Parents: 4ce85ed Author: Sam McVeety <s...@google.com> Authored: Tue Nov 1 17:58:16 2016 -0700 Committer: Dan Halperin <dhalp...@google.com> Committed: Tue Nov 29 12:22:00 2016 -0800 ---------------------------------------------------------------------- .../apache/beam/sdk/options/ValueProvider.java | 2 +- .../beam/sdk/options/ValueProviderTest.java | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/74682c92/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java index 2f52ad4..3a2e7ed 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java @@ -51,7 +51,7 @@ import org.apache.beam.sdk.transforms.SerializableFunction; */ @JsonSerialize(using = ValueProvider.Serializer.class) @JsonDeserialize(using = ValueProvider.Deserializer.class) -public interface ValueProvider<T> { +public interface ValueProvider<T> extends Serializable { /** * Return the value wrapped by this {@link ValueProvider}. */ http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/74682c92/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java index be0f076..31532b9 100644 --- a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java +++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java @@ -29,6 +29,7 @@ import org.apache.beam.sdk.options.ValueProvider.NestedValueProvider; import org.apache.beam.sdk.options.ValueProvider.RuntimeValueProvider; import org.apache.beam.sdk.options.ValueProvider.StaticValueProvider; import org.apache.beam.sdk.transforms.SerializableFunction; +import org.apache.beam.sdk.util.SerializableUtils; import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -250,4 +251,21 @@ public class ValueProviderTest { expectedException.expectMessage("Not called from a runtime context"); nvp.get(); } + + private static class NonSerializable {} + + private static class NonSerializableTranslator + implements SerializableFunction<String, NonSerializable> { + @Override + public NonSerializable apply(String from) { + return new NonSerializable(); + } + } + + @Test + public void testNestedValueProviderSerialize() throws Exception { + ValueProvider<NonSerializable> nvp = NestedValueProvider.of( + StaticValueProvider.of("foo"), new NonSerializableTranslator()); + SerializableUtils.ensureSerializable(nvp); + } }