001    /*
002     * Copyright 2010-2014 JetBrains s.r.o.
003     *
004     * Licensed under the Apache License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.apache.org/licenses/LICENSE-2.0
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    
017    package org.jetbrains.jet.di;
018    
019    import com.intellij.openapi.project.Project;
020    import org.jetbrains.jet.context.GlobalContextImpl;
021    import org.jetbrains.jet.storage.LockBasedStorageManager;
022    import org.jetbrains.jet.lang.resolve.lazy.declarations.DeclarationProviderFactory;
023    import org.jetbrains.jet.lang.resolve.BindingTrace;
024    import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
025    import org.jetbrains.jet.lang.PlatformToKotlinClassMap;
026    import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
027    import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
028    import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
029    import org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter;
030    import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
031    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
032    import org.jetbrains.jet.lang.resolve.java.resolver.LazyResolveBasedCache;
033    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
034    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
035    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
036    import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaPropertyInitializerEvaluatorImpl;
037    import org.jetbrains.jet.lang.resolve.AnnotationResolver;
038    import org.jetbrains.jet.lang.resolve.calls.CallResolver;
039    import org.jetbrains.jet.lang.resolve.calls.ArgumentTypeResolver;
040    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
041    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingComponents;
042    import org.jetbrains.jet.lang.types.expressions.ControlStructureTypingUtils;
043    import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
044    import org.jetbrains.jet.lang.types.expressions.ForLoopConventionsChecker;
045    import org.jetbrains.jet.lang.reflect.ReflectionTypes;
046    import org.jetbrains.jet.lang.resolve.calls.CallExpressionResolver;
047    import org.jetbrains.jet.lang.resolve.DescriptorResolver;
048    import org.jetbrains.jet.lang.resolve.DelegatedPropertyResolver;
049    import org.jetbrains.jet.lang.resolve.TypeResolver;
050    import org.jetbrains.jet.lang.resolve.QualifiedExpressionResolver;
051    import org.jetbrains.jet.lang.resolve.calls.CallResolverExtensionProvider;
052    import org.jetbrains.jet.lang.resolve.calls.CandidateResolver;
053    import org.jetbrains.jet.lang.psi.JetImportsFactory;
054    import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider;
055    import org.jetbrains.jet.lang.resolve.ScriptBodyResolver;
056    import org.jetbrains.jet.lang.resolve.ScriptParameterResolver;
057    import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
058    import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
059    import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
060    import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers;
061    import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
062    import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
063    import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
064    import org.jetbrains.annotations.NotNull;
065    import javax.annotation.PreDestroy;
066    
067    /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
068    @SuppressWarnings("ALL")
069    public class InjectorForLazyResolveWithJava {
070        
071        private final Project project;
072        private final GlobalContextImpl globalContext;
073        private final LockBasedStorageManager lockBasedStorageManager;
074        private final DeclarationProviderFactory declarationProviderFactory;
075        private final BindingTrace bindingTrace;
076        private final ModuleDescriptorImpl module;
077        private final PlatformToKotlinClassMap platformToKotlinClassMap;
078        private final ResolveSession resolveSession;
079        private final JavaDescriptorResolver javaDescriptorResolver;
080        private final VirtualFileFinder virtualFileFinder;
081        private final MemberFilter memberFilter;
082        private final JavaClassFinderImpl javaClassFinder;
083        private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
084        private final LazyResolveBasedCache lazyResolveBasedCache;
085        private final TraceBasedErrorReporter traceBasedErrorReporter;
086        private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
087        private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
088        private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator;
089        private final AnnotationResolver annotationResolver;
090        private final CallResolver callResolver;
091        private final ArgumentTypeResolver argumentTypeResolver;
092        private final ExpressionTypingServices expressionTypingServices;
093        private final ExpressionTypingComponents expressionTypingComponents;
094        private final ControlStructureTypingUtils controlStructureTypingUtils;
095        private final ExpressionTypingUtils expressionTypingUtils;
096        private final ForLoopConventionsChecker forLoopConventionsChecker;
097        private final ReflectionTypes reflectionTypes;
098        private final CallExpressionResolver callExpressionResolver;
099        private final DescriptorResolver descriptorResolver;
100        private final DelegatedPropertyResolver delegatedPropertyResolver;
101        private final TypeResolver typeResolver;
102        private final QualifiedExpressionResolver qualifiedExpressionResolver;
103        private final CallResolverExtensionProvider callResolverExtensionProvider;
104        private final CandidateResolver candidateResolver;
105        private final JetImportsFactory jetImportsFactory;
106        private final ScopeProvider scopeProvider;
107        private final ScriptBodyResolver scriptBodyResolver;
108        private final ScriptParameterResolver scriptParameterResolver;
109        private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
110        private final GlobalJavaResolverContext globalJavaResolverContext;
111        private final DeserializedDescriptorResolver deserializedDescriptorResolver;
112        private final DescriptorDeserializers descriptorDeserializers;
113        private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
114        private final DescriptorDeserializersStorage descriptorDeserializersStorage;
115        private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
116        
117        public InjectorForLazyResolveWithJava(
118            @NotNull Project project,
119            @NotNull GlobalContextImpl globalContext,
120            @NotNull DeclarationProviderFactory declarationProviderFactory,
121            @NotNull BindingTrace bindingTrace
122        ) {
123            this.project = project;
124            this.globalContext = globalContext;
125            this.lockBasedStorageManager = globalContext.getStorageManager();
126            this.declarationProviderFactory = declarationProviderFactory;
127            this.bindingTrace = bindingTrace;
128            this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
129            this.platformToKotlinClassMap = module.getPlatformToKotlinClassMap();
130            this.resolveSession = new ResolveSession(project, globalContext, getModule(), declarationProviderFactory, bindingTrace);
131            this.javaClassFinder = new JavaClassFinderImpl();
132            this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
133            this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
134            this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
135            this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
136            this.traceBasedErrorReporter = new TraceBasedErrorReporter();
137            this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
138            this.lazyResolveBasedCache = new LazyResolveBasedCache();
139            this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl();
140            this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, javaClassFinder, virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, lazyResolveBasedCache, javaPropertyInitializerEvaluator);
141            this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
142            this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
143            this.memberFilter = org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter.ALWAYS_TRUE;
144            this.annotationResolver = new AnnotationResolver();
145            this.callResolver = new CallResolver();
146            this.argumentTypeResolver = new ArgumentTypeResolver();
147            this.expressionTypingComponents = new ExpressionTypingComponents();
148            this.expressionTypingServices = new ExpressionTypingServices(expressionTypingComponents);
149            this.controlStructureTypingUtils = new ControlStructureTypingUtils(expressionTypingServices);
150            this.expressionTypingUtils = new ExpressionTypingUtils(expressionTypingServices, callResolver);
151            this.forLoopConventionsChecker = new ForLoopConventionsChecker();
152            this.reflectionTypes = new ReflectionTypes(getModule());
153            this.callExpressionResolver = new CallExpressionResolver();
154            this.descriptorResolver = new DescriptorResolver();
155            this.delegatedPropertyResolver = new DelegatedPropertyResolver();
156            this.typeResolver = new TypeResolver();
157            this.qualifiedExpressionResolver = new QualifiedExpressionResolver();
158            this.callResolverExtensionProvider = new CallResolverExtensionProvider();
159            this.candidateResolver = new CandidateResolver();
160            this.jetImportsFactory = new JetImportsFactory();
161            this.scopeProvider = new ScopeProvider(getResolveSession());
162            this.scriptBodyResolver = new ScriptBodyResolver();
163            this.scriptParameterResolver = new ScriptParameterResolver();
164            this.descriptorDeserializers = new DescriptorDeserializers();
165            this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
166            this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
167            this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
168    
169            this.resolveSession.setAnnotationResolve(annotationResolver);
170            this.resolveSession.setDescriptorResolver(descriptorResolver);
171            this.resolveSession.setJetImportFactory(jetImportsFactory);
172            this.resolveSession.setQualifiedExpressionResolver(qualifiedExpressionResolver);
173            this.resolveSession.setScopeProvider(scopeProvider);
174            this.resolveSession.setScriptBodyResolver(scriptBodyResolver);
175            this.resolveSession.setScriptParameterResolver(scriptParameterResolver);
176            this.resolveSession.setTypeResolver(typeResolver);
177    
178            javaClassFinder.setProject(project);
179    
180            traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
181            traceBasedExternalSignatureResolver.setProject(project);
182            traceBasedExternalSignatureResolver.setTrace(bindingTrace);
183    
184            lazyResolveBasedCache.setSession(resolveSession);
185    
186            traceBasedErrorReporter.setTrace(bindingTrace);
187    
188            psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
189            psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
190    
191            annotationResolver.setCallResolver(callResolver);
192            annotationResolver.setStorageManager(lockBasedStorageManager);
193            annotationResolver.setTypeResolver(typeResolver);
194    
195            callResolver.setArgumentTypeResolver(argumentTypeResolver);
196            callResolver.setCandidateResolver(candidateResolver);
197            callResolver.setExpressionTypingServices(expressionTypingServices);
198            callResolver.setTypeResolver(typeResolver);
199    
200            argumentTypeResolver.setExpressionTypingServices(expressionTypingServices);
201            argumentTypeResolver.setTypeResolver(typeResolver);
202    
203            expressionTypingServices.setAnnotationResolver(annotationResolver);
204            expressionTypingServices.setCallExpressionResolver(callExpressionResolver);
205            expressionTypingServices.setCallResolver(callResolver);
206            expressionTypingServices.setDescriptorResolver(descriptorResolver);
207            expressionTypingServices.setExtensionProvider(callResolverExtensionProvider);
208            expressionTypingServices.setProject(project);
209            expressionTypingServices.setTypeResolver(typeResolver);
210    
211            expressionTypingComponents.setCallResolver(callResolver);
212            expressionTypingComponents.setControlStructureTypingUtils(controlStructureTypingUtils);
213            expressionTypingComponents.setExpressionTypingServices(expressionTypingServices);
214            expressionTypingComponents.setExpressionTypingUtils(expressionTypingUtils);
215            expressionTypingComponents.setForLoopConventionsChecker(forLoopConventionsChecker);
216            expressionTypingComponents.setGlobalContext(globalContext);
217            expressionTypingComponents.setPlatformToKotlinClassMap(platformToKotlinClassMap);
218            expressionTypingComponents.setReflectionTypes(reflectionTypes);
219    
220            forLoopConventionsChecker.setExpressionTypingServices(expressionTypingServices);
221            forLoopConventionsChecker.setExpressionTypingUtils(expressionTypingUtils);
222            forLoopConventionsChecker.setProject(project);
223    
224            callExpressionResolver.setExpressionTypingServices(expressionTypingServices);
225    
226            descriptorResolver.setAnnotationResolver(annotationResolver);
227            descriptorResolver.setDelegatedPropertyResolver(delegatedPropertyResolver);
228            descriptorResolver.setExpressionTypingServices(expressionTypingServices);
229            descriptorResolver.setStorageManager(lockBasedStorageManager);
230            descriptorResolver.setTypeResolver(typeResolver);
231    
232            delegatedPropertyResolver.setCallResolver(callResolver);
233            delegatedPropertyResolver.setExpressionTypingServices(expressionTypingServices);
234    
235            typeResolver.setAnnotationResolver(annotationResolver);
236            typeResolver.setModuleDescriptor(module);
237            typeResolver.setQualifiedExpressionResolver(qualifiedExpressionResolver);
238    
239            candidateResolver.setArgumentTypeResolver(argumentTypeResolver);
240    
241            jetImportsFactory.setProject(project);
242    
243            scriptBodyResolver.setExpressionTypingServices(expressionTypingServices);
244    
245            scriptParameterResolver.setDependencyClassByQualifiedNameResolver(javaDescriptorResolver);
246    
247            deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
248            deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
249            deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
250            deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
251            deserializedDescriptorResolver.setMemberFilter(memberFilter);
252            deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
253    
254            descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
255            descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
256    
257            annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
258            annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
259            annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
260            annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
261    
262            descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
263            descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
264    
265            constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
266            constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
267            constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
268            constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
269    
270            javaClassFinder.initialize();
271    
272        }
273        
274        @PreDestroy
275        public void destroy() {
276        }
277        
278        public ModuleDescriptorImpl getModule() {
279            return this.module;
280        }
281        
282        public ResolveSession getResolveSession() {
283            return this.resolveSession;
284        }
285        
286        public JavaDescriptorResolver getJavaDescriptorResolver() {
287            return this.javaDescriptorResolver;
288        }
289        
290    }