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/05/04 13:11:32 UTC

[1/8] beam git commit: Annotate internal methods of PCollection

Repository: beam
Updated Branches:
  refs/heads/master ff6bb3530 -> f43b61af4


Annotate internal methods of PCollection


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

Branch: refs/heads/master
Commit: f4dfbb206382d3ea73881727aa8b0f74eaf98ef4
Parents: ff6bb35
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue May 2 19:31:22 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:29 2017 -0700

----------------------------------------------------------------------
 .../org/apache/beam/sdk/values/PCollection.java     | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/f4dfbb20/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollection.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollection.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollection.java
index 034f0de..20e5d68 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollection.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/values/PCollection.java
@@ -22,6 +22,7 @@ import static com.google.common.base.Preconditions.checkState;
 
 import javax.annotation.Nullable;
 import org.apache.beam.sdk.Pipeline;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.coders.CannotProvideCoderException;
 import org.apache.beam.sdk.coders.CannotProvideCoderException.ReasonCode;
 import org.apache.beam.sdk.coders.Coder;
@@ -330,30 +331,27 @@ public class PCollection<T> extends PValueBase implements PValue {
   }
 
   /**
-   * Sets the {@link WindowingStrategy} of this {@link PCollection}.
-   *
-   * <p>For use by primitive transformations only.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
    */
+  @Internal
   public PCollection<T> setWindowingStrategyInternal(WindowingStrategy<?, ?> windowingStrategy) {
      this.windowingStrategy = windowingStrategy;
      return this;
   }
 
   /**
-   * Sets the {@link PCollection.IsBounded} of this {@link PCollection}.
-   *
-   * <p>For use by internal transformations only.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
    */
+  @Internal
   public PCollection<T> setIsBoundedInternal(IsBounded isBounded) {
     this.isBounded = isBounded;
     return this;
   }
 
   /**
-   * Creates and returns a new {@link PCollection} for a primitive output.
-   *
-   * <p>For use by primitive transformations only.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
    */
+  @Internal
   public static <T> PCollection<T> createPrimitiveOutputInternal(
       Pipeline pipeline,
       WindowingStrategy<?, ?> windowingStrategy,


[3/8] beam git commit: Tighten access control and internal annotations for triggers

Posted by ke...@apache.org.
Tighten access control and internal annotations for triggers


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

Branch: refs/heads/master
Commit: 49cf433c5c08f3cc91512aa9544a36a5d3e84333
Parents: c1b26a1
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue May 2 19:59:32 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:31 2017 -0700

----------------------------------------------------------------------
 .../beam/sdk/transforms/windowing/AfterAll.java |  4 +-
 .../sdk/transforms/windowing/AfterEach.java     |  2 +-
 .../sdk/transforms/windowing/AfterFirst.java    |  2 +-
 .../sdk/transforms/windowing/AfterPane.java     |  2 +-
 .../windowing/AfterProcessingTime.java          |  2 +-
 .../transforms/windowing/AfterWatermark.java    |  4 +-
 .../transforms/windowing/DefaultTrigger.java    |  2 +-
 .../beam/sdk/transforms/windowing/Never.java    |  2 +-
 .../transforms/windowing/OrFinallyTrigger.java  |  2 +-
 .../sdk/transforms/windowing/Repeatedly.java    |  2 +-
 .../windowing/TimestampTransform.java           | 41 ++++++++++++++++----
 .../beam/sdk/transforms/windowing/Trigger.java  | 18 +++++++--
 12 files changed, 62 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterAll.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterAll.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterAll.java
index 2747311..eb0a7ac 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterAll.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterAll.java
@@ -23,6 +23,7 @@ import com.google.common.base.Joiner;
 import java.util.Arrays;
 import java.util.List;
 import org.apache.beam.sdk.annotations.Experimental;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.transforms.windowing.Trigger.OnceTrigger;
 import org.joda.time.Instant;
 
@@ -51,6 +52,7 @@ public class AfterAll extends OnceTrigger {
     return new AfterAll(triggers);
   }
 
+  @Internal
   @Override
   public Instant getWatermarkThatGuaranteesFiring(BoundedWindow window) {
     // This trigger will fire after the latest of its sub-triggers.
@@ -65,7 +67,7 @@ public class AfterAll extends OnceTrigger {
   }
 
   @Override
-  public OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return new AfterAll(continuationTriggers);
   }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterEach.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterEach.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterEach.java
index 56a9d14..1fc4fbf 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterEach.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterEach.java
@@ -72,7 +72,7 @@ public class AfterEach extends Trigger {
   }
 
   @Override
-  public Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return Repeatedly.forever(new AfterFirst(continuationTriggers));
   }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterFirst.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterFirst.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterFirst.java
index 79fd639..f0beb0a 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterFirst.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterFirst.java
@@ -66,7 +66,7 @@ public class AfterFirst extends OnceTrigger {
   }
 
   @Override
-  public OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return new AfterFirst(continuationTriggers);
   }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterPane.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterPane.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterPane.java
index 25c5593..eade95d 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterPane.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterPane.java
@@ -61,7 +61,7 @@ public class AfterPane extends OnceTrigger {
   }
 
   @Override
-  public OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected OnceTrigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return AfterPane.elementCountAtLeast(1);
   }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.java
index eda269a..cc7ec13 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterProcessingTime.java
@@ -40,7 +40,7 @@ public class AfterProcessingTime extends OnceTrigger {
 
   private final List<TimestampTransform> timestampTransforms;
 
-  public AfterProcessingTime(List<TimestampTransform> timestampTransforms) {
+  private AfterProcessingTime(List<TimestampTransform> timestampTransforms) {
     super(null);
     this.timestampTransforms = timestampTransforms;
   }

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterWatermark.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterWatermark.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterWatermark.java
index 6825ab0..14a8c98 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterWatermark.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/AfterWatermark.java
@@ -88,7 +88,7 @@ public class AfterWatermark {
     }
 
     @SuppressWarnings("unchecked")
-    public AfterWatermarkEarlyAndLate(OnceTrigger earlyTrigger, OnceTrigger lateTrigger) {
+    private AfterWatermarkEarlyAndLate(OnceTrigger earlyTrigger, OnceTrigger lateTrigger) {
       super(lateTrigger == null
           ? ImmutableList.<Trigger>of(earlyTrigger)
           : ImmutableList.<Trigger>of(earlyTrigger, lateTrigger));
@@ -178,7 +178,7 @@ public class AfterWatermark {
     }
 
     @Override
-    public FromEndOfWindow getContinuationTrigger(List<Trigger> continuationTriggers) {
+    protected FromEndOfWindow getContinuationTrigger(List<Trigger> continuationTriggers) {
       return this;
     }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/DefaultTrigger.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/DefaultTrigger.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/DefaultTrigger.java
index a649b4f..78f3735 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/DefaultTrigger.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/DefaultTrigger.java
@@ -51,7 +51,7 @@ public class DefaultTrigger extends Trigger{
   }
 
   @Override
-  public Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return this;
   }
 }

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Never.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Never.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Never.java
index 664ae83..6dfeea7 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Never.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Never.java
@@ -43,7 +43,7 @@ public final class Never {
    * The actual trigger class for {@link Never} triggers.
    */
   public static class NeverTrigger extends OnceTrigger {
-    protected NeverTrigger() {
+    private NeverTrigger() {
       super(null);
     }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.java
index 1ed9b55..ad0de47 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/OrFinallyTrigger.java
@@ -58,7 +58,7 @@ public class OrFinallyTrigger extends Trigger {
   }
 
   @Override
-  public Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     // Use OrFinallyTrigger instead of AfterFirst because the continuation of ACTUAL
     // may not be a OnceTrigger.
     return Repeatedly.forever(

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Repeatedly.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Repeatedly.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Repeatedly.java
index 40591e3..78b79c7 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Repeatedly.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Repeatedly.java
@@ -66,7 +66,7 @@ public class Repeatedly extends Trigger {
   }
 
   @Override
-  public Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
+  protected Trigger getContinuationTrigger(List<Trigger> continuationTriggers) {
     return new Repeatedly(continuationTriggers.get(REPEATED));
   }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/TimestampTransform.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/TimestampTransform.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/TimestampTransform.java
index 5318592..8bdf6ee 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/TimestampTransform.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/TimestampTransform.java
@@ -19,37 +19,59 @@ package org.apache.beam.sdk.transforms.windowing;
 
 import com.google.auto.value.AutoValue;
 import java.io.Serializable;
+import org.apache.beam.sdk.annotations.Internal;
 import org.joda.time.Duration;
 import org.joda.time.Instant;
 
-/** An abstract description of a standardized transformation on timestamps. */
+/**
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>An abstract description of a standardized transformation on timestamps.
+ */
+@Internal
 public abstract class TimestampTransform implements Serializable{
 
-  /** Returns a transform that shifts a timestamp later by {@code delay}. */
+  TimestampTransform() {}
+
+  /**
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Returns a transform that shifts a timestamp later by {@code delay}.
+   */
+  @Internal
   public static TimestampTransform delay(Duration delay) {
     return new AutoValue_TimestampTransform_Delay(delay);
   }
 
   /**
-   * Returns a transform that aligns a timestamp to the next boundary of {@code period}, starting
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Returns a transform that aligns a timestamp to the next boundary of {@code period}, starting
    * from {@code offset}.
    */
+  @Internal
   public static TimestampTransform alignTo(Duration period, Instant offset) {
     return new AutoValue_TimestampTransform_AlignTo(period, offset);
   }
 
   /**
-   * Returns a transform that aligns a timestamp to the next boundary of {@code period}, starting
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Returns a transform that aligns a timestamp to the next boundary of {@code period}, starting
    * from the start of the epoch.
    */
+  @Internal
   public static TimestampTransform alignTo(Duration period) {
     return alignTo(period, new Instant(0));
   }
 
   /**
-   * Represents the transform that aligns a timestamp to the next boundary of {@link #getPeriod()}
-   * start at {@link #getOffset()}.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Represents the transform that aligns a timestamp to the next boundary of {@link
+   * #getPeriod()} start at {@link #getOffset()}.
    */
+  @Internal
   @AutoValue
   public abstract static class AlignTo extends TimestampTransform {
     public abstract Duration getPeriod();
@@ -57,7 +79,12 @@ public abstract class TimestampTransform implements Serializable{
     public abstract Instant getOffset();
   }
 
-  /** Represents the transform that delays a timestamp by {@link #getDelay()}. */
+  /**
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Represents the transform that delays a timestamp by {@link #getDelay()}.
+   */
+  @Internal
   @AutoValue
   public abstract static class Delay extends TimestampTransform {
     public abstract Duration getDelay();

http://git-wip-us.apache.org/repos/asf/beam/blob/49cf433c/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Trigger.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Trigger.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Trigger.java
index 07d3077..519ab67 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Trigger.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/windowing/Trigger.java
@@ -24,6 +24,7 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
 import org.apache.beam.sdk.annotations.Experimental;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.transforms.GroupByKey;
 import org.joda.time.Instant;
 
@@ -117,8 +118,10 @@ public abstract class Trigger implements Serializable {
   protected abstract Trigger getContinuationTrigger(List<Trigger> continuationTriggers);
 
   /**
-   * Returns a bound in event time by which this trigger would have fired at least once for a given
-   * window had there been input data.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Returns a bound in event time by which this trigger would have fired at least once for a
+   * given window had there been input data.
    *
    * <p>For triggers that do not fire based on the watermark advancing, returns {@link
    * BoundedWindow#TIMESTAMP_MAX_VALUE}.
@@ -126,9 +129,15 @@ public abstract class Trigger implements Serializable {
    * <p>This estimate may be used, for example, to determine that there are no elements in a
    * side-input window, which causes the default value to be used instead.
    */
+  @Internal
   public abstract Instant getWatermarkThatGuaranteesFiring(BoundedWindow window);
 
-  /** Returns whether this performs the same triggering as the given {@link Trigger}. */
+  /**
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Returns whether this performs the same triggering as the given {@link Trigger}.
+   */
+  @Internal
   public boolean isCompatible(Trigger other) {
     if (!getClass().equals(other.getClass())) {
       return false;
@@ -208,9 +217,12 @@ public abstract class Trigger implements Serializable {
   }
 
   /**
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
    * {@link Trigger Triggers} that are guaranteed to fire at most once should extend {@link
    * OnceTrigger} rather than the general {@link Trigger} class to indicate that behavior.
    */
+  @Internal
   public abstract static class OnceTrigger extends Trigger {
     protected OnceTrigger(List<Trigger> subTriggers) {
       super(subTriggers);


[7/8] beam git commit: Annotate internal methods on Pipeline

Posted by ke...@apache.org.
Annotate internal methods on Pipeline


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

Branch: refs/heads/master
Commit: 362d0be79222ad67f1639d54434c1505ef76752b
Parents: 58298d8
Author: Kenneth Knowles <kl...@google.com>
Authored: Wed May 3 10:13:15 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:33 2017 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/beam/sdk/Pipeline.java | 29 +++++++++++++++-----
 1 file changed, 22 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/362d0be7/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java
index 351e1b8..6b15f0d 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/Pipeline.java
@@ -28,6 +28,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.coders.CoderRegistry;
 import org.apache.beam.sdk.io.Read;
 import org.apache.beam.sdk.options.PipelineOptions;
@@ -190,12 +191,15 @@ public class Pipeline {
   }
 
   /**
-   * Replaces all nodes that match a {@link PTransformOverride} in this pipeline. Overrides are
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Replaces all nodes that match a {@link PTransformOverride} in this pipeline. Overrides are
    * applied in the order they are present within the list.
    *
    * <p>After all nodes are replaced, ensures that no nodes in the updated graph match any of the
    * overrides.
    */
+  @Internal
   public void replaceAll(List<PTransformOverride> overrides) {
     for (PTransformOverride override : overrides) {
       replace(override);
@@ -334,10 +338,12 @@ public class Pipeline {
   }
 
   /**
-   * A {@link PipelineVisitor} can be passed into
-   * {@link Pipeline#traverseTopologically} to be called for each of the
-   * transforms and values in the {@link Pipeline}.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>A {@link PipelineVisitor} can be passed into {@link Pipeline#traverseTopologically} to be
+   * called for each of the transforms and values in the {@link Pipeline}.
    */
+  @Internal
   public interface PipelineVisitor {
     /**
      * Called for each composite transform after all topological predecessors have been visited
@@ -396,7 +402,9 @@ public class Pipeline {
   }
 
   /**
-   * Invokes the {@link PipelineVisitor PipelineVisitor's}
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Invokes the {@link PipelineVisitor PipelineVisitor's}
    * {@link PipelineVisitor#visitPrimitiveTransform} and
    * {@link PipelineVisitor#visitValue} operations on each of this
    * {@link Pipeline Pipeline's} transform and value nodes, in forward
@@ -408,14 +416,18 @@ public class Pipeline {
    *
    * <p>Typically invoked by {@link PipelineRunner} subclasses.
    */
+  @Internal
   public void traverseTopologically(PipelineVisitor visitor) {
     transforms.visit(visitor);
   }
 
   /**
-   * Like {@link #applyTransform(String, PInput, PTransform)} but defaulting to the name
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Like {@link #applyTransform(String, PInput, PTransform)} but defaulting to the name
    * provided by the {@link PTransform}.
    */
+  @Internal
   public static <InputT extends PInput, OutputT extends POutput>
   OutputT applyTransform(InputT input,
       PTransform<? super InputT, OutputT> transform) {
@@ -423,7 +435,9 @@ public class Pipeline {
   }
 
   /**
-   * Applies the given {@code PTransform} to this input {@code InputT} and returns
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Applies the given {@code PTransform} to this input {@code InputT} and returns
    * its {@code OutputT}. This uses {@code name} to identify this specific application
    * of the transform. This name is used in various places, including the monitoring UI,
    * logging, and to stably identify this application node in the {@link Pipeline} graph during
@@ -432,6 +446,7 @@ public class Pipeline {
    * <p>Each {@link PInput} subclass that provides an {@code apply} method should delegate to
    * this method to ensure proper registration with the {@link PipelineRunner}.
    */
+  @Internal
   public static <InputT extends PInput, OutputT extends POutput>
   OutputT applyTransform(String name, InputT input,
       PTransform<? super InputT, OutputT> transform) {


[8/8] beam git commit: This closes #2852: Tighten up access and use internal annotations a bit in the Java SDK

Posted by ke...@apache.org.
This closes #2852: Tighten up access and use internal annotations a bit in the Java SDK

  Annotate internal methods on Pipeline
  Tighten access in sdk.options
  Annotate internal-only bits of Java sdk.runners
  The transforms.reflect package is not for users
  Tighten access control and internal annotations for triggers
  Annotate internal pieces of sdks.transforms
  Annotate internal methods of PCollection


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

Branch: refs/heads/master
Commit: f43b61af4d5a3ee77a610d8b11ef80d421c34501
Parents: ff6bb35 362d0be
Author: Kenneth Knowles <kl...@google.com>
Authored: Thu May 4 06:10:45 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:10:45 2017 -0700

----------------------------------------------------------------------
 .../main/java/org/apache/beam/sdk/Pipeline.java | 29 ++++++--
 .../beam/sdk/options/ValueProviderUtils.java    | 60 ---------------
 .../apache/beam/sdk/options/ValueProviders.java | 60 +++++++++++++++
 .../beam/sdk/runners/PTransformMatcher.java     |  6 +-
 .../beam/sdk/runners/PTransformOverride.java    |  6 +-
 .../sdk/runners/PTransformOverrideFactory.java  |  6 +-
 .../sdk/runners/PipelineRunnerRegistrar.java    |  4 +
 .../beam/sdk/runners/TransformHierarchy.java    |  6 +-
 .../beam/sdk/transforms/AppliedPTransform.java  |  7 +-
 .../beam/sdk/transforms/CombineFnBase.java      | 22 ++++--
 .../beam/sdk/transforms/Materialization.java    |  6 +-
 .../beam/sdk/transforms/Materializations.java   | 11 ++-
 .../org/apache/beam/sdk/transforms/View.java    | 36 ++++++---
 .../org/apache/beam/sdk/transforms/ViewFn.java  |  6 +-
 .../sdk/transforms/reflect/package-info.java    |  5 +-
 .../beam/sdk/transforms/windowing/AfterAll.java |  4 +-
 .../sdk/transforms/windowing/AfterEach.java     |  2 +-
 .../sdk/transforms/windowing/AfterFirst.java    |  2 +-
 .../sdk/transforms/windowing/AfterPane.java     |  2 +-
 .../windowing/AfterProcessingTime.java          |  2 +-
 .../transforms/windowing/AfterWatermark.java    |  4 +-
 .../transforms/windowing/DefaultTrigger.java    |  2 +-
 .../beam/sdk/transforms/windowing/Never.java    |  2 +-
 .../transforms/windowing/OrFinallyTrigger.java  |  2 +-
 .../sdk/transforms/windowing/Repeatedly.java    |  2 +-
 .../windowing/TimestampTransform.java           | 41 ++++++++--
 .../beam/sdk/transforms/windowing/Trigger.java  | 18 ++++-
 .../org/apache/beam/sdk/values/PCollection.java | 16 ++--
 .../beam/sdk/options/ValueProviderTest.java     |  4 +-
 .../sdk/options/ValueProviderUtilsTest.java     | 78 --------------------
 .../beam/sdk/options/ValueProvidersTest.java    | 78 ++++++++++++++++++++
 31 files changed, 321 insertions(+), 208 deletions(-)
----------------------------------------------------------------------



[6/8] beam git commit: Annotate internal-only bits of Java sdk.runners

Posted by ke...@apache.org.
Annotate internal-only bits of Java sdk.runners


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

Branch: refs/heads/master
Commit: fe51cc0d1a8aa14adbee81b220f9ca8a442f26fe
Parents: 9b8a4e5
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue May 2 20:05:45 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:32 2017 -0700

----------------------------------------------------------------------
 .../java/org/apache/beam/sdk/runners/PTransformMatcher.java    | 6 +++++-
 .../java/org/apache/beam/sdk/runners/PTransformOverride.java   | 6 +++++-
 .../org/apache/beam/sdk/runners/PTransformOverrideFactory.java | 6 +++++-
 .../org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java   | 4 ++++
 .../java/org/apache/beam/sdk/runners/TransformHierarchy.java   | 6 +++++-
 5 files changed, 24 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/fe51cc0d/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformMatcher.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformMatcher.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformMatcher.java
index 30dca6d..6378ecc 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformMatcher.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformMatcher.java
@@ -20,12 +20,16 @@ package org.apache.beam.sdk.runners;
 
 import org.apache.beam.sdk.annotations.Experimental;
 import org.apache.beam.sdk.annotations.Experimental.Kind;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.transforms.AppliedPTransform;
 import org.apache.beam.sdk.transforms.PTransform;
 
 /**
- * Matches applications of {@link PTransform PTransforms}.
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>Matches applications of {@link PTransform PTransforms}.
  */
+@Internal
 @Experimental(Kind.CORE_RUNNERS_ONLY)
 public interface PTransformMatcher {
   boolean matches(AppliedPTransform<?, ?, ?> application);

http://git-wip-us.apache.org/repos/asf/beam/blob/fe51cc0d/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverride.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverride.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverride.java
index 33b9114..2820364 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverride.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverride.java
@@ -19,12 +19,16 @@
 package org.apache.beam.sdk.runners;
 
 import com.google.auto.value.AutoValue;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.transforms.PTransform;
 
 /**
- * A {@link PTransformMatcher} and associated {@link PTransformOverrideFactory} to replace all
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>A {@link PTransformMatcher} and associated {@link PTransformOverrideFactory} to replace all
  * matching {@link PTransform PTransforms}.
  */
+@Internal
 @AutoValue
 public abstract class PTransformOverride {
   public static PTransformOverride of(

http://git-wip-us.apache.org/repos/asf/beam/blob/fe51cc0d/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverrideFactory.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverrideFactory.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverrideFactory.java
index 786c61c..a28f303 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverrideFactory.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PTransformOverrideFactory.java
@@ -23,6 +23,7 @@ import com.google.auto.value.AutoValue;
 import java.util.Map;
 import org.apache.beam.sdk.annotations.Experimental;
 import org.apache.beam.sdk.annotations.Experimental.Kind;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.transforms.AppliedPTransform;
 import org.apache.beam.sdk.transforms.PTransform;
 import org.apache.beam.sdk.values.PInput;
@@ -32,9 +33,12 @@ import org.apache.beam.sdk.values.TaggedPValue;
 import org.apache.beam.sdk.values.TupleTag;
 
 /**
- * Produces {@link PipelineRunner}-specific overrides of {@link PTransform PTransforms}, and
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>Produces {@link PipelineRunner}-specific overrides of {@link PTransform PTransforms}, and
  * provides mappings between original and replacement outputs.
  */
+@Internal
 @Experimental(Kind.CORE_RUNNERS_ONLY)
 public interface PTransformOverrideFactory<
     InputT extends PInput,

http://git-wip-us.apache.org/repos/asf/beam/blob/fe51cc0d/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java
index be95044..41fd6f0 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/PipelineRunnerRegistrar.java
@@ -19,8 +19,11 @@ package org.apache.beam.sdk.runners;
 
 import com.google.auto.service.AutoService;
 import java.util.ServiceLoader;
+import org.apache.beam.sdk.annotations.Internal;
 
 /**
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
  * {@link PipelineRunner} creators have the ability to automatically have their
  * {@link PipelineRunner} registered with this SDK by creating a {@link ServiceLoader} entry
  * and a concrete implementation of this interface.
@@ -33,6 +36,7 @@ import java.util.ServiceLoader;
  * <p>It is optional but recommended to use one of the many build time tools such as
  * {@link AutoService} to generate the necessary META-INF files automatically.
  */
+@Internal
 public interface PipelineRunnerRegistrar {
   /**
    * Get the set of {@link PipelineRunner PipelineRunners} to register.

http://git-wip-us.apache.org/repos/asf/beam/blob/fe51cc0d/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/TransformHierarchy.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/TransformHierarchy.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/TransformHierarchy.java
index 18bf2e9..9236194 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/TransformHierarchy.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/runners/TransformHierarchy.java
@@ -36,6 +36,7 @@ import javax.annotation.Nullable;
 import org.apache.beam.sdk.Pipeline;
 import org.apache.beam.sdk.Pipeline.PipelineVisitor;
 import org.apache.beam.sdk.Pipeline.PipelineVisitor.CompositeBehavior;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.runners.PTransformOverrideFactory.ReplacementOutput;
 import org.apache.beam.sdk.transforms.AppliedPTransform;
 import org.apache.beam.sdk.transforms.PTransform;
@@ -47,9 +48,12 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Captures information about a collection of transformations and their
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>Captures information about a collection of transformations and their
  * associated {@link PValue}s.
  */
+@Internal
 public class TransformHierarchy {
   private static final Logger LOG = LoggerFactory.getLogger(TransformHierarchy.class);
 


[2/8] beam git commit: Annotate internal pieces of sdks.transforms

Posted by ke...@apache.org.
Annotate internal pieces of sdks.transforms


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

Branch: refs/heads/master
Commit: c1b26a1b53c334ab171fad60501ba67593fde5d2
Parents: f4dfbb2
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue May 2 19:48:38 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:30 2017 -0700

----------------------------------------------------------------------
 .../beam/sdk/transforms/AppliedPTransform.java  |  7 ++--
 .../beam/sdk/transforms/CombineFnBase.java      | 22 ++++++++----
 .../beam/sdk/transforms/Materialization.java    |  6 +++-
 .../beam/sdk/transforms/Materializations.java   | 11 ++++--
 .../org/apache/beam/sdk/transforms/View.java    | 36 +++++++++++++-------
 .../org/apache/beam/sdk/transforms/ViewFn.java  |  6 +++-
 6 files changed, 62 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/AppliedPTransform.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/AppliedPTransform.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/AppliedPTransform.java
index bdb61b8..4e049a5 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/AppliedPTransform.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/AppliedPTransform.java
@@ -20,16 +20,14 @@ package org.apache.beam.sdk.transforms;
 import com.google.auto.value.AutoValue;
 import java.util.Map;
 import org.apache.beam.sdk.Pipeline;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.values.PInput;
 import org.apache.beam.sdk.values.POutput;
 import org.apache.beam.sdk.values.PValue;
 import org.apache.beam.sdk.values.TupleTag;
 
 /**
- * Represents the application of a {@link PTransform} to a specific input to produce
- * a specific output.
- *
- * <p>For internal use.
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
  *
  * <p>Inputs and outputs are stored in their expanded forms, as the condensed form of a composite
  * {@link PInput} or {@link POutput} is a language-specific concept, and {@link AppliedPTransform}
@@ -40,6 +38,7 @@ import org.apache.beam.sdk.values.TupleTag;
  * @param <OutputT>    transform output type
  * @param <TransformT> transform type
  */
+@Internal
 @AutoValue
 public abstract class AppliedPTransform<
     InputT extends PInput, OutputT extends POutput,

http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFnBase.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFnBase.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFnBase.java
index a881099..29990cd 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFnBase.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/CombineFnBase.java
@@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableMap;
 import java.io.Serializable;
 import java.lang.reflect.Type;
 import java.lang.reflect.TypeVariable;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.coders.CannotProvideCoderException;
 import org.apache.beam.sdk.coders.Coder;
 import org.apache.beam.sdk.coders.CoderRegistry;
@@ -31,14 +32,19 @@ import org.apache.beam.sdk.transforms.display.HasDisplayData;
 import org.apache.beam.sdk.values.TypeDescriptor;
 
 /**
- * This class contains the shared interfaces and abstract classes for different types of combine
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>This class contains the shared interfaces and abstract classes for different types of combine
  * functions.
  *
  * <p>Users should not implement or extend them directly.
  */
+@Internal
 public class CombineFnBase {
   /**
-   * A {@code GloballyCombineFn<InputT, AccumT, OutputT>} specifies how to combine a
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>A {@code GloballyCombineFn<InputT, AccumT, OutputT>} specifies how to combine a
    * collection of input values of type {@code InputT} into a single
    * output value of type {@code OutputT}.  It does this via one or more
    * intermediate mutable accumulator values of type {@code AccumT}.
@@ -50,6 +56,7 @@ public class CombineFnBase {
    * @param <AccumT> type of mutable accumulator values
    * @param <OutputT> type of output values
    */
+  @Internal
   public interface GlobalCombineFn<InputT, AccumT, OutputT> extends Serializable, HasDisplayData {
 
     /**
@@ -93,16 +100,19 @@ public class CombineFnBase {
   }
 
   /**
-   * An abstract {@link GlobalCombineFn} base class shared by
-   * {@link CombineFn} and {@link CombineFnWithContext}.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
    *
-   * <p>Do not extend this class directly.
-   * Extends {@link CombineFn} and {@link CombineFnWithContext} instead.
+   * <p>An abstract {@link GlobalCombineFn} base class shared by {@link CombineFn} and {@link
+   * CombineFnWithContext}.
+   *
+   * <p>Do not extend this class directly. Extends {@link CombineFn} and {@link
+   * CombineFnWithContext} instead.
    *
    * @param <InputT> type of input values
    * @param <AccumT> type of mutable accumulator values
    * @param <OutputT> type of output values
    */
+  @Internal
   abstract static class AbstractGlobalCombineFn<InputT, AccumT, OutputT>
       implements GlobalCombineFn<InputT, AccumT, OutputT>, Serializable {
     private static final String INCOMPATIBLE_GLOBAL_WINDOW_ERROR_MESSAGE =

http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materialization.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materialization.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materialization.java
index 7cd6256..6fb8c29 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materialization.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materialization.java
@@ -18,15 +18,19 @@
 
 package org.apache.beam.sdk.transforms;
 
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.runners.PipelineRunner;
 
 /**
- * How a view should be physically materialized by a {@link PipelineRunner}.
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>How a view should be physically materialized by a {@link PipelineRunner}.
  *
  * <p>A {@link PipelineRunner} will support some set of materializations, and will reject
  * {@link ViewFn ViewFns} that require materializations it does not support. See
  * {@link Materializations} for known implementations.
  */
+@Internal
 public interface Materialization<T> {
   /**
    * Gets the URN describing this {@link Materialization}. This is a stable, SDK-independent URN

http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materializations.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materializations.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materializations.java
index 35925fa..6e4f83d 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materializations.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/Materializations.java
@@ -20,12 +20,16 @@ package org.apache.beam.sdk.transforms;
 
 import org.apache.beam.sdk.annotations.Experimental;
 import org.apache.beam.sdk.annotations.Experimental.Kind;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.util.WindowedValue;
 
 /**
- * Utility methods for constructing known {@link Materialization materializations} for a
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>Utility methods for constructing known {@link Materialization materializations} for a
  * {@link ViewFn}.
  */
+@Internal
 public class Materializations {
   /**
    * The URN for a {@link Materialization} where the primitive view type is an iterable of fully
@@ -36,9 +40,12 @@ public class Materializations {
       "urn:beam:sideinput:materialization:iterable:0.1";
 
   /**
-   * A {@link Materialization} where the primitive view type is an iterable of fully specified
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>A {@link Materialization} where the primitive view type is an iterable of fully specified
    * windowed values.
    */
+  @Internal
   public static <T> Materialization<Iterable<WindowedValue<T>>> iterable() {
     return new IterableMaterialization<>();
   }

http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/View.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/View.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/View.java
index b3b8918..d17d423 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/View.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/View.java
@@ -19,6 +19,7 @@ package org.apache.beam.sdk.transforms;
 
 import java.util.List;
 import java.util.Map;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.coders.Coder;
 import org.apache.beam.sdk.coders.CoderException;
 import org.apache.beam.sdk.runners.PipelineRunner;
@@ -237,11 +238,13 @@ public class View {
   }
 
   /**
-   * Not intended for direct use by pipeline authors; public only so a {@link PipelineRunner} may
-   * override its behavior.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Public only so a {@link PipelineRunner} may override its behavior.
    *
    * <p>See {@link View#asList()}.
    */
+  @Internal
   public static class AsList<T> extends PTransform<PCollection<T>, PCollectionView<List<T>>> {
     private AsList() { }
 
@@ -259,11 +262,13 @@ public class View {
   }
 
   /**
-   * Not intended for direct use by pipeline authors; public only so a {@link PipelineRunner} may
-   * override its behavior.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Public only so a {@link PipelineRunner} may override its behavior.
    *
    * <p>See {@link View#asIterable()}.
    */
+  @Internal
   public static class AsIterable<T>
       extends PTransform<PCollection<T>, PCollectionView<Iterable<T>>> {
     private AsIterable() { }
@@ -282,11 +287,13 @@ public class View {
   }
 
   /**
-   * Not intended for direct use by pipeline authors; public only so a {@link PipelineRunner} may
-   * override its behavior.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Public only so a {@link PipelineRunner} may override its behavior.
    *
    * <p>See {@link View#asSingleton()}.
    */
+  @Internal
   public static class AsSingleton<T> extends PTransform<PCollection<T>, PCollectionView<T>> {
     private final T defaultValue;
     private final boolean hasDefault;
@@ -396,11 +403,13 @@ public class View {
   }
 
   /**
-   * Not intended for direct use by pipeline authors; public only so a {@link PipelineRunner} may
-   * override its behavior.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Public only so a {@link PipelineRunner} may override its behavior.
    *
    * <p>See {@link View#asMultimap()}.
    */
+  @Internal
   public static class AsMultimap<K, V>
       extends PTransform<PCollection<KV<K, V>>, PCollectionView<Map<K, Iterable<V>>>> {
     private AsMultimap() { }
@@ -422,11 +431,13 @@ public class View {
   }
 
   /**
-   * Not intended for direct use by pipeline authors; public only so a {@link PipelineRunner} may
-   * override its behavior.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+   *
+   * <p>Public only so a {@link PipelineRunner} may override its behavior.
    *
    * <p>See {@link View#asMap()}.
    */
+  @Internal
   public static class AsMap<K, V>
       extends PTransform<PCollection<KV<K, V>>, PCollectionView<Map<K, V>>> {
     private AsMap() { }
@@ -459,13 +470,14 @@ public class View {
   // Internal details below
 
   /**
-   * Creates a primitive {@link PCollectionView}.
+   * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
    *
-   * <p>For internal use only by runner implementors.
+   * <p>Creates a primitive {@link PCollectionView}.
    *
    * @param <ElemT> The type of the elements of the input PCollection
    * @param <ViewT> The type associated with the {@link PCollectionView} used as a side input
    */
+  @Internal
   public static class CreatePCollectionView<ElemT, ViewT>
       extends PTransform<PCollection<ElemT>, PCollectionView<ViewT>> {
     private PCollectionView<ViewT> view;

http://git-wip-us.apache.org/repos/asf/beam/blob/c1b26a1b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ViewFn.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ViewFn.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ViewFn.java
index cdfcb88..d51a917 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ViewFn.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/transforms/ViewFn.java
@@ -18,11 +18,14 @@
 package org.apache.beam.sdk.transforms;
 
 import java.io.Serializable;
+import org.apache.beam.sdk.annotations.Internal;
 import org.apache.beam.sdk.values.PCollection;
 import org.apache.beam.sdk.values.PCollectionView;
 
 /**
- * A function to adapt a primitive "view" of a {@link PCollection} - some materialization
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>A function to adapt a primitive "view" of a {@link PCollection} - some materialization
  * specified in the Beam model and implemented by the runner - to a user-facing view type
  * for side input.
  *
@@ -36,6 +39,7 @@ import org.apache.beam.sdk.values.PCollectionView;
  * @param <PrimitiveViewT> the type of the underlying primitive view, provided by the runner
  *        {@code <ViewT>} the type of the value(s) accessible via this {@link PCollectionView}
  */
+@Internal
 public abstract class ViewFn<PrimitiveViewT, ViewT> implements Serializable {
   /**
    * Gets the materialization of this {@link ViewFn}.


[4/8] beam git commit: Tighten access in sdk.options

Posted by ke...@apache.org.
Tighten access in sdk.options


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

Branch: refs/heads/master
Commit: 58298d866fe9d1f4fcaf2ccda3078809f4d55b27
Parents: fe51cc0
Author: Kenneth Knowles <kl...@google.com>
Authored: Wed May 3 10:10:07 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:32 2017 -0700

----------------------------------------------------------------------
 .../beam/sdk/options/ValueProviderUtils.java    | 60 ---------------
 .../apache/beam/sdk/options/ValueProviders.java | 60 +++++++++++++++
 .../beam/sdk/options/ValueProviderTest.java     |  4 +-
 .../sdk/options/ValueProviderUtilsTest.java     | 78 --------------------
 .../beam/sdk/options/ValueProvidersTest.java    | 78 ++++++++++++++++++++
 5 files changed, 140 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/58298d86/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviderUtils.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviderUtils.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviderUtils.java
deleted file mode 100644
index 14a5f23..0000000
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviderUtils.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.sdk.options;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import java.io.IOException;
-import java.util.Map;
-
-/**
- * Utilities for working with the {@link ValueProvider} interface.
- */
-public class ValueProviderUtils {
-  private ValueProviderUtils() {}
-
-  /**
-   * Given {@code serializedOptions} as a JSON-serialized {@link PipelineOptions}, updates
-   * the values according to the provided values in {@code runtimeValues}.
-   */
-  public static String updateSerializedOptions(
-      String serializedOptions, Map<String, String> runtimeValues) {
-    ObjectMapper mapper = new ObjectMapper();
-    ObjectNode root, options;
-    try {
-      root = mapper.readValue(serializedOptions, ObjectNode.class);
-      options = (ObjectNode) root.get("options");
-      checkNotNull(options, "Unable to locate 'options' in %s", serializedOptions);
-    } catch (IOException e) {
-      throw new RuntimeException(
-        String.format("Unable to parse %s", serializedOptions), e);
-    }
-
-    for (Map.Entry<String, String> entry : runtimeValues.entrySet()) {
-      options.put(entry.getKey(), entry.getValue());
-    }
-    try {
-      return mapper.writeValueAsString(root);
-    } catch (IOException e) {
-      throw new RuntimeException("Unable to parse re-serialize options", e);
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/58298d86/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviders.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviders.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviders.java
new file mode 100644
index 0000000..d034b81
--- /dev/null
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProviders.java
@@ -0,0 +1,60 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.beam.sdk.options;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.node.ObjectNode;
+
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * Utilities for working with the {@link ValueProvider} interface.
+ */
+class ValueProviders {
+  private ValueProviders() {}
+
+  /**
+   * Given {@code serializedOptions} as a JSON-serialized {@link PipelineOptions}, updates
+   * the values according to the provided values in {@code runtimeValues}.
+   */
+  public static String updateSerializedOptions(
+      String serializedOptions, Map<String, String> runtimeValues) {
+    ObjectMapper mapper = new ObjectMapper();
+    ObjectNode root, options;
+    try {
+      root = mapper.readValue(serializedOptions, ObjectNode.class);
+      options = (ObjectNode) root.get("options");
+      checkNotNull(options, "Unable to locate 'options' in %s", serializedOptions);
+    } catch (IOException e) {
+      throw new RuntimeException(
+        String.format("Unable to parse %s", serializedOptions), e);
+    }
+
+    for (Map.Entry<String, String> entry : runtimeValues.entrySet()) {
+      options.put(entry.getKey(), entry.getValue());
+    }
+    try {
+      return mapper.writeValueAsString(root);
+    } catch (IOException e) {
+      throw new RuntimeException("Unable to parse re-serialize options", e);
+    }
+  }
+}

http://git-wip-us.apache.org/repos/asf/beam/blob/58298d86/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java
index 383de53..9369ae6 100644
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderTest.java
@@ -199,7 +199,7 @@ public class ValueProviderTest {
     ObjectMapper mapper = new ObjectMapper();
     String serializedOptions = mapper.writeValueAsString(submitOptions);
 
-    String runnerString = ValueProviderUtils.updateSerializedOptions(
+    String runnerString = ValueProviders.updateSerializedOptions(
       serializedOptions, ImmutableMap.of("foo", "quux"));
     TestOptions runtime = mapper.readValue(runnerString, PipelineOptions.class)
       .as(TestOptions.class);
@@ -218,7 +218,7 @@ public class ValueProviderTest {
     ObjectMapper mapper = new ObjectMapper();
     String serializedOptions = mapper.writeValueAsString(submitOptions);
 
-    String runnerString = ValueProviderUtils.updateSerializedOptions(
+    String runnerString = ValueProviders.updateSerializedOptions(
       serializedOptions, ImmutableMap.of("foo", "quux"));
     TestOptions runtime = mapper.readValue(runnerString, PipelineOptions.class)
       .as(TestOptions.class);

http://git-wip-us.apache.org/repos/asf/beam/blob/58298d86/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderUtilsTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderUtilsTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderUtilsTest.java
deleted file mode 100644
index e09f4ad..0000000
--- a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProviderUtilsTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.beam.sdk.options;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.google.common.collect.ImmutableMap;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
-
-/** Tests for {@link ValueProviderUtils}. */
-@RunWith(JUnit4.class)
-public class ValueProviderUtilsTest {
-  /** A test interface. */
-  public interface TestOptions extends PipelineOptions {
-    String getString();
-    void setString(String value);
-
-    String getOtherString();
-    void setOtherString(String value);
-  }
-
-  @Test
-  public void testUpdateSerialize() throws Exception {
-    TestOptions submitOptions = PipelineOptionsFactory.as(TestOptions.class);
-    ObjectMapper mapper = new ObjectMapper();
-    String serializedOptions = mapper.writeValueAsString(submitOptions);
-    String updatedOptions = ValueProviderUtils.updateSerializedOptions(
-      serializedOptions, ImmutableMap.of("string", "bar"));
-    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
-      .as(TestOptions.class);
-    assertEquals("bar", runtime.getString());
-  }
-
-  @Test
-  public void testUpdateSerializeExistingValue() throws Exception {
-    TestOptions submitOptions = PipelineOptionsFactory.fromArgs(
-        "--string=baz", "--otherString=quux").as(TestOptions.class);
-    ObjectMapper mapper = new ObjectMapper();
-    String serializedOptions = mapper.writeValueAsString(submitOptions);
-    String updatedOptions = ValueProviderUtils.updateSerializedOptions(
-      serializedOptions, ImmutableMap.of("string", "bar"));
-    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
-      .as(TestOptions.class);
-    assertEquals("bar", runtime.getString());
-    assertEquals("quux", runtime.getOtherString());
-  }
-
-  @Test
-  public void testUpdateSerializeEmptyUpdate() throws Exception {
-    TestOptions submitOptions = PipelineOptionsFactory.as(TestOptions.class);
-    ObjectMapper mapper = new ObjectMapper();
-    String serializedOptions = mapper.writeValueAsString(submitOptions);
-    String updatedOptions = ValueProviderUtils.updateSerializedOptions(
-      serializedOptions, ImmutableMap.<String, String>of());
-    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
-      .as(TestOptions.class);
-    assertNull(runtime.getString());
-  }
-}

http://git-wip-us.apache.org/repos/asf/beam/blob/58298d86/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProvidersTest.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProvidersTest.java b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProvidersTest.java
new file mode 100644
index 0000000..14f86bc
--- /dev/null
+++ b/sdks/java/core/src/test/java/org/apache/beam/sdk/options/ValueProvidersTest.java
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.beam.sdk.options;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.collect.ImmutableMap;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/** Tests for {@link ValueProviders}. */
+@RunWith(JUnit4.class)
+public class ValueProvidersTest {
+  /** A test interface. */
+  public interface TestOptions extends PipelineOptions {
+    String getString();
+    void setString(String value);
+
+    String getOtherString();
+    void setOtherString(String value);
+  }
+
+  @Test
+  public void testUpdateSerialize() throws Exception {
+    TestOptions submitOptions = PipelineOptionsFactory.as(TestOptions.class);
+    ObjectMapper mapper = new ObjectMapper();
+    String serializedOptions = mapper.writeValueAsString(submitOptions);
+    String updatedOptions = ValueProviders.updateSerializedOptions(
+      serializedOptions, ImmutableMap.of("string", "bar"));
+    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
+      .as(TestOptions.class);
+    assertEquals("bar", runtime.getString());
+  }
+
+  @Test
+  public void testUpdateSerializeExistingValue() throws Exception {
+    TestOptions submitOptions = PipelineOptionsFactory.fromArgs(
+        "--string=baz", "--otherString=quux").as(TestOptions.class);
+    ObjectMapper mapper = new ObjectMapper();
+    String serializedOptions = mapper.writeValueAsString(submitOptions);
+    String updatedOptions = ValueProviders.updateSerializedOptions(
+      serializedOptions, ImmutableMap.of("string", "bar"));
+    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
+      .as(TestOptions.class);
+    assertEquals("bar", runtime.getString());
+    assertEquals("quux", runtime.getOtherString());
+  }
+
+  @Test
+  public void testUpdateSerializeEmptyUpdate() throws Exception {
+    TestOptions submitOptions = PipelineOptionsFactory.as(TestOptions.class);
+    ObjectMapper mapper = new ObjectMapper();
+    String serializedOptions = mapper.writeValueAsString(submitOptions);
+    String updatedOptions = ValueProviders.updateSerializedOptions(
+      serializedOptions, ImmutableMap.<String, String>of());
+    TestOptions runtime = mapper.readValue(updatedOptions, PipelineOptions.class)
+      .as(TestOptions.class);
+    assertNull(runtime.getString());
+  }
+}


[5/8] beam git commit: The transforms.reflect package is not for users

Posted by ke...@apache.org.
The transforms.reflect package is not for users


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

Branch: refs/heads/master
Commit: 9b8a4e5c4b876d4459c64a9bffee613aeae72fb2
Parents: 49cf433
Author: Kenneth Knowles <kl...@google.com>
Authored: Tue May 2 20:05:34 2017 -0700
Committer: Kenneth Knowles <kl...@google.com>
Committed: Thu May 4 06:09:32 2017 -0700

----------------------------------------------------------------------
 .../org/apache/beam/sdk/transforms/reflect/package-info.java    | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/9b8a4e5c/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 4df5209..fe2f6b1 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
@@ -16,8 +16,11 @@
  * limitations under the License.
  */
 /**
- * Defines reflection-based utilities for analyzing {@link org.apache.beam.sdk.transforms.DoFn}'s
+ * <b><i>For internal use only; no backwards-compatibility guarantees.</i></b>
+ *
+ * <p>Defines reflection-based utilities for analyzing {@link org.apache.beam.sdk.transforms.DoFn}'s
  * and creating {@link org.apache.beam.sdk.transforms.reflect.DoFnSignature}'s and
  * {@link org.apache.beam.sdk.transforms.reflect.DoFnInvoker}'s from them.
  */
 package org.apache.beam.sdk.transforms.reflect;
+