Do not crash when RawPTransform has null spec

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

Branch: refs/heads/master
Commit: d879d2791e51dee5baddbdbe51f757e44b55a109
Parents: acbbf1f
Author: Kenneth Knowles <k...@apache.org>
Authored: Thu Oct 19 12:45:43 2017 -0700
Committer: Kenneth Knowles <k...@apache.org>
Committed: Thu Oct 19 14:28:05 2017 -0700

----------------------------------------------------------------------
 .../runners/core/construction/PTransformTranslation.java     | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/d879d279/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java
----------------------------------------------------------------------
diff --git 
a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java
 
b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java
index 8e6829b..a3a5a1f 100644
--- 
a/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java
+++ 
b/runners/core-construction-java/src/main/java/org/apache/beam/runners/core/construction/PTransformTranslation.java
@@ -179,7 +179,13 @@ public class PTransformTranslation {
     if (transform instanceof RawPTransform) {
       // The raw transform was parsed in the context of other components; this 
puts it in the
       // context of our current serialization
-      transformBuilder.setSpec(((RawPTransform<?, ?>) 
transform).migrate(components));
+      FunctionSpec spec = ((RawPTransform<?, ?>) 
transform).migrate(components);
+
+      // A composite transform is permitted to have a null spec. There are 
also some pseudo-
+      // primitives not yet supported by the portability framework that have 
null specs
+      if (spec != null) {
+        transformBuilder.setSpec(spec);
+      }
     } else if (KNOWN_PAYLOAD_TRANSLATORS.containsKey(transform.getClass())) {
       transformBuilder.setSpec(
           KNOWN_PAYLOAD_TRANSLATORS

Reply via email to