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() {