android13/external/dagger2/javatests/dagger/functional/producers/SimpleProducerModule.java

282 lines
8.8 KiB
Java

/*
* Copyright (C) 2015 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.functional.producers;
import com.google.common.collect.ImmutableSet;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.SettableFuture;
import dagger.Lazy;
import dagger.multibindings.ElementsIntoSet;
import dagger.multibindings.IntoSet;
import dagger.producers.Produced;
import dagger.producers.Producer;
import dagger.producers.ProducerModule;
import dagger.producers.Produces;
import java.io.IOException;
import java.util.Set;
import javax.inject.Provider;
import javax.inject.Qualifier;
/**
* A module that contains various signatures of produces methods. This is not used in any
* components.
*/
@ProducerModule
final class SimpleProducerModule {
@Qualifier @interface Qual {
int value();
}
// Unique bindings.
@Produces
@Qual(-2)
static ListenableFuture<String> throwingProducer() {
throw new RuntimeException("monkey");
}
@Produces
@Qual(-1)
static ListenableFuture<String> settableFutureStr(SettableFuture<String> future) {
return future;
}
@Produces
@Qual(0)
static String str() {
return "str";
}
@Produces
@Qual(1)
static ListenableFuture<String> futureStr() {
return Futures.immediateFuture("future str");
}
@Produces
@Qual(2)
static String strWithArg(@SuppressWarnings("unused") int i) {
return "str with arg";
}
@Produces
@Qual(3)
static ListenableFuture<String> futureStrWithArg(@SuppressWarnings("unused") int i) {
return Futures.immediateFuture("future str with arg");
}
@Produces
@Qual(4)
@SuppressWarnings("unused") // unthrown exception for test
static String strThrowingException() throws IOException {
return "str throwing exception";
}
@Produces
@Qual(5)
@SuppressWarnings("unused") // unthrown exception for test
static ListenableFuture<String> futureStrThrowingException() throws IOException {
return Futures.immediateFuture("future str throwing exception");
}
@Produces
@Qual(6)
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static String strWithArgThrowingException(int i) throws IOException {
return "str with arg throwing exception";
}
@Produces
@Qual(7)
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static ListenableFuture<String> futureStrWithArgThrowingException(int i) throws IOException {
return Futures.immediateFuture("future str with arg throwing exception");
}
@Produces
@Qual(8)
static String strWithArgs(
@SuppressWarnings("unused") int i,
@SuppressWarnings("unused") Produced<Double> b,
@SuppressWarnings("unused") Producer<Object> c,
@SuppressWarnings("unused") Provider<Boolean> d) {
return "str with args";
}
@Produces
@Qual(9)
@SuppressWarnings("unused") // unthrown exception for test, unused parameters for test
static String strWithArgsThrowingException(
int i, Produced<Double> b, Producer<Object> c, Provider<Boolean> d) throws IOException {
return "str with args throwing exception";
}
@Produces
@Qual(10)
static ListenableFuture<String> futureStrWithArgs(
@SuppressWarnings("unused") int i,
@SuppressWarnings("unused") Produced<Double> b,
@SuppressWarnings("unused") Producer<Object> c,
@SuppressWarnings("unused") Provider<Boolean> d) {
return Futures.immediateFuture("future str with args");
}
@Produces
@Qual(11)
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static ListenableFuture<String> futureStrWithArgsThrowingException(
int i, Produced<Double> b, Producer<Object> c, Provider<Boolean> d) throws IOException {
return Futures.immediateFuture("str with args throwing exception");
}
@Produces
@Qual(12)
static String strWithFrameworkTypeArgs(
@SuppressWarnings("unused") @Qual(1) int i,
@SuppressWarnings("unused") @Qual(1) Provider<Integer> iProvider,
@SuppressWarnings("unused") @Qual(1) Lazy<Integer> iLazy,
@SuppressWarnings("unused") @Qual(2) int j,
@SuppressWarnings("unused") @Qual(2) Produced<Integer> jProduced,
@SuppressWarnings("unused") @Qual(2) Producer<Integer> jProducer,
@SuppressWarnings("unused") @Qual(3) Produced<Integer> kProduced,
@SuppressWarnings("unused") @Qual(3) Producer<Integer> kProducer) {
return "str with framework type args";
}
// Set bindings.
@Produces
@IntoSet
static String setOfStrElement() {
return "set of str element";
}
@Produces
@IntoSet
@SuppressWarnings("unused") // unthrown exception for test
static String setOfStrElementThrowingException() throws IOException {
return "set of str element throwing exception";
}
@Produces
@IntoSet
static ListenableFuture<String> setOfStrFutureElement() {
return Futures.immediateFuture("set of str element");
}
@Produces
@IntoSet
@SuppressWarnings("unused") // unthrown exception for test
static ListenableFuture<String> setOfStrFutureElementThrowingException() throws IOException {
return Futures.immediateFuture("set of str element throwing exception");
}
@Produces
@IntoSet
static String setOfStrElementWithArg(@SuppressWarnings("unused") int i) {
return "set of str element with arg";
}
@Produces
@IntoSet
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static String setOfStrElementWithArgThrowingException(int i) throws IOException {
return "set of str element with arg throwing exception";
}
@Produces
@IntoSet
static ListenableFuture<String> setOfStrFutureElementWithArg(@SuppressWarnings("unused") int i) {
return Futures.immediateFuture("set of str element with arg");
}
@Produces
@IntoSet
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static ListenableFuture<String> setOfStrFutureElementWithArgThrowingException(int i)
throws IOException {
return Futures.immediateFuture("set of str element with arg throwing exception");
}
@Produces
@ElementsIntoSet
static Set<String> setOfStrValues() {
return ImmutableSet.of("set of str 1", "set of str 2");
}
@Produces
@ElementsIntoSet
@SuppressWarnings("unused") // unthrown exception for test
static Set<String> setOfStrValuesThrowingException() throws IOException {
return ImmutableSet.of("set of str 1", "set of str 2 throwing exception");
}
@Produces
@ElementsIntoSet
static ListenableFuture<Set<String>> setOfStrFutureValues() {
return Futures.<Set<String>>immediateFuture(ImmutableSet.of("set of str 1", "set of str 2"));
}
@Produces
@ElementsIntoSet
@SuppressWarnings("unused") // unthrown exception for test
static ListenableFuture<Set<String>> setOfStrFutureValuesThrowingException() throws IOException {
return Futures.<Set<String>>immediateFuture(
ImmutableSet.of("set of str 1", "set of str 2 throwing exception"));
}
@Produces
@ElementsIntoSet
static Set<String> setOfStrValuesWithArg(@SuppressWarnings("unused") int i) {
return ImmutableSet.of("set of str with arg 1", "set of str with arg 2");
}
@Produces
@ElementsIntoSet
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static Set<String> setOfStrValuesWithArgThrowingException(int i) throws IOException {
return ImmutableSet.of("set of str with arg 1", "set of str with arg 2 throwing exception");
}
@Produces
@ElementsIntoSet
static ListenableFuture<Set<String>> setOfStrFutureValuesWithArg(
@SuppressWarnings("unused") int i) {
return Futures.<Set<String>>immediateFuture(
ImmutableSet.of("set of str with arg 1", "set of str with arg 2"));
}
@Produces
@ElementsIntoSet
@SuppressWarnings("unused") // unthrown exception for test, unused parameter for test
static ListenableFuture<Set<String>> setOfStrFutureValuesWithArgThrowingException(int i)
throws IOException {
return Futures.<Set<String>>immediateFuture(
ImmutableSet.of("set of str with arg 1", "set of str with arg 2 throwing exception"));
}
/**
* A binding method that might result in a generated factory with conflicting field and parameter
* names.
*/
@Produces
static Object object(int foo, Provider<String> fooProvider) {
return foo + fooProvider.get();
}
}