001package org.androidtransfuse.analysis.repository; 002 003import org.androidtransfuse.adapter.classes.ASTClassFactory; 004import org.androidtransfuse.analysis.astAnalyzer.*; 005 006import javax.inject.Inject; 007import javax.inject.Provider; 008import java.util.HashSet; 009import java.util.Set; 010 011/** 012 * @author John Ericksen 013 */ 014public class InjectionNodeBuilderRepositoryProvider implements Provider<InjectionNodeBuilderRepository> { 015 016 private final ASTClassFactory astClassFactory; 017 private final AOPProxyAnalyzer aopProxyAnalyzer; 018 private final InjectionAnalyzer injectionAnalyzer; 019 private final ListenerAnalysis methodCallbackAnalysis; 020 private final ScopeAnalysis scopeAnalysis; 021 private final DeclareFieldAnalysis declareFieldAnalysis; 022 private final ObservesAnalysis observesAnalysis; 023 private final NonConfigurationAnalysis nonConfigurationAnalysis; 024 private final AnnotationValidationAnalysis annotationValidationAnalysis; 025 private final ManualSuperAnalysis manualSuperAnalysis; 026 027 @Inject 028 public InjectionNodeBuilderRepositoryProvider(ASTClassFactory astClassFactory, AOPProxyAnalyzer aopProxyAnalyzer, InjectionAnalyzer injectionAnalyzer, ListenerAnalysis methodCallbackAnalysis, ScopeAnalysis scopeAnalysis, DeclareFieldAnalysis declareFieldAnalysis, ObservesAnalysis observesAnalysis, NonConfigurationAnalysis nonConfigurationAnalysis, AnnotationValidationAnalysis annotationValidationAnalysis, ManualSuperAnalysis manualSuperAnalysis) { 029 this.astClassFactory = astClassFactory; 030 this.aopProxyAnalyzer = aopProxyAnalyzer; 031 this.injectionAnalyzer = injectionAnalyzer; 032 this.methodCallbackAnalysis = methodCallbackAnalysis; 033 this.scopeAnalysis = scopeAnalysis; 034 this.declareFieldAnalysis = declareFieldAnalysis; 035 this.observesAnalysis = observesAnalysis; 036 this.nonConfigurationAnalysis = nonConfigurationAnalysis; 037 this.annotationValidationAnalysis = annotationValidationAnalysis; 038 this.manualSuperAnalysis = manualSuperAnalysis; 039 } 040 041 @Override 042 public InjectionNodeBuilderRepository get() { 043 Set<ASTAnalysis> analysisRepository = new HashSet<ASTAnalysis>(); 044 045 analysisRepository.add(aopProxyAnalyzer); 046 analysisRepository.add(injectionAnalyzer); 047 analysisRepository.add(methodCallbackAnalysis); 048 analysisRepository.add(scopeAnalysis); 049 analysisRepository.add(declareFieldAnalysis); 050 analysisRepository.add(observesAnalysis); 051 analysisRepository.add(nonConfigurationAnalysis); 052 analysisRepository.add(annotationValidationAnalysis); 053 analysisRepository.add(manualSuperAnalysis); 054 055 return new InjectionNodeBuilderRepository(analysisRepository, astClassFactory); 056 } 057}