summaryrefslogtreecommitdiff
path: root/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java')
-rw-r--r--compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java b/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
index 6b4bf876..8943200b 100644
--- a/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
+++ b/compiler/src/main/java/android/databinding/tool/reflection/ModelAnalyzer.java
@@ -19,6 +19,7 @@ import android.databinding.tool.reflection.annotation.AnnotationAnalyzer;
import android.databinding.tool.util.L;
import android.databinding.tool.util.Preconditions;
+import java.util.HashMap;
import java.util.Map;
import javax.annotation.processing.ProcessingEnvironment;
@@ -82,6 +83,8 @@ public abstract class ModelAnalyzer {
private ModelClass mViewStubType;
private static ModelAnalyzer sAnalyzer;
+ private final Map<String, InjectedBindingClass> mInjectedClasses =
+ new HashMap<String, InjectedBindingClass>();
protected void setInstance(ModelAnalyzer analyzer) {
sAnalyzer = analyzer;
@@ -218,12 +221,27 @@ public abstract class ModelAnalyzer {
return "null";
}
- public abstract ModelClass findClass(String className, Map<String, String> imports);
+ public final ModelClass findClass(String className, Map<String, String> imports) {
+ if (mInjectedClasses.containsKey(className)) {
+ return mInjectedClasses.get(className);
+ }
+ return findClassInternal(className, imports);
+ }
+
+ public abstract ModelClass findClassInternal(String className, Map<String, String> imports);
public abstract ModelClass findClass(Class classType);
public abstract TypeUtil createTypeUtil();
+ public ModelClass injectViewDataBinding(String className, Map<String, String> variables,
+ Map<String, String> fields) {
+ InjectedBindingClass injectedClass = new InjectedBindingClass(className,
+ ModelAnalyzer.VIEW_DATA_BINDING, variables, fields);
+ mInjectedClasses.put(className, injectedClass);
+ return injectedClass;
+ }
+
ModelClass[] getListTypes() {
if (mListTypes == null) {
mListTypes = new ModelClass[LIST_CLASS_NAMES.length];