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