You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by ke...@apache.org on 2016/07/27 17:04:15 UTC

[1/2] incubator-beam git commit: [BEAM-328] uses SerializableCoder for `T extends Serializable`

Repository: incubator-beam
Updated Branches:
  refs/heads/master e8695a1b6 -> b1f36df2d


[BEAM-328] uses SerializableCoder for `T extends Serializable`


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

Branch: refs/heads/master
Commit: 7bbac011afd61dc535de298675ef42cb9a3abb56
Parents: 68850b4
Author: manuzhang <ow...@gmail.com>
Authored: Thu Jun 16 12:09:22 2016 +0800
Committer: manuzhang <ow...@gmail.com>
Committed: Wed Jul 27 06:14:32 2016 +0800

----------------------------------------------------------------------
 .../org/apache/beam/sdk/coders/CoderRegistry.java | 10 ++++++----
 .../apache/beam/sdk/coders/CoderRegistryTest.java | 18 +++++++++++++++---
 .../apache/beam/sdk/values/TypedPValueTest.java   | 16 ++++++++++++----
 .../sdk/transforms/RemoveDuplicatesJava8Test.java | 10 ++++++++--
 .../beam/sdk/transforms/WithKeysJava8Test.java    | 11 +++++++++--
 5 files changed, 50 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/7bbac011/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java
index 9c3fabe..50e4422 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/CoderRegistry.java
@@ -163,9 +163,9 @@ public class CoderRegistry implements CoderProvider {
    */
   public <T> void registerCoder(Class<T> rawClazz, Coder<T> coder) {
     checkArgument(
-      rawClazz.getTypeParameters().length == 0,
-      "CoderRegistry.registerCoder(Class<T>, Coder<T>) may not be used "
-      + "with unspecialized generic classes");
+        rawClazz.getTypeParameters().length == 0,
+        "CoderRegistry.registerCoder(Class<T>, Coder<T>) may not be used "
+            + "with unspecialized generic classes");
 
     CoderFactory factory = CoderFactories.forCoder(coder);
     registerCoder(rawClazz, factory);
@@ -720,7 +720,9 @@ public class CoderRegistry implements CoderProvider {
       return getDefaultCoder(clazz);
     } else if (type instanceof ParameterizedType) {
       return getDefaultCoder((ParameterizedType) type, typeCoderBindings);
-    } else if (type instanceof TypeVariable || type instanceof WildcardType) {
+    } else if (type instanceof TypeVariable) {
+      return getDefaultCoder(TypeDescriptor.of(type).getRawType());
+    } else if (type instanceof WildcardType) {
       // No default coder for an unknown generic type.
       throw new CannotProvideCoderException(
           String.format("Cannot provide a coder for type variable %s"

http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/7bbac011/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/CoderRegistryTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/CoderRegistryTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/CoderRegistryTest.java
index 37f0e10..817ea20 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/CoderRegistryTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/coders/CoderRegistryTest.java
@@ -388,15 +388,27 @@ public class CoderRegistryTest {
 
     thrown.expect(CannotProvideCoderException.class);
     thrown.expectMessage(allOf(
-        containsString("TestGenericT"),
-        containsString("erasure"),
-        containsString("org.apache.beam.sdk.coders.CoderRegistryTest$TestGenericClass")));
+        containsString("No CoderFactory has been registered"),
+        containsString("does not have a @DefaultCoder annotation"),
+        containsString("does not implement Serializable")));
     registry.getDefaultCoder(TypeDescriptor.of(
         TestGenericClass.class.getTypeParameters()[0]));
   }
 
   private static class TestGenericClass<TestGenericT> { }
 
+  @Test
+  public void testSerializableTypeVariableDefaultCoder() throws Exception {
+    CoderRegistry registry = new CoderRegistry();
+
+    TypeDescriptor type = TypeDescriptor.of(
+        TestSerializableGenericClass.class.getTypeParameters()[0]);
+    assertEquals(registry.getDefaultCoder(type),
+        SerializableCoder.of(type));
+  }
+
+  private static class TestSerializableGenericClass<TestGenericT extends Serializable> {}
+
   /**
    * In-context test that assures the functionality tested in
    * {@link #testDefaultCoderAnnotationGeneric} is invoked in the right ways.

http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/7bbac011/sdks/java/core/src/test/java/org/apache/beam/sdk/values/TypedPValueTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/values/TypedPValueTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/values/TypedPValueTest.java
index 0b7018a..ba5dffb 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/values/TypedPValueTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/values/TypedPValueTest.java
@@ -76,8 +76,12 @@ public class TypedPValueTest {
 
     thrown.expect(IllegalStateException.class);
     thrown.expectMessage("No Coder has been manually specified");
-    thrown.expectMessage("erasure");
-    thrown.expectMessage("see TupleTag Javadoc");
+    thrown.expectMessage(
+        containsString("Building a Coder using a registered CoderFactory failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the @DefaultCoder annotation failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the fallback CoderProvider failed"));
 
     tuple.get(untypedSideOutputTag).getCoder();
   }
@@ -91,8 +95,12 @@ public class TypedPValueTest {
 
     thrown.expect(IllegalStateException.class);
     thrown.expectMessage("No Coder has been manually specified");
-    thrown.expectMessage("erasure");
-    thrown.expectMessage("see TupleTag Javadoc");
+    thrown.expectMessage(
+        containsString("Building a Coder using a registered CoderFactory failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the @DefaultCoder annotation failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the fallback CoderProvider failed"));
 
     tuple.get(untypedSideOutputTag).getCoder();
   }

http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/7bbac011/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/RemoveDuplicatesJava8Test.java
----------------------------------------------------------------------
diff --git a/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/RemoveDuplicatesJava8Test.java b/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/RemoveDuplicatesJava8Test.java
index 9318229..aa4c015 100644
--- a/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/RemoveDuplicatesJava8Test.java
+++ b/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/RemoveDuplicatesJava8Test.java
@@ -18,6 +18,7 @@
 package org.apache.beam.sdk.transforms;
 
 import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.hasItem;
 import static org.hamcrest.Matchers.not;
 import static org.junit.Assert.assertThat;
@@ -90,8 +91,13 @@ public class RemoveDuplicatesJava8Test {
 
     thrown.expect(IllegalStateException.class);
     thrown.expectMessage("Unable to return a default Coder for RemoveRepresentativeDupes");
-    thrown.expectMessage("Cannot provide a coder for type variable K");
-    thrown.expectMessage("the actual type is unknown due to erasure.");
+    thrown.expectMessage("No Coder has been manually specified");
+    thrown.expectMessage(
+        containsString("Building a Coder using a registered CoderFactory failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the @DefaultCoder annotation failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the fallback CoderProvider failed"));
 
     // Thrown when applying a transform to the internal WithKeys that withRepresentativeValueFn is
     // implemented with

http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/7bbac011/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/WithKeysJava8Test.java
----------------------------------------------------------------------
diff --git a/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/WithKeysJava8Test.java b/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/WithKeysJava8Test.java
index 1ffb147..a89e281 100644
--- a/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/WithKeysJava8Test.java
+++ b/sdks/java/java8tests/src/test/java/org/apache/beam/sdk/transforms/WithKeysJava8Test.java
@@ -17,6 +17,8 @@
  */
 package org.apache.beam.sdk.transforms;
 
+import static org.hamcrest.Matchers.containsString;
+
 import org.apache.beam.sdk.testing.PAssert;
 import org.apache.beam.sdk.testing.RunnableOnService;
 import org.apache.beam.sdk.testing.TestPipeline;
@@ -66,8 +68,13 @@ public class WithKeysJava8Test {
 
     thrown.expect(IllegalStateException.class);
     thrown.expectMessage("Unable to return a default Coder for ApplyKeysWithWithKeys");
-    thrown.expectMessage("Cannot provide a coder for type variable K");
-    thrown.expectMessage("the actual type is unknown due to erasure.");
+    thrown.expectMessage("No Coder has been manually specified");
+    thrown.expectMessage(
+        containsString("Building a Coder using a registered CoderFactory failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the @DefaultCoder annotation failed"));
+    thrown.expectMessage(
+        containsString("Building a Coder from the fallback CoderProvider failed"));
 
     p.run();
   }


[2/2] incubator-beam git commit: This closes #663

Posted by ke...@apache.org.
This closes #663


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

Branch: refs/heads/master
Commit: b1f36df2d185de553edc8b22bce237ad87b1b2bd
Parents: e8695a1 7bbac01
Author: Kenneth Knowles <kl...@google.com>
Authored: Wed Jul 27 10:03:53 2016 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Wed Jul 27 10:03:53 2016 -0700

----------------------------------------------------------------------
 .../org/apache/beam/sdk/coders/CoderRegistry.java | 10 ++++++----
 .../apache/beam/sdk/coders/CoderRegistryTest.java | 18 +++++++++++++++---
 .../apache/beam/sdk/values/TypedPValueTest.java   | 16 ++++++++++++----
 .../sdk/transforms/RemoveDuplicatesJava8Test.java | 10 ++++++++--
 .../beam/sdk/transforms/WithKeysJava8Test.java    | 11 +++++++++--
 5 files changed, 50 insertions(+), 15 deletions(-)
----------------------------------------------------------------------