Skip to content

Commit

Permalink
Showing 3 changed files with 25 additions and 32 deletions.
25 changes: 10 additions & 15 deletions java/dagger/internal/codegen/writing/FactoryGenerator.java
Original file line number Diff line number Diff line change
@@ -240,17 +240,7 @@ private MethodSpec getMethod(ProvisionBinding binding) {
.returns(providedTypeName);

ImmutableMap<DependencyRequest, FieldSpec> frameworkFields = frameworkFields(binding);
CodeBlock parametersCodeBlock =
makeParametersCodeBlock(
frameworkFieldUsages(binding.provisionDependencies(), frameworkFields).values());

if (binding.kind().equals(PROVISION)) {
binding
.nullableType()
.ifPresent(nullableType -> CodeBlocks.addAnnotation(getMethod, nullableType));
getMethod.addStatement(
"return $L",
ProvisionMethod.invoke(
CodeBlock invokeNewInstance = ProvisionMethod.invoke(
binding,
request ->
frameworkTypeUsageStatement(
@@ -261,11 +251,17 @@ private MethodSpec getMethod(ProvisionBinding binding) {
: Optional.empty(),
compilerOptions,
elements,
metadataUtil));
metadataUtil);

if (binding.kind().equals(PROVISION)) {
binding
.nullableType()
.ifPresent(nullableType -> CodeBlocks.addAnnotation(getMethod, nullableType));
getMethod.addStatement("return $L", invokeNewInstance);
} else if (!binding.injectionSites().isEmpty()) {
CodeBlock instance = CodeBlock.of("instance");
getMethod
.addStatement("$1T $2L = new $1T($3L)", providedTypeName, instance, parametersCodeBlock)
.addStatement("$T $L = $L", providedTypeName, instance, invokeNewInstance)
.addCode(
InjectionSiteMethod.invokeAll(
binding.injectionSites(),
@@ -278,8 +274,7 @@ private MethodSpec getMethod(ProvisionBinding binding) {
metadataUtil))
.addStatement("return $L", instance);
} else {
getMethod.addStatement(
"return new $T($L)", providedTypeName, parametersCodeBlock);
getMethod.addStatement("return $L", invokeNewInstance);
}
return getMethod.build();
}
Original file line number Diff line number Diff line change
@@ -147,7 +147,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<T> get() {",
" return new GenericClass<T>(tProvider.get());",
" return newInstance(tProvider.get());",
" }",
"",
" public static <T> GenericClass_Factory<T> create(Provider<T> tProvider) {",
@@ -200,7 +200,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<A, B> get() {",
" GenericClass<A, B> instance = new GenericClass<A, B>();",
" GenericClass<A, B> instance = newInstance();",
" GenericClass_MembersInjector.injectA(instance, aProvider.get());",
" GenericClass_MembersInjector.injectRegister(instance, bProvider.get());",
" return instance;",
@@ -245,7 +245,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<T> get() {",
" return new GenericClass<T>();",
" return newInstance();",
" }",
"",
" @SuppressWarnings(\"unchecked\")",
@@ -294,7 +294,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<A, B> get() {",
" return new GenericClass<A, B>(aProvider.get(), bProvider.get());",
" return newInstance(aProvider.get(), bProvider.get());",
" }",
"",
" public static <A, B> GenericClass_Factory<A, B> create(",
@@ -353,8 +353,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<A, B, C> get() {",
" return new GenericClass<A, B, C>(",
" aProvider.get(), bProvider.get(), cProvider.get());",
" return newInstance(aProvider.get(), bProvider.get(), cProvider.get());",
" }",
"",
" public static <A extends Number & Comparable<A>,",
@@ -457,7 +456,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public GenericClass<A, B> get() {",
" return new GenericClass<A, B>(",
" return newInstance(",
" aProvider.get(),",
" a2Provider.get(),",
" paProvider,",
@@ -1080,7 +1079,7 @@ public final class InjectConstructorFactoryGeneratorTest {
" }",
"",
" @Override public InjectConstructor get() {",
" return new InjectConstructor(sProvider.get());",
" return newInstance(sProvider.get());",
" }",
"",
" public static InjectConstructor_Factory create(Provider<String> sProvider) {",
@@ -1133,7 +1132,7 @@ public final class InjectConstructorFactoryGeneratorTest {
"",
" @Override",
" public AllInjections get() {",
" AllInjections instance = new AllInjections(sProvider.get());",
" AllInjections instance = newInstance(sProvider.get());",
" AllInjections_MembersInjector.injectS(instance, sProvider2.get());",
" AllInjections_MembersInjector.injectS2(instance, sProvider3.get());",
" return instance;",
@@ -1188,7 +1187,7 @@ public void wildcardDependency() {
" }",
"",
" @Override public InjectConstructor get() {",
" return new InjectConstructor(objectsProvider.get());",
" return newInstance(objectsProvider.get());",
" }",
"",
" public static InjectConstructor_Factory create(",
@@ -1240,7 +1239,7 @@ public void basicNameCollision() {
" }",
"",
" @Override public InjectConstructor get() {",
" return new InjectConstructor(factoryProvider.get());",
" return newInstance(factoryProvider.get());",
" }",
"",
" public static InjectConstructor_Factory create(",
@@ -1297,7 +1296,7 @@ public void nestedNameCollision() {
" }",
"",
" @Override public InjectConstructor get() {",
" return new InjectConstructor(factoryProvider.get());",
" return newInstance(factoryProvider.get());",
" }",
"",
" public static InjectConstructor_Factory create(",
@@ -1359,8 +1358,7 @@ public void samePackageNameCollision() {
" }",
"",
" @Override public InjectConstructor get() {",
" return new InjectConstructor(",
" otherPackageProvider.get(), samePackageProvider.get());",
" return newInstance(otherPackageProvider.get(), samePackageProvider.get());",
" }",
"",
" public static InjectConstructor_Factory create(",
@@ -1404,7 +1402,7 @@ public void noDeps() {
" private static final SimpleType_Factory INSTANCE = new SimpleType_Factory();",
"",
" @Override public SimpleType get() {",
" return new SimpleType();",
" return newInstance();",
" }",
"",
" public static SimpleType_Factory create() {",
@@ -1450,7 +1448,7 @@ public void noDeps() {
" private static final OuterType_A_Factory INSTANCE = new OuterType_A_Factory();",
"",
" @Override public OuterType.A get() {",
" return new OuterType.A();",
" return newInstance();",
" }",
"",
" public static OuterType_A_Factory create() {",
Original file line number Diff line number Diff line change
@@ -1195,7 +1195,7 @@ public void injectsPrimitive() {
"",
" @Override",
" public InjectedType get() {",
" InjectedType instance = new InjectedType();",
" InjectedType instance = newInstance();",
" InjectedType_MembersInjector.injectPrimitiveInt(",
" instance, primitiveIntProvider.get());",
" InjectedType_MembersInjector.injectBoxedInt(instance, boxedIntProvider.get());",

0 comments on commit 6364fef

Please sign in to comment.