You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by sc...@apache.org on 2019/01/22 21:32:42 UTC

[beam] branch master updated: Add named variant of PTransform#compose()

This is an automated email from the ASF dual-hosted git repository.

scott pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git


The following commit(s) were added to refs/heads/master by this push:
     new 65c8d51  Add named variant of PTransform#compose()
     new 1991965  Merge pull request #7437: [BEAM-6386] Add named variant of PTransform::compose()
65c8d51 is described below

commit 65c8d510d6e867c7da1320405c1f4e5e18d9c90d
Author: Jeff Klukas <je...@klukas.net>
AuthorDate: Tue Jan 8 13:16:13 2019 -0500

    Add named variant of PTransform#compose()
---
 .../main/java/org/apache/beam/sdk/transforms/PTransform.java | 12 ++++++++++++
 .../java/org/apache/beam/sdk/transforms/PTransformTest.java  |  8 ++++++++
 2 files changed, 20 insertions(+)

diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/PTransform.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/PTransform.java
index 49c40f7..0c6b4d2 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/PTransform.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/PTransform.java
@@ -319,4 +319,16 @@ public abstract class PTransform<InputT extends PInput, OutputT extends POutput>
       }
     };
   }
+
+  /** Like {@link #compose(SerializableFunction)}, but with a custom name. */
+  @Experimental
+  public static <InputT extends PInput, OutputT extends POutput>
+      PTransform<InputT, OutputT> compose(String name, SerializableFunction<InputT, OutputT> fn) {
+    return new PTransform<InputT, OutputT>(name) {
+      @Override
+      public OutputT expand(InputT input) {
+        return fn.apply(input);
+      }
+    };
+  }
 }
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/PTransformTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/PTransformTest.java
index 35d18d9..ae63d5b 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/PTransformTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/PTransformTest.java
@@ -19,6 +19,7 @@ package org.apache.beam.sdk.transforms;
 
 import static org.apache.beam.sdk.values.TypeDescriptors.integers;
 import static org.hamcrest.Matchers.empty;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
 
 import java.io.Serializable;
@@ -54,6 +55,13 @@ public class PTransformTest implements Serializable {
   }
 
   @Test
+  public void testNamedCompose() {
+    PTransform<PCollection<Integer>, PCollection<Integer>> composed =
+        PTransform.compose("MyName", (PCollection<Integer> numbers) -> numbers);
+    assertEquals("MyName", composed.name);
+  }
+
+  @Test
   @Category(NeedsRunner.class)
   public void testComposeBasicSerializableFunction() throws Exception {
     PCollection<Integer> output =