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}