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.java.structure.impl.JavaPropertyInitializerEvaluatorImpl;
032    import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
033    import org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter;
034    import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
035    import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
036    import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
037    import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializers;
038    import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
039    import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
040    import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
041    import org.jetbrains.annotations.NotNull;
042    import javax.annotation.PreDestroy;
043    
044    /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
045    @SuppressWarnings("ALL")
046    public class InjectorForJavaDescriptorResolver {
047        
048        private final Project project;
049        private final BindingTrace bindingTrace;
050        private final GlobalContextImpl globalContext;
051        private final LockBasedStorageManager lockBasedStorageManager;
052        private final ModuleDescriptorImpl module;
053        private final JavaDescriptorResolver javaDescriptorResolver;
054        private final JavaClassFinderImpl javaClassFinder;
055        private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
056        private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
057        private final TraceBasedErrorReporter traceBasedErrorReporter;
058        private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
059        private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
060        private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator;
061        private final VirtualFileFinder virtualFileFinder;
062        private final MemberFilter memberFilter;
063        private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
064        private final GlobalJavaResolverContext globalJavaResolverContext;
065        private final DeserializedDescriptorResolver deserializedDescriptorResolver;
066        private final DescriptorDeserializers descriptorDeserializers;
067        private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
068        private final DescriptorDeserializersStorage descriptorDeserializersStorage;
069        private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
070        
071        public InjectorForJavaDescriptorResolver(
072            @NotNull Project project,
073            @NotNull BindingTrace bindingTrace
074        ) {
075            this.project = project;
076            this.bindingTrace = bindingTrace;
077            this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
078            this.lockBasedStorageManager = globalContext.getStorageManager();
079            this.module = org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
080            this.javaClassFinder = new JavaClassFinderImpl();
081            this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
082            this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
083            this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
084            this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
085            this.traceBasedErrorReporter = new TraceBasedErrorReporter();
086            this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
087            this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
088            this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl();
089            this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator);
090            this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
091            this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
092            this.memberFilter = org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter.ALWAYS_TRUE;
093            this.descriptorDeserializers = new DescriptorDeserializers();
094            this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
095            this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
096            this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
097    
098            this.javaClassFinder.setProject(project);
099    
100            traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
101            traceBasedExternalSignatureResolver.setProject(project);
102            traceBasedExternalSignatureResolver.setTrace(bindingTrace);
103    
104            traceBasedJavaResolverCache.setTrace(bindingTrace);
105    
106            traceBasedErrorReporter.setTrace(bindingTrace);
107    
108            psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
109            psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
110    
111            deserializedDescriptorResolver.setDeserializers(descriptorDeserializers);
112            deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
113            deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
114            deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
115            deserializedDescriptorResolver.setMemberFilter(memberFilter);
116            deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
117    
118            descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
119            descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
120    
121            annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
122            annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
123            annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
124            annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
125    
126            descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
127            descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
128    
129            constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
130            constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
131            constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
132            constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
133    
134            javaClassFinder.initialize();
135    
136        }
137        
138        @PreDestroy
139        public void destroy() {
140        }
141        
142        public GlobalContextImpl getGlobalContext() {
143            return this.globalContext;
144        }
145        
146        public ModuleDescriptorImpl getModule() {
147            return this.module;
148        }
149        
150        public JavaDescriptorResolver getJavaDescriptorResolver() {
151            return this.javaDescriptorResolver;
152        }
153        
154        public JavaClassFinderImpl getJavaClassFinder() {
155            return this.javaClassFinder;
156        }
157        
158    }