You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by tg...@apache.org on 2017/03/14 22:54:58 UTC

[04/10] beam git commit: Makes NameUtils recognize AutoValue classes

Makes NameUtils recognize AutoValue classes


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/d6b3e112
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/d6b3e112
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/d6b3e112

Branch: refs/heads/master
Commit: d6b3e112870b095d96f6f8d6bc165b88eb735952
Parents: 7d1f440
Author: Eugene Kirpichov <ki...@google.com>
Authored: Thu Mar 2 20:05:01 2017 -0800
Committer: Thomas Groh <tg...@google.com>
Committed: Tue Mar 14 15:54:27 2017 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/beam/sdk/util/NameUtils.java   |  5 +++++
 .../java/org/apache/beam/sdk/util/NameUtilsTest.java    | 12 ++++++++++++
 2 files changed, 17 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/d6b3e112/sdks/java/core/src/main/java/org/apache/beam/sdk/util/NameUtils.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/NameUtils.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/NameUtils.java
index c67ccca..3f3054a 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/util/NameUtils.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/util/NameUtils.java
@@ -151,6 +151,8 @@ public class NameUtils {
    * <ul>
    *   <li>1. It keeps the outer classes names.
    *   <li>2. It removes the common transform inner class: "Bound".
+   *   <li>3. For classes generated by AutoValue, whose names start with AutoValue_,
+   *     it delegates to the (parent) class declared in the user's source code.
    * </ul>
    *
    * <p>Examples:
@@ -161,6 +163,9 @@ public class NameUtils {
    */
   public static String approximatePTransformName(Class<?> clazz) {
     checkArgument(PTransform.class.isAssignableFrom(clazz));
+    if (clazz.getSimpleName().startsWith("AutoValue_")) {
+      return approximatePTransformName(clazz.getSuperclass());
+    }
     return approximateSimpleName(clazz, /* dropOuterClassNames */ false)
         .replaceFirst("\\.Bound$", "");
   }

http://git-wip-us.apache.org/repos/asf/beam/blob/d6b3e112/sdks/java/core/src/test/java/org/apache/beam/sdk/util/NameUtilsTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/NameUtilsTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/NameUtilsTest.java
index 6848ea4..c685a63 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/util/NameUtilsTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/util/NameUtilsTest.java
@@ -20,6 +20,7 @@ package org.apache.beam.sdk.util;
 
 import static org.junit.Assert.assertEquals;
 
+import com.google.auto.value.AutoValue;
 import org.apache.beam.sdk.io.TextIO;
 import org.apache.beam.sdk.transforms.PTransform;
 import org.apache.beam.sdk.util.NameUtils.NameOverride;
@@ -133,9 +134,20 @@ public class NameUtilsTest {
     assertEquals(
         "NameUtilsTest.EmbeddedPTransform",
         NameUtils.approximatePTransformName(transform.getBound().getClass()));
+    assertEquals(
+        "NameUtilsTest.SomeTransform",
+        NameUtils.approximatePTransformName(AutoValue_NameUtilsTest_SomeTransform.class));
     assertEquals("TextIO.Write", NameUtils.approximatePTransformName(TextIO.Write.Bound.class));
   }
 
+  @AutoValue
+  abstract static class SomeTransform extends PTransform<PBegin, PDone> {
+    @Override
+    public PDone expand(PBegin input) {
+      return null;
+    }
+  }
+
   @Test
   public void testPTransformNameWithAnonOuterClass() throws Exception {
     AnonymousClass anonymousClassObj = new AnonymousClass() {