NonNull by default in sdk/coders

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

Branch: refs/heads/master
Commit: e33c514cd9eba32af59c47ca2d49cc0144d0f186
Parents: 4502521
Author: Kenneth Knowles <[email protected]>
Authored: Thu Oct 19 19:42:44 2017 -0700
Committer: Kenneth Knowles <[email protected]>
Committed: Fri Oct 20 12:43:38 2017 -0700

----------------------------------------------------------------------
 .../org/apache/beam/sdk/coders/DefaultCoder.java   | 17 ++++++++++-------
 .../apache/beam/sdk/coders/LengthPrefixCoder.java  |  3 +--
 .../apache/beam/sdk/coders/SerializableCoder.java  |  5 ++++-
 .../apache/beam/sdk/coders/StructuredCoder.java    |  8 +-------
 .../java/org/apache/beam/sdk/coders/VoidCoder.java |  2 ++
 .../org/apache/beam/sdk/coders/package-info.java   |  4 ++++
 6 files changed, 22 insertions(+), 17 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DefaultCoder.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DefaultCoder.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DefaultCoder.java
index 7eb2ecb..57ab122 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DefaultCoder.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/DefaultCoder.java
@@ -26,6 +26,7 @@ import java.lang.annotation.Target;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.List;
+import javax.annotation.CheckForNull;
 import org.apache.beam.sdk.values.PCollection;
 import org.apache.beam.sdk.values.TypeDescriptor;
 import org.slf4j.Logger;
@@ -49,6 +50,7 @@ import org.slf4j.LoggerFactory;
 @Target(ElementType.TYPE)
 @SuppressWarnings("rawtypes")
 public @interface DefaultCoder {
+  @CheckForNull
   Class<? extends Coder> value();
 
   /**
@@ -86,22 +88,23 @@ public @interface DefaultCoder {
                   clazz.getName()));
         }
 
-        if (defaultAnnotation.value() == null) {
+        Class<? extends Coder> defaultAnnotationValue = 
defaultAnnotation.value();
+        if (defaultAnnotationValue == null) {
           throw new CannotProvideCoderException(
-              String.format("Class %s has a @DefaultCoder annotation with a 
null value.",
-                  clazz.getName()));
+              String.format(
+                  "Class %s has a @DefaultCoder annotation with a null 
value.", clazz.getName()));
         }
 
         LOG.debug("DefaultCoder annotation found for {} with value {}",
-            clazz, defaultAnnotation.value());
+            clazz, defaultAnnotationValue);
 
         Method coderProviderMethod;
         try {
-          coderProviderMethod = 
defaultAnnotation.value().getMethod("getCoderProvider");
+          coderProviderMethod = 
defaultAnnotationValue.getMethod("getCoderProvider");
         } catch (NoSuchMethodException e) {
           throw new CannotProvideCoderException(String.format(
               "Unable to find 'public static CoderProvider getCoderProvider()' 
on %s",
-              defaultAnnotation.value()),
+              defaultAnnotationValue),
               e);
         }
 
@@ -115,7 +118,7 @@ public @interface DefaultCoder {
             | ExceptionInInitializerError e) {
           throw new CannotProvideCoderException(String.format(
               "Unable to invoke 'public static CoderProvider 
getCoderProvider()' on %s",
-              defaultAnnotation.value()),
+              defaultAnnotationValue),
               e);
         }
         return coderProvider.coderFor(typeDescriptor, componentCoders);

http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/LengthPrefixCoder.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/LengthPrefixCoder.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/LengthPrefixCoder.java
index b24f66d..9466ad1 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/LengthPrefixCoder.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/LengthPrefixCoder.java
@@ -26,7 +26,6 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.util.List;
-import javax.annotation.Nullable;
 import org.apache.beam.sdk.util.VarInt;
 
 /**
@@ -126,7 +125,7 @@ public class LengthPrefixCoder<T> extends 
StructuredCoder<T> {
    * {@inheritDoc}
    */
   @Override
-  public boolean isRegisterByteSizeObserverCheap(@Nullable T value) {
+  public boolean isRegisterByteSizeObserverCheap(T value) {
     return valueCoder.isRegisterByteSizeObserverCheap(value);
   }
 }

http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
index 9204942..1330125 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/SerializableCoder.java
@@ -25,6 +25,7 @@ import java.io.ObjectOutputStream;
 import java.io.OutputStream;
 import java.io.Serializable;
 import java.util.List;
+import javax.annotation.Nullable;
 import org.apache.beam.sdk.values.TypeDescriptor;
 
 /**
@@ -105,7 +106,9 @@ public class SerializableCoder<T extends Serializable> 
extends CustomCoder<T> {
   }
 
   private final Class<T> type;
-  private transient TypeDescriptor<T> typeDescriptor;
+
+  /** Access via {@link #getEncodedTypeDescriptor()}. */
+  @Nullable private transient TypeDescriptor<T> typeDescriptor;
 
   protected SerializableCoder(Class<T> type, TypeDescriptor<T> typeDescriptor) 
{
     this.type = type;

http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java
index bd964f4..fe17e8b 100644
--- 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java
+++ 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/StructuredCoder.java
@@ -17,7 +17,6 @@
  */
 package org.apache.beam.sdk.coders;
 
-import java.util.Collections;
 import java.util.List;
 
 /**
@@ -46,12 +45,7 @@ public abstract class StructuredCoder<T> extends Coder<T> {
    * <p>The default components will be equal to the value returned by {@link 
#getCoderArguments()}.
    */
   public List<? extends Coder<?>> getComponents() {
-    List<? extends Coder<?>> coderArguments = getCoderArguments();
-    if (coderArguments == null) {
-      return Collections.emptyList();
-    } else {
-      return coderArguments;
-    }
+    return getCoderArguments();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/VoidCoder.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/VoidCoder.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/VoidCoder.java
index 0e2236e..82b63f0 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/VoidCoder.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/VoidCoder.java
@@ -19,6 +19,7 @@ package org.apache.beam.sdk.coders;
 
 import java.io.InputStream;
 import java.io.OutputStream;
+import javax.annotation.Nullable;
 import org.apache.beam.sdk.values.TypeDescriptor;
 
 /**
@@ -44,6 +45,7 @@ public class VoidCoder extends AtomicCoder<Void> {
   }
 
   @Override
+  @Nullable
   public Void decode(InputStream inStream) {
     // Nothing to read!
     return null;

http://git-wip-us.apache.org/repos/asf/beam/blob/e33c514c/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/package-info.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/package-info.java 
b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/package-info.java
index 5693077..9b61223 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/package-info.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/coders/package-info.java
@@ -42,4 +42,8 @@
  * types.
  *
  */
+@DefaultAnnotation(NonNull.class)
 package org.apache.beam.sdk.coders;
+
+import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
+import edu.umd.cs.findbugs.annotations.NonNull;

Reply via email to