Repository: beam Updated Branches: refs/heads/master 869465edd -> de9d89c1e
Add getElementCoders to UnionCoder This is an explicit method on UnionCoder that is completely unrelated to the serialization and deserialization of the Coder. Project: http://git-wip-us.apache.org/repos/asf/beam/repo Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/b5673864 Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/b5673864 Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/b5673864 Branch: refs/heads/master Commit: b5673864b848c81621a0f60cb87782a33ec09557 Parents: 869465e Author: Thomas Groh <[email protected]> Authored: Tue Apr 25 17:39:38 2017 -0700 Committer: Luke Cwik <[email protected]> Committed: Wed Apr 26 13:02:48 2017 -0700 ---------------------------------------------------------------------- .../org/apache/beam/sdk/transforms/join/CoGbkResult.java | 2 +- .../org/apache/beam/sdk/transforms/join/UnionCoder.java | 4 ++++ .../apache/beam/sdk/transforms/join/UnionCoderTest.java | 11 +++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/beam/blob/b5673864/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/CoGbkResult.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/CoGbkResult.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/CoGbkResult.java index 83e178e..6c62cbe 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/CoGbkResult.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/CoGbkResult.java @@ -269,7 +269,7 @@ public class CoGbkResult { @SuppressWarnings("rawtypes") private IterableCoder tagListCoder(int unionTag) { - return IterableCoder.of(unionCoder.getComponents().get(unionTag)); + return IterableCoder.of(unionCoder.getElementCoders().get(unionTag)); } @Override http://git-wip-us.apache.org/repos/asf/beam/blob/b5673864/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/UnionCoder.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/UnionCoder.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/UnionCoder.java index 2beff57..f411cd1 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/UnionCoder.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/join/UnionCoder.java @@ -91,6 +91,10 @@ public class UnionCoder extends CustomCoder<RawUnionValue> { return elementCoders; } + public List<? extends Coder<?>> getElementCoders() { + return elementCoders; + } + /** * Since this coder uses elementCoders.get(index) and coders that are known to run in constant * time, we defer the return value to that coder. http://git-wip-us.apache.org/repos/asf/beam/blob/b5673864/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/UnionCoderTest.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/UnionCoderTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/UnionCoderTest.java index fe49495..8c8c3f9 100644 --- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/UnionCoderTest.java +++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/join/UnionCoderTest.java @@ -17,11 +17,14 @@ */ package org.apache.beam.sdk.transforms.join; +import static org.junit.Assert.assertThat; + import com.google.common.collect.ImmutableList; import org.apache.beam.sdk.coders.Coder; import org.apache.beam.sdk.coders.DoubleCoder; import org.apache.beam.sdk.coders.StringUtf8Coder; import org.apache.beam.sdk.testing.CoderProperties; +import org.hamcrest.Matchers; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -31,6 +34,14 @@ import org.junit.runners.JUnit4; */ @RunWith(JUnit4.class) public class UnionCoderTest { + @Test + public void testGetElementCoders() { + UnionCoder unionCoder = + UnionCoder.of(ImmutableList.<Coder<?>>of(StringUtf8Coder.of(), DoubleCoder.of())); + assertThat( + unionCoder.getElementCoders().get(0), Matchers.<Coder<?>>equalTo(StringUtf8Coder.of())); + assertThat(unionCoder.getElementCoders().get(1), Matchers.<Coder<?>>equalTo(DoubleCoder.of())); + } @Test public void testCoderIsSerializable() {
