|
19 | 19 | import static androidx.room.compiler.processing.XTypeKt.isVoid; |
20 | 20 | import static com.google.common.base.Preconditions.checkArgument; |
21 | 21 | import static com.google.common.base.Preconditions.checkNotNull; |
22 | | -import static com.google.common.collect.Iterables.getOnlyElement; |
23 | 22 | import static dagger.internal.codegen.base.Util.reentrantComputeIfAbsent; |
24 | 23 | import static dagger.internal.codegen.binding.BindingRequest.bindingRequest; |
25 | 24 | import static dagger.internal.codegen.javapoet.CodeBlocks.makeParametersCodeBlock; |
26 | 25 | import static dagger.internal.codegen.langmodel.Accessibility.isRawTypeAccessible; |
27 | 26 | import static dagger.internal.codegen.langmodel.Accessibility.isTypeAccessibleFrom; |
28 | 27 | import static dagger.internal.codegen.xprocessing.MethodSpecs.overriding; |
29 | | -import static dagger.internal.codegen.xprocessing.XElements.getSimpleName; |
30 | 28 | import static dagger.internal.codegen.xprocessing.XProcessingEnvs.isPreJava8SourceVersion; |
31 | 29 |
|
32 | | -import androidx.room.compiler.processing.XMethodElement; |
33 | 30 | import androidx.room.compiler.processing.XProcessingEnv; |
34 | 31 | import androidx.room.compiler.processing.XType; |
35 | 32 | import com.google.common.collect.ImmutableList; |
@@ -185,47 +182,26 @@ && isRawTypeAccessible(dependencyType, requestingClass.packageName())) { |
185 | 182 |
|
186 | 183 | /** Returns the implementation of a component method. */ |
187 | 184 | public MethodSpec getComponentMethod(ComponentMethodDescriptor componentMethod) { |
188 | | - checkArgument(componentMethod.dependencyRequest().isPresent()); |
189 | | - BindingRequest request = bindingRequest(componentMethod.dependencyRequest().get()); |
190 | 185 | return overriding(componentMethod.methodElement(), graph.componentTypeElement().getType()) |
191 | | - .addCode( |
192 | | - request.isRequestKind(RequestKind.MEMBERS_INJECTION) |
193 | | - ? getMembersInjectionComponentMethodImplementation(request, componentMethod) |
194 | | - : getContributionComponentMethodImplementation(request, componentMethod)) |
| 186 | + .addCode(getComponentMethodCodeBlock(componentMethod)) |
195 | 187 | .build(); |
196 | 188 | } |
197 | 189 |
|
198 | | - private CodeBlock getMembersInjectionComponentMethodImplementation( |
199 | | - BindingRequest request, ComponentMethodDescriptor componentMethod) { |
200 | | - checkArgument(request.isRequestKind(RequestKind.MEMBERS_INJECTION)); |
201 | | - XMethodElement methodElement = componentMethod.methodElement(); |
202 | | - RequestRepresentation requestRepresentation = getRequestRepresentation(request); |
203 | | - MembersInjectionBinding binding = |
204 | | - ((MembersInjectionRequestRepresentation) requestRepresentation).binding(); |
205 | | - if (binding.injectionSites().isEmpty()) { |
206 | | - // If there are no injection sites either do nothing (if the return type is void) or return |
207 | | - // the input instance as-is. |
208 | | - return isVoid(methodElement.getReturnType()) |
209 | | - ? CodeBlock.of("") |
210 | | - : CodeBlock.of( |
211 | | - "return $L;", getSimpleName(getOnlyElement(methodElement.getParameters()))); |
| 190 | + private CodeBlock getComponentMethodCodeBlock(ComponentMethodDescriptor componentMethod) { |
| 191 | + Expression expression = getComponentMethodExpression(componentMethod); |
| 192 | + if (isVoid(componentMethod.methodElement().getReturnType())) { |
| 193 | + return expression.codeBlock().isEmpty() |
| 194 | + ? expression.codeBlock() |
| 195 | + : CodeBlock.of("$L;", expression.codeBlock()); |
212 | 196 | } |
213 | | - Expression expression = getComponentMethodExpression(requestRepresentation, componentMethod); |
214 | | - return isVoid(methodElement.getReturnType()) |
215 | | - ? CodeBlock.of("$L;", expression.codeBlock()) |
216 | | - : CodeBlock.of("return $L;", expression.codeBlock()); |
217 | | - } |
218 | | - |
219 | | - private CodeBlock getContributionComponentMethodImplementation( |
220 | | - BindingRequest request, ComponentMethodDescriptor componentMethod) { |
221 | | - checkArgument(!request.isRequestKind(RequestKind.MEMBERS_INJECTION)); |
222 | | - Expression expression = |
223 | | - getComponentMethodExpression(getRequestRepresentation(request), componentMethod); |
224 | 197 | return CodeBlock.of("return $L;", expression.codeBlock()); |
225 | 198 | } |
226 | 199 |
|
227 | | - private Expression getComponentMethodExpression( |
228 | | - RequestRepresentation requestRepresentation, ComponentMethodDescriptor componentMethod) { |
| 200 | + private Expression getComponentMethodExpression(ComponentMethodDescriptor componentMethod) { |
| 201 | + checkArgument(componentMethod.dependencyRequest().isPresent()); |
| 202 | + BindingRequest request = bindingRequest(componentMethod.dependencyRequest().get()); |
| 203 | + RequestRepresentation requestRepresentation = getRequestRepresentation(request); |
| 204 | + |
229 | 205 | Expression expression = |
230 | 206 | requestRepresentation.getDependencyExpressionForComponentMethod( |
231 | 207 | componentMethod, componentImplementation); |
|
0 commit comments