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.lang.resolve.BindingTrace;
021    import org.jetbrains.jet.context.GlobalContextImpl;
022    import org.jetbrains.jet.storage.LockBasedStorageManager;
023    import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl;
024    import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
025    import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
026    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
027    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
028    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
029    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
030    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
031    import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
032    import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
033    import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
034    import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
035    import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
036    import org.jetbrains.annotations.NotNull;
037    import javax.annotation.PreDestroy;
038    
039    /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
040    @SuppressWarnings("ALL")
041    public class InjectorForJavaDescriptorResolver {
042        
043        private final Project project;
044        private final BindingTrace bindingTrace;
045        private final GlobalContextImpl globalContext;
046        private final LockBasedStorageManager lockBasedStorageManager;
047        private final ModuleDescriptorImpl module;
048        private final JavaDescriptorResolver javaDescriptorResolver;
049        private final JavaClassFinderImpl javaClassFinder;
050        private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
051        private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
052        private final TraceBasedErrorReporter traceBasedErrorReporter;
053        private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
054        private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
055        private final VirtualFileFinder virtualFileFinder;
056        private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
057        private final GlobalJavaResolverContext globalJavaResolverContext;
058        private final DeserializedDescriptorResolver deserializedDescriptorResolver;
059        private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
060        
061        public InjectorForJavaDescriptorResolver(
062            @NotNull Project project,
063            @NotNull BindingTrace bindingTrace
064        ) {
065            this.project = project;
066            this.bindingTrace = bindingTrace;
067            this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
068            this.lockBasedStorageManager = globalContext.getStorageManager();
069            this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
070            this.javaClassFinder = new JavaClassFinderImpl();
071            this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
072            this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
073            this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
074            this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
075            this.traceBasedErrorReporter = new TraceBasedErrorReporter();
076            this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
077            this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
078            this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache);
079            this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
080            this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
081            this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer(lockBasedStorageManager);
082    
083            this.javaClassFinder.setProject(project);
084    
085            traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
086            traceBasedExternalSignatureResolver.setTrace(bindingTrace);
087    
088            traceBasedJavaResolverCache.setTrace(bindingTrace);
089    
090            traceBasedErrorReporter.setTrace(bindingTrace);
091    
092            psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
093            psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
094    
095            deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
096            deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
097            deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
098            deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
099            deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
100    
101            annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
102            annotationDescriptorDeserializer.setJavaDescriptorResolver(javaDescriptorResolver);
103            annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
104    
105            javaClassFinder.initialize();
106    
107        }
108        
109        @PreDestroy
110        public void destroy() {
111        }
112        
113        public GlobalContextImpl getGlobalContext() {
114            return this.globalContext;
115        }
116        
117        public ModuleDescriptorImpl getModule() {
118            return this.module;
119        }
120        
121        public JavaDescriptorResolver getJavaDescriptorResolver() {
122            return this.javaDescriptorResolver;
123        }
124        
125        public JavaClassFinderImpl getJavaClassFinder() {
126            return this.javaClassFinder;
127        }
128        
129    }