Repository: incubator-beam Updated Branches: refs/heads/master a5d343b23 -> 65db44ce6
Improve the inheritance API for OutputTimeFn Previously, OutputTimeFn.Defaults enforced that any subclass *could not* return true for dependsOnlyOnWindow(), to encourage such subclasses to extend OutputTimeFn.DependsOnlyOnWindow. Unfortunately, this is at odds with compositional style, where all methods need to be forwarded. Further, OutputTimeFn itself was only instantiable via one of these subclasses, so there was no way to implement a proper forwarding. After this change, the API from OutputTimeFn to its subclasses is that of a simpler abstract superclass, and Defaults no longer restricts its subclasses. Note that we intend to remove OutputTimeFn as a userland function anyhow, replacing it with an enum and OutputTimeFn implementations in runners/core, so this is low risk. It is just to unblock some current work. Project: http://git-wip-us.apache.org/repos/asf/incubator-beam/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-beam/commit/a20786d4 Tree: http://git-wip-us.apache.org/repos/asf/incubator-beam/tree/a20786d4 Diff: http://git-wip-us.apache.org/repos/asf/incubator-beam/diff/a20786d4 Branch: refs/heads/master Commit: a20786d42b8707504bfc1ffc71f8af71843cfcd6 Parents: a5d343b Author: Kenneth Knowles <[email protected]> Authored: Tue May 24 13:06:31 2016 -0700 Committer: Kenneth Knowles <[email protected]> Committed: Tue May 24 13:06:31 2016 -0700 ---------------------------------------------------------------------- .../beam/sdk/transforms/windowing/OutputTimeFn.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-beam/blob/a20786d4/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OutputTimeFn.java ---------------------------------------------------------------------- diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OutputTimeFn.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OutputTimeFn.java index 7cf870a..497a6fb 100644 --- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OutputTimeFn.java +++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OutputTimeFn.java @@ -52,10 +52,7 @@ import java.util.Objects; @Experimental(Experimental.Kind.OUTPUT_TIME) public abstract class OutputTimeFn<W extends BoundedWindow> implements Serializable { - /** - * Private constructor to prevent subclassing other than provided base classes. - */ - private OutputTimeFn() { } + protected OutputTimeFn() { } /** * Returns the output timestamp to use for data depending on the given @@ -179,11 +176,11 @@ public abstract class OutputTimeFn<W extends BoundedWindow> implements Serializa /** * {@inheritDoc} * - * @return {@code false}. An {@link OutputTimeFn} that depends only on the window should extend - * {@link OutputTimeFn.DependsOnlyOnWindow}. + * @return {@code false} by default. An {@link OutputTimeFn} that is known to depend only on the + * window should extend {@link OutputTimeFn.DependsOnlyOnWindow}. */ @Override - public final boolean dependsOnlyOnWindow() { + public boolean dependsOnlyOnWindow() { return false; }
