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.impl.ModuleDescriptorImpl;
024 import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
025 import org.jetbrains.jet.lang.resolve.java.JavaClassFinderImpl;
026 import com.intellij.psi.search.GlobalSearchScope;
027 import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
028 import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
029 import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
030 import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
031 import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
032 import org.jetbrains.jet.lang.resolve.java.structure.impl.JavaPropertyInitializerEvaluatorImpl;
033 import org.jetbrains.jet.lang.resolve.java.resolver.JavaSourceElementFactoryImpl;
034 import org.jetbrains.jet.lang.resolve.java.lazy.SingleModuleClassResolver;
035 import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
036 import org.jetbrains.jet.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
037 import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
038 import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
039 import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava;
040 import org.jetbrains.jet.lang.resolve.kotlin.JavaClassDataFinder;
041 import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader;
042 import org.jetbrains.jet.lang.resolve.kotlin.DescriptorLoadersStorage;
043 import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorLoader;
044 import org.jetbrains.annotations.NotNull;
045 import javax.annotation.PreDestroy;
046
047 /* This file is generated by org.jetbrains.jet.generators.injectors.InjectorsPackage. DO NOT EDIT! */
048 @SuppressWarnings("all")
049 public class InjectorForJavaDescriptorResolver {
050
051 private final Project project;
052 private final BindingTrace bindingTrace;
053 private final GlobalContextImpl globalContext;
054 private final LockBasedStorageManager lockBasedStorageManager;
055 private final ModuleDescriptorImpl module;
056 private final JavaDescriptorResolver javaDescriptorResolver;
057 private final JavaClassFinderImpl javaClassFinder;
058 private final GlobalSearchScope globalSearchScope;
059 private final TraceBasedExternalSignatureResolver traceBasedExternalSignatureResolver;
060 private final TraceBasedJavaResolverCache traceBasedJavaResolverCache;
061 private final TraceBasedErrorReporter traceBasedErrorReporter;
062 private final PsiBasedMethodSignatureChecker psiBasedMethodSignatureChecker;
063 private final PsiBasedExternalAnnotationResolver psiBasedExternalAnnotationResolver;
064 private final JavaPropertyInitializerEvaluatorImpl javaPropertyInitializerEvaluator;
065 private final JavaSourceElementFactoryImpl javaSourceElementFactory;
066 private final SingleModuleClassResolver singleModuleClassResolver;
067 private final VirtualFileFinder virtualFileFinder;
068 private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
069 private final GlobalJavaResolverContext globalJavaResolverContext;
070 private final DeserializedDescriptorResolver deserializedDescriptorResolver;
071 private final DeserializationGlobalContextForJava deserializationGlobalContextForJava;
072 private final JavaClassDataFinder javaClassDataFinder;
073 private final AnnotationDescriptorLoader annotationDescriptorLoader;
074 private final DescriptorLoadersStorage descriptorLoadersStorage;
075 private final ConstantDescriptorLoader constantDescriptorLoader;
076
077 public InjectorForJavaDescriptorResolver(
078 @NotNull Project project,
079 @NotNull BindingTrace bindingTrace
080 ) {
081 this.project = project;
082 this.bindingTrace = bindingTrace;
083 this.globalContext = org.jetbrains.jet.context.ContextPackage.GlobalContext();
084 this.lockBasedStorageManager = globalContext.getStorageManager();
085 this.module = org.jetbrains.jet.lang.resolve.java.TopDownAnalyzerFacadeForJVM.createJavaModule("<fake-jdr-module>");
086 this.javaClassFinder = new JavaClassFinderImpl();
087 this.virtualFileFinder = org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder.SERVICE.getInstance(project);
088 this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
089 this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
090 this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
091 this.traceBasedErrorReporter = new TraceBasedErrorReporter();
092 this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
093 this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
094 this.javaPropertyInitializerEvaluator = new JavaPropertyInitializerEvaluatorImpl();
095 this.javaSourceElementFactory = new JavaSourceElementFactoryImpl();
096 this.singleModuleClassResolver = new SingleModuleClassResolver();
097 this.globalJavaResolverContext = new GlobalJavaResolverContext(lockBasedStorageManager, getJavaClassFinder(), virtualFileFinder, deserializedDescriptorResolver, psiBasedExternalAnnotationResolver, traceBasedExternalSignatureResolver, traceBasedErrorReporter, psiBasedMethodSignatureChecker, traceBasedJavaResolverCache, javaPropertyInitializerEvaluator, javaSourceElementFactory, singleModuleClassResolver);
098 this.lazyJavaPackageFragmentProvider = new LazyJavaPackageFragmentProvider(globalJavaResolverContext, getModule());
099 this.javaDescriptorResolver = new JavaDescriptorResolver(lazyJavaPackageFragmentProvider, getModule());
100 this.globalSearchScope = com.intellij.psi.search.GlobalSearchScope.allScope(project);
101 this.javaClassDataFinder = new JavaClassDataFinder(virtualFileFinder, deserializedDescriptorResolver);
102 this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
103 this.constantDescriptorLoader = new ConstantDescriptorLoader();
104 this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, getModule(), javaClassDataFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
105 this.descriptorLoadersStorage = new DescriptorLoadersStorage(lockBasedStorageManager);
106
107 this.javaClassFinder.setProject(project);
108 this.javaClassFinder.setScope(globalSearchScope);
109
110 traceBasedExternalSignatureResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
111 traceBasedExternalSignatureResolver.setProject(project);
112 traceBasedExternalSignatureResolver.setTrace(bindingTrace);
113
114 traceBasedJavaResolverCache.setTrace(bindingTrace);
115
116 traceBasedErrorReporter.setTrace(bindingTrace);
117
118 psiBasedMethodSignatureChecker.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
119 psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
120
121 singleModuleClassResolver.setResolver(javaDescriptorResolver);
122
123 deserializedDescriptorResolver.setContext(deserializationGlobalContextForJava);
124 deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
125
126 annotationDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
127 annotationDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
128 annotationDescriptorLoader.setModule(module);
129 annotationDescriptorLoader.setStorage(descriptorLoadersStorage);
130
131 descriptorLoadersStorage.setErrorReporter(traceBasedErrorReporter);
132 descriptorLoadersStorage.setModule(module);
133
134 constantDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
135 constantDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
136 constantDescriptorLoader.setStorage(descriptorLoadersStorage);
137
138 javaClassFinder.initialize();
139
140 }
141
142 @PreDestroy
143 public void destroy() {
144 }
145
146 public GlobalContextImpl getGlobalContext() {
147 return this.globalContext;
148 }
149
150 public ModuleDescriptorImpl getModule() {
151 return this.module;
152 }
153
154 public JavaDescriptorResolver getJavaDescriptorResolver() {
155 return this.javaDescriptorResolver;
156 }
157
158 public JavaClassFinderImpl getJavaClassFinder() {
159 return this.javaClassFinder;
160 }
161
162 }