170 lines
4.2 KiB
Java
170 lines
4.2 KiB
Java
/*
|
|
* Copyright (C) 2016 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.binds;
|
|
|
|
import dagger.Binds;
|
|
import dagger.Module;
|
|
import dagger.Provides;
|
|
import dagger.Reusable;
|
|
import dagger.functional.NeedsFactory;
|
|
import dagger.functional.SomeQualifier;
|
|
import dagger.multibindings.ElementsIntoSet;
|
|
import dagger.multibindings.IntKey;
|
|
import dagger.multibindings.IntoMap;
|
|
import dagger.multibindings.IntoSet;
|
|
import java.util.Arrays;
|
|
import java.util.Collection;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import java.util.TreeSet;
|
|
import javax.inject.Named;
|
|
import javax.inject.Singleton;
|
|
|
|
@Module(includes = InterfaceModule.class)
|
|
abstract class SimpleBindingModule {
|
|
|
|
// Regression test for b/161853413 that binds an implementation that extends a generated class
|
|
// that is processed in the same build unit as the @Binds method.
|
|
@Binds
|
|
abstract NeedsFactory.SomethingFactory bindFooFactory(NeedsFactory.SomethingFactoryImpl impl);
|
|
|
|
@Binds
|
|
abstract Object bindObject(FooOfStrings impl);
|
|
|
|
@Binds
|
|
@Reusable
|
|
@SomeQualifier
|
|
abstract Object bindReusableObject(FooOfStrings impl);
|
|
|
|
@Binds
|
|
abstract Foo<String> bindFooOfStrings(FooOfStrings impl);
|
|
|
|
@Binds
|
|
abstract Foo<? extends Number> bindFooOfNumbers(Foo<Integer> fooOfIntegers);
|
|
|
|
@Binds
|
|
@Singleton
|
|
@SomeQualifier
|
|
abstract Foo<String> bindQualifiedFooOfStrings(FooOfStrings impl);
|
|
|
|
@Provides
|
|
static Foo<Integer> provideFooOfIntegers() {
|
|
return new Foo<Integer>() {};
|
|
}
|
|
|
|
@Provides
|
|
static Foo<Double> provideFooOfDoubles() {
|
|
return new Foo<Double>() {};
|
|
}
|
|
|
|
@Binds
|
|
@IntoSet
|
|
abstract Foo<? extends Number> bindFooOfIntegersIntoSet(Foo<Integer> fooOfIntegers);
|
|
|
|
@Binds
|
|
@IntoSet
|
|
abstract Foo<? extends Number> bindFooExtendsNumberIntoSet(Foo<Double> fooOfDoubles);
|
|
|
|
@Binds
|
|
@ElementsIntoSet
|
|
abstract Set<Object> bindSetOfFooNumbersToObjects(Set<Foo<? extends Number>> setOfFooNumbers);
|
|
|
|
@Binds
|
|
@IntoSet
|
|
abstract Object bindFooOfStringsIntoSetOfObjects(FooOfStrings impl);
|
|
|
|
@Provides
|
|
static HashSet<String> provideStringHashSet() {
|
|
return new HashSet<>(Arrays.asList("hash-string1", "hash-string2"));
|
|
}
|
|
|
|
@Provides
|
|
static TreeSet<CharSequence> provideCharSequenceTreeSet() {
|
|
return new TreeSet<CharSequence>(Arrays.asList("tree-charSequence1", "tree-charSequence2"));
|
|
}
|
|
|
|
@Provides
|
|
static Collection<CharSequence> provideCharSequenceCollection() {
|
|
return Arrays.<CharSequence>asList("list-charSequence");
|
|
}
|
|
|
|
@Binds
|
|
@ElementsIntoSet
|
|
abstract Set<CharSequence> bindHashSetOfStrings(HashSet<String> set);
|
|
|
|
@Binds
|
|
@ElementsIntoSet
|
|
abstract Set<CharSequence> bindTreeSetOfCharSequences(TreeSet<CharSequence> set);
|
|
|
|
@Binds
|
|
@ElementsIntoSet
|
|
abstract Set<CharSequence> bindCollectionOfCharSequences(Collection<CharSequence> collection);
|
|
|
|
@Binds
|
|
@IntoMap
|
|
@IntKey(123)
|
|
abstract Object bind123ForMap(@Named("For-123") String string);
|
|
|
|
@Binds
|
|
@IntoMap
|
|
@IntKey(456)
|
|
abstract Object bind456ForMap(@Named("For-456") String string);
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@IntKey(789)
|
|
static Object provide789ForMap() {
|
|
return "789-string";
|
|
}
|
|
|
|
@Binds
|
|
@SomeQualifier
|
|
abstract int primitiveToPrimitive(int intValue);
|
|
|
|
@Binds
|
|
@IntoSet
|
|
abstract int intValueIntoSet(int intValue);
|
|
|
|
@Binds
|
|
@IntoMap
|
|
@IntKey(10)
|
|
abstract int intValueIntoMap(int intValue);
|
|
|
|
@Provides
|
|
static int intValue() {
|
|
return 100;
|
|
}
|
|
|
|
@Binds
|
|
@IntoMap
|
|
@IntKey(123)
|
|
@SomeQualifier
|
|
abstract Object bindFooOfStringsIntoQualifiedMap(FooOfStrings fooOfStrings);
|
|
|
|
@Provides
|
|
@Named("For-123")
|
|
static String provide123String() {
|
|
return "123-string";
|
|
}
|
|
|
|
@Provides
|
|
@Named("For-456")
|
|
static String provide456String() {
|
|
return "456-string";
|
|
}
|
|
}
|