From 50d7010f79b0b3d0d9dcec81951ba1ea1eb6ab41 Mon Sep 17 00:00:00 2001 From: ronshapiro Date: Mon, 7 Jan 2019 12:42:09 -0800 Subject: [PATCH] Create dagger.producers.Producers.immediate(Failed)Producer, so that users don't have to refer to the internal.Producers versions of those methods (or think that they aren't meant to be used, which they are. The old methods aren't removed yet, as cleanup will be required, and probably deprecation as well RELNOTES=Add `dagger.producers.Producers.immediate(Failed)Producer()` ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=228216479 --- java/dagger/producers/Producers.java | 66 +++++++++++++++++++ .../internal/MapOfProducerProducer.java | 2 +- java/dagger/producers/internal/Producers.java | 2 +- .../producers/internal/SetProducer.java | 2 +- .../internal/MapOfProducerProducerTest.java | 1 + .../producers/internal/MapProducerTest.java | 1 + .../internal/SetOfProducedProducerTest.java | 1 + .../producers/internal/SetProducerTest.java | 1 + 8 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 java/dagger/producers/Producers.java diff --git a/java/dagger/producers/Producers.java b/java/dagger/producers/Producers.java new file mode 100644 index 00000000000..1c8da03d94e --- /dev/null +++ b/java/dagger/producers/Producers.java @@ -0,0 +1,66 @@ +/* + * Copyright (C) 2014 The Dagger Authors. + * + * Licensed 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 dagger.producers; + +import com.google.common.util.concurrent.Futures; +import com.google.common.util.concurrent.ListenableFuture; +import dagger.internal.Beta; +import dagger.producers.internal.CancellableProducer; +import dagger.producers.internal.CancellationListener; + +/** Utility methods to create {@link Producer}s. */ +@Beta +public final class Producers { + /** Returns a producer that succeeds with the given value. */ + public static Producer immediateProducer(final T value) { + return new ImmediateProducer<>(Futures.immediateFuture(value)); + } + + /** Returns a producer that fails with the given exception. */ + public static Producer immediateFailedProducer(final Throwable throwable) { + return new ImmediateProducer<>(Futures.immediateFailedFuture(throwable)); + } + + /** A {@link CancellableProducer} with an immediate result. */ + private static final class ImmediateProducer implements CancellableProducer { + private final ListenableFuture future; + + ImmediateProducer(ListenableFuture future) { + this.future = future; + } + + @Override + public ListenableFuture get() { + return future; + } + + @Override + public void cancel(boolean mayInterruptIfRunning) {} + + @Override + public Producer newDependencyView() { + return this; + } + + @Override + public Producer newEntryPointView(CancellationListener cancellationListener) { + return this; + } + } + + private Producers() {} +} diff --git a/java/dagger/producers/internal/MapOfProducerProducer.java b/java/dagger/producers/internal/MapOfProducerProducer.java index ce6a7949fde..ad57c99a899 100644 --- a/java/dagger/producers/internal/MapOfProducerProducer.java +++ b/java/dagger/producers/internal/MapOfProducerProducer.java @@ -103,7 +103,7 @@ public Producer>> newEntryPointView( private Producer>> newTransformedValuesView( Function, Producer> valueTransformationFunction) { - return Producers.>>immediateProducer( + return dagger.producers.Producers.>>immediateProducer( ImmutableMap.copyOf(Maps.transformValues(contributingMap, valueTransformationFunction))); } diff --git a/java/dagger/producers/internal/Producers.java b/java/dagger/producers/internal/Producers.java index b50a95ef2aa..cc42c41bb69 100644 --- a/java/dagger/producers/internal/Producers.java +++ b/java/dagger/producers/internal/Producers.java @@ -207,7 +207,7 @@ public static void cancel(Producer producer, boolean mayInterruptIfRunning) { } private static final Producer> EMPTY_MAP_PRODUCER = - Producers.>immediateProducer(ImmutableMap.of()); + dagger.producers.Producers.>immediateProducer(ImmutableMap.of()); @SuppressWarnings("unchecked") // safe contravariant cast public static Producer> emptyMapProducer() { diff --git a/java/dagger/producers/internal/SetProducer.java b/java/dagger/producers/internal/SetProducer.java index 687b9ee3c53..c0196ae3f69 100644 --- a/java/dagger/producers/internal/SetProducer.java +++ b/java/dagger/producers/internal/SetProducer.java @@ -39,7 +39,7 @@ */ public final class SetProducer extends AbstractProducer> { private static final Producer> EMPTY_PRODUCER = - Producers.>immediateProducer(ImmutableSet.of()); + dagger.producers.Producers.>immediateProducer(ImmutableSet.of()); @SuppressWarnings({"unchecked", "rawtypes"}) // safe covariant cast public static Producer> empty() { diff --git a/javatests/dagger/producers/internal/MapOfProducerProducerTest.java b/javatests/dagger/producers/internal/MapOfProducerProducerTest.java index fe285ed5c5e..3420ffcb626 100644 --- a/javatests/dagger/producers/internal/MapOfProducerProducerTest.java +++ b/javatests/dagger/producers/internal/MapOfProducerProducerTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.fail; import dagger.producers.Producer; +import dagger.producers.Producers; import java.util.Map; import java.util.concurrent.ExecutionException; import org.junit.Test; diff --git a/javatests/dagger/producers/internal/MapProducerTest.java b/javatests/dagger/producers/internal/MapProducerTest.java index d1e314f1877..d94c4625b1c 100644 --- a/javatests/dagger/producers/internal/MapProducerTest.java +++ b/javatests/dagger/producers/internal/MapProducerTest.java @@ -20,6 +20,7 @@ import static org.junit.Assert.fail; import dagger.producers.Producer; +import dagger.producers.Producers; import java.util.Map; import java.util.concurrent.ExecutionException; import org.junit.Test; diff --git a/javatests/dagger/producers/internal/SetOfProducedProducerTest.java b/javatests/dagger/producers/internal/SetOfProducedProducerTest.java index 8588bf485d9..e189c08381e 100644 --- a/javatests/dagger/producers/internal/SetOfProducedProducerTest.java +++ b/javatests/dagger/producers/internal/SetOfProducedProducerTest.java @@ -23,6 +23,7 @@ import com.google.common.collect.Sets; import dagger.producers.Produced; import dagger.producers.Producer; +import dagger.producers.Producers; import java.util.Arrays; import java.util.Collections; import java.util.Set; diff --git a/javatests/dagger/producers/internal/SetProducerTest.java b/javatests/dagger/producers/internal/SetProducerTest.java index 12d293ce196..0788242c4d4 100644 --- a/javatests/dagger/producers/internal/SetProducerTest.java +++ b/javatests/dagger/producers/internal/SetProducerTest.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.util.concurrent.ListenableFuture; import dagger.producers.Producer; +import dagger.producers.Producers; import java.util.Collections; import java.util.Set; import java.util.concurrent.ExecutionException;