You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
243 lines
4.8 KiB
243 lines
4.8 KiB
/*
|
|
* 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;
|
|
|
|
import dagger.Module;
|
|
import dagger.Provides;
|
|
import dagger.multibindings.ClassKey;
|
|
import dagger.multibindings.ElementsIntoSet;
|
|
import dagger.multibindings.IntKey;
|
|
import dagger.multibindings.IntoMap;
|
|
import dagger.multibindings.IntoSet;
|
|
import dagger.multibindings.LongKey;
|
|
import dagger.multibindings.StringKey;
|
|
import java.math.BigDecimal;
|
|
import java.math.BigInteger;
|
|
import java.util.Collection;
|
|
import java.util.HashSet;
|
|
import java.util.Map;
|
|
import java.util.Set;
|
|
import javax.inject.Named;
|
|
import javax.inject.Provider;
|
|
|
|
@Module
|
|
class MultibindingModule {
|
|
@Provides
|
|
@IntoMap
|
|
@StringKey("foo")
|
|
static String provideFooKey(@SuppressWarnings("unused") double doubleDependency) {
|
|
return "foo value";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@StringKey("bar")
|
|
static String provideBarKey() {
|
|
return "bar value";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@StringKey("foo")
|
|
static String[] provideFooArrayValue(@SuppressWarnings("unused") double doubleDependency) {
|
|
return new String[] {"foo1", "foo2"};
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@StringKey("bar")
|
|
static String[] provideBarArrayValue() {
|
|
return new String[] {"bar1", "bar2"};
|
|
}
|
|
|
|
@Provides
|
|
@IntoSet
|
|
static int provideFiveToSet() {
|
|
return 5;
|
|
}
|
|
|
|
@Provides
|
|
@IntoSet
|
|
static int provideSixToSet() {
|
|
return 6;
|
|
}
|
|
|
|
@Provides
|
|
@ElementsIntoSet
|
|
static Set<Integer> provideElementsIntoSet() {
|
|
Set<Integer> set = new HashSet<>();
|
|
set.add(-101);
|
|
set.add(-102);
|
|
return set;
|
|
}
|
|
|
|
@Provides
|
|
static Set<String> provideMapKeys(Map<String, Provider<String>> map) {
|
|
return map.keySet();
|
|
}
|
|
|
|
@Provides
|
|
static Collection<String> provideMapValues(Map<String, String> map) {
|
|
return map.values();
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@NestedAnnotationContainer.NestedWrappedKey(Integer.class)
|
|
static String valueForInteger() {
|
|
return "integer";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@NestedAnnotationContainer.NestedWrappedKey(Long.class)
|
|
static String valueForLong() {
|
|
return "long";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@ClassKey(Integer.class)
|
|
static String valueForClassInteger() {
|
|
return "integer";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@ClassKey(Long.class)
|
|
static String valueForClassLong() {
|
|
return "long";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@NumberClassKey(BigDecimal.class)
|
|
static String valueForNumberClassBigDecimal() {
|
|
return "bigdecimal";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@NumberClassKey(BigInteger.class)
|
|
static String valueForNumberClassBigInteger() {
|
|
return "biginteger";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@LongKey(100)
|
|
static String valueFor100Long() {
|
|
return "100 long";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@IntKey(100)
|
|
static String valueFor100Int() {
|
|
return "100 int";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@ShortKey(100)
|
|
static String valueFor100Short() {
|
|
return "100 short";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@ByteKey(100)
|
|
static String valueFor100Byte() {
|
|
return "100 byte";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@BooleanKey(true)
|
|
static String valueForTrue() {
|
|
return "true";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@CharKey('a')
|
|
static String valueForA() {
|
|
return "a char";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@CharKey('\n')
|
|
static String valueForNewline() {
|
|
return "newline char";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@UnwrappedAnnotationKey(@StringKey("foo\n"))
|
|
static String valueForUnwrappedAnnotationKeyFoo() {
|
|
return "foo annotation";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@WrappedAnnotationKey(
|
|
value = @StringKey("foo"),
|
|
integers = {1, 2, 3},
|
|
annotations = {},
|
|
classes = {Long.class, Integer.class}
|
|
)
|
|
static String valueForWrappedAnnotationKeyFoo() {
|
|
return "wrapped foo annotation";
|
|
}
|
|
|
|
@Provides
|
|
@IntoSet
|
|
@Named("complexQualifier")
|
|
static String valueForComplexQualifierSet() {
|
|
return "foo";
|
|
}
|
|
|
|
@Provides
|
|
@IntoSet
|
|
static CharSequence setContribution() {
|
|
return "foo";
|
|
}
|
|
|
|
@Provides
|
|
@IntoSet
|
|
@Named("complexQualifier")
|
|
static CharSequence qualifiedSetContribution() {
|
|
return "qualified foo";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@StringKey("key")
|
|
static CharSequence mapContribution() {
|
|
return "foo value";
|
|
}
|
|
|
|
@Provides
|
|
@IntoMap
|
|
@Named("complexQualifier")
|
|
@StringKey("key")
|
|
static CharSequence qualifiedMapContribution() {
|
|
return "qualified foo value";
|
|
}
|
|
}
|