diff options
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.java | 20 |
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]; |