Bypass creating a private method if the component api already exposes a method.
Example Change:
Before:
@Override
public Foo foo() {
return getFooInstance();
}
private Foo getFooInstance() {
return new Foo();
}
private Bar getBarInstance() {
return new Bar(getFooInstance());
}
After:
@Override
public Foo foo() {
return new Foo();
}
private Bar getBarInstance() {
return new Bar(foo());
}
-------------
Created by MOE: https://github.com/google/moe
MOE_MIGRATED_REVID=171602989
diff --git a/java/dagger/internal/codegen/ComponentBindingExpressions.java b/java/dagger/internal/codegen/ComponentBindingExpressions.java
index 7bb9312..11a1bd6 100644
--- a/java/dagger/internal/codegen/ComponentBindingExpressions.java
+++ b/java/dagger/internal/codegen/ComponentBindingExpressions.java
@@ -117,6 +117,17 @@
return dependencyExpression;
}
+ /**
+ * Returns an expression for the implementation of a component method with the given request.
+ *
+ * @throws IllegalStateException if there is no binding expression that satisfies the dependency
+ * request
+ */
+ Expression getComponentMethodExpression(DependencyRequest request, ClassName requestingClass) {
+ return getBindingExpression(request.bindingKey())
+ .getComponentMethodExpression(request, requestingClass);
+ }
+
private BindingExpression getBindingExpression(BindingKey bindingKey) {
for (Map<BindingKey, BindingExpression> bindingExpressionsMap : bindingExpressionsMaps) {
BindingExpression expression = bindingExpressionsMap.get(bindingKey);