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 2017/10/28 16:18:37 UTC
[5/7] beam git commit: NonNull by default in sdk/transforms/reflect
NonNull by default in sdk/transforms/reflect
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/f9e73dbb
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/f9e73dbb
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/f9e73dbb
Branch: refs/heads/master
Commit: f9e73dbb36f6632faea4c4bc445c47e2146abfba
Parents: d8353b7
Author: Kenneth Knowles <kl...@google.com>
Authored: Mon Oct 23 19:23:41 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Sat Oct 28 08:42:30 2017 -0700
----------------------------------------------------------------------
.../reflect/ByteBuddyDoFnInvokerFactory.java | 3 +-
.../sdk/transforms/reflect/DoFnInvoker.java | 50 ++++++++++++++++----
.../sdk/transforms/reflect/DoFnSignatures.java | 1 +
.../sdk/transforms/reflect/package-info.java | 3 ++
.../transforms/reflect/DoFnInvokersTest.java | 12 ++++-
5 files changed, 57 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/beam/blob/f9e73dbb/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java
index cf96c9b..8ce3348 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/ByteBuddyDoFnInvokerFactory.java
@@ -394,7 +394,8 @@ public class ByteBuddyDoFnInvokerFactory implements DoFnInvokerFactory {
/** Whether the target method returns non-void. */
private final boolean targetHasReturn;
- protected FieldDescription delegateField;
+ /** Starts {@code null}, initialized by {@link #prepare(InstrumentedType)}. */
+ @Nullable protected FieldDescription delegateField;
private final TypeDescription doFnType;
http://git-wip-us.apache.org/repos/asf/beam/blob/f9e73dbb/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java
index 8b41fee..ec2bf34 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnInvoker.java
@@ -133,51 +133,81 @@ public interface DoFnInvoker<InputT, OutputT> {
Timer timer(String timerId);
}
- /** For testing only, this {@link ArgumentProvider} returns {@code null} for all parameters. */
+ /**
+ * For testing only, this {@link ArgumentProvider} throws {@link UnsupportedOperationException}
+ * for all parameters.
+ */
class FakeArgumentProvider<InputT, OutputT> implements ArgumentProvider<InputT, OutputT> {
@Override
public DoFn<InputT, OutputT>.ProcessContext processContext(DoFn<InputT, OutputT> doFn) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public BoundedWindow window() {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public PipelineOptions pipelineOptions() {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public DoFn<InputT, OutputT>.StartBundleContext startBundleContext(DoFn<InputT, OutputT> doFn) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public DoFn<InputT, OutputT>.FinishBundleContext finishBundleContext(
DoFn<InputT, OutputT> doFn) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public DoFn<InputT, OutputT>.OnTimerContext onTimerContext(DoFn<InputT, OutputT> doFn) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public State state(String stateId) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
@Override
public Timer timer(String timerId) {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
public RestrictionTracker<?> restrictionTracker() {
- return null;
+ throw new UnsupportedOperationException(
+ String.format(
+ "Should never call non-overridden methods of %s",
+ FakeArgumentProvider.class.getSimpleName()));
}
}
}
http://git-wip-us.apache.org/repos/asf/beam/blob/f9e73dbb/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java
index de57c3b..c54c44f 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/DoFnSignatures.java
@@ -1296,6 +1296,7 @@ public class DoFnSignatures {
return ImmutableMap.copyOf(declarations);
}
+ @Nullable
private static Method findAnnotatedMethod(
ErrorReporter errors, Class<? extends Annotation> anno, Class<?> fnClazz, boolean required) {
Collection<Method> matches = declaredMethodsWithAnnotation(anno, fnClazz, DoFn.class);
http://git-wip-us.apache.org/repos/asf/beam/blob/f9e73dbb/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/package-info.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/package-info.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/package-info.java
index fe2f6b1..48b128c 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/package-info.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/reflect/package-info.java
@@ -22,5 +22,8 @@
* and creating {@link org.apache.beam.sdk.transforms.reflect.DoFnSignature}'s and
* {@link org.apache.beam.sdk.transforms.reflect.DoFnInvoker}'s from them.
*/
+@DefaultAnnotation(NonNull.class)
package org.apache.beam.sdk.transforms.reflect;
+import edu.umd.cs.findbugs.annotations.DefaultAnnotation;
+import edu.umd.cs.findbugs.annotations.NonNull;
http://git-wip-us.apache.org/repos/asf/beam/blob/f9e73dbb/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/reflect/DoFnInvokersTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/reflect/DoFnInvokersTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/reflect/DoFnInvokersTest.java
index 2098c66..72883ff 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/reflect/DoFnInvokersTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/transforms/reflect/DoFnInvokersTest.java
@@ -655,7 +655,17 @@ public class DoFnInvokersTest {
return null;
}
})
- .invokeProcessElement(new FakeArgumentProvider<Integer, Integer>());
+ .invokeProcessElement(new FakeArgumentProvider<Integer, Integer>() {
+ @Override
+ public DoFn.ProcessContext processContext(DoFn<Integer, Integer> doFn) {
+ return null; // will not be touched
+ }
+
+ @Override
+ public RestrictionTracker<?> restrictionTracker() {
+ return null; // will not be touched
+ }
+ });
}
@Test