You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by lc...@apache.org on 2016/12/29 18:40:27 UTC
[1/2] beam git commit: Update ValueProvider.java
Repository: beam
Updated Branches:
refs/heads/master 6f4031adc -> 135d09f5e
Update ValueProvider.java
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/055beedb
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/055beedb
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/055beedb
Branch: refs/heads/master
Commit: 055beedb900bb1e076e1e50419c3c6122b18cb69
Parents: 6f4031a
Author: sammcveety <sa...@gmail.com>
Authored: Tue Dec 27 06:56:53 2016 -0800
Committer: Luke Cwik <lc...@google.com>
Committed: Thu Dec 29 10:39:19 2016 -0800
----------------------------------------------------------------------
.../apache/beam/sdk/options/ValueProvider.java | 6 ++++-
.../beam/sdk/options/ValueProviderTest.java | 24 ++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/beam/blob/055beedb/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java
----------------------------------------------------------------------
diff --git a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java
index 93fcaf8..030eed5 100644
--- a/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java
+++ b/sdks/java/core/src/main/java/org/apache/beam/sdk/options/ValueProvider.java
@@ -108,6 +108,7 @@ public interface ValueProvider<T> extends Serializable {
private final ValueProvider<X> value;
private final SerializableFunction<X, T> translator;
+ private transient volatile T cachedValue;
NestedValueProvider(ValueProvider<X> value, SerializableFunction<X, T> translator) {
this.value = checkNotNull(value);
@@ -125,7 +126,10 @@ public interface ValueProvider<T> extends Serializable {
@Override
public T get() {
- return translator.apply(value.get());
+ if (cachedValue == null) {
+ cachedValue = translator.apply(value.get());
+ }
+ return cachedValue;
}
@Override
http://git-wip-us.apache.org/repos/asf/beam/blob/055beedb/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 ea5cc54..5b76d53 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
@@ -19,11 +19,13 @@ package org.apache.beam.sdk.options;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.List;
import org.apache.beam.sdk.options.ValueProvider.NestedValueProvider;
import org.apache.beam.sdk.options.ValueProvider.RuntimeValueProvider;
@@ -289,4 +291,26 @@ public class ValueProviderTest {
StaticValueProvider.of("foo"), new NonSerializableTranslator());
SerializableUtils.ensureSerializable(nvp);
}
+
+ private static class IncrementAtomicIntegerTranslator
+ implements SerializableFunction<AtomicInteger, Integer> {
+ @Override
+ public Integer apply(AtomicInteger from) {
+ return from.incrementAndGet();
+ }
+ }
+
+ @Test
+ public void testNestedValueProviderCached() throws Exception {
+ AtomicInteger increment = new AtomicInteger();
+ ValueProvider<Integer> nvp = NestedValueProvider.of(
+ StaticValueProvider.of(increment), new IncrementAtomicIntegerTranslator());
+ Integer originalValue = nvp.get();
+ Integer cachedValue = nvp.get();
+ Integer incrementValue = increment.incrementAndGet();
+ Integer secondCachedValue = nvp.get();
+ assertEquals(originalValue, cachedValue);
+ assertEquals(secondCachedValue, cachedValue);
+ assertNotEquals(originalValue, incrementValue);
+ }
}
[2/2] beam git commit: [BEAM-551] Cache value in NVP.get()
Posted by lc...@apache.org.
[BEAM-551] Cache value in NVP.get()
This closes #1698
Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/135d09f5
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/135d09f5
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/135d09f5
Branch: refs/heads/master
Commit: 135d09f5e78664ba4c9ee766c70ef860145ba33c
Parents: 6f4031a 055beed
Author: Luke Cwik <lc...@google.com>
Authored: Thu Dec 29 10:40:15 2016 -0800
Committer: Luke Cwik <lc...@google.com>
Committed: Thu Dec 29 10:40:15 2016 -0800
----------------------------------------------------------------------
.../apache/beam/sdk/options/ValueProvider.java | 6 ++++-
.../beam/sdk/options/ValueProviderTest.java | 24 ++++++++++++++++++++
2 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------