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 <[email protected]> Authored: Thu Mar 2 20:05:01 2017 -0800 Committer: Thomas Groh <[email protected]> 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() {
