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.lang.resolve.java.lazy.LazyJavaPackageFragmentProvider;
034 import org.jetbrains.jet.lang.resolve.java.lazy.GlobalJavaResolverContext;
035 import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
036 import org.jetbrains.jet.lang.resolve.kotlin.DeserializationGlobalContextForJava;
037 import org.jetbrains.jet.lang.resolve.kotlin.JavaDescriptorFinder;
038 import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorLoader;
039 import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
040 import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorLoader;
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 LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
063 private final GlobalJavaResolverContext globalJavaResolverContext;
064 private final DeserializedDescriptorResolver deserializedDescriptorResolver;
065 private final DeserializationGlobalContextForJava deserializationGlobalContextForJava;
066 private final JavaDescriptorFinder javaDescriptorFinder;
067 private final AnnotationDescriptorLoader annotationDescriptorLoader;
068 private final DescriptorDeserializersStorage descriptorDeserializersStorage;
069 private final ConstantDescriptorLoader constantDescriptorLoader;
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.javaDescriptorFinder = new JavaDescriptorFinder(getJavaDescriptorResolver(), lazyJavaPackageFragmentProvider);
093 this.annotationDescriptorLoader = new AnnotationDescriptorLoader();
094 this.constantDescriptorLoader = new ConstantDescriptorLoader();
095 this.deserializationGlobalContextForJava = new DeserializationGlobalContextForJava(lockBasedStorageManager, javaDescriptorFinder, annotationDescriptorLoader, constantDescriptorLoader, lazyJavaPackageFragmentProvider);
096 this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
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.setContext(deserializationGlobalContextForJava);
112 deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
113
114 annotationDescriptorLoader.setClassResolver(javaDescriptorResolver);
115 annotationDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
116 annotationDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
117 annotationDescriptorLoader.setStorage(descriptorDeserializersStorage);
118
119 descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
120 descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
121
122 constantDescriptorLoader.setClassResolver(javaDescriptorResolver);
123 constantDescriptorLoader.setErrorReporter(traceBasedErrorReporter);
124 constantDescriptorLoader.setKotlinClassFinder(virtualFileFinder);
125 constantDescriptorLoader.setStorage(descriptorDeserializersStorage);
126
127 javaClassFinder.initialize();
128
129 }
130
131 @PreDestroy
132 public void destroy() {
133 }
134
135 public GlobalContextImpl getGlobalContext() {
136 return this.globalContext;
137 }
138
139 public ModuleDescriptorImpl getModule() {
140 return this.module;
141 }
142
143 public JavaDescriptorResolver getJavaDescriptorResolver() {
144 return this.javaDescriptorResolver;
145 }
146
147 public JavaClassFinderImpl getJavaClassFinder() {
148 return this.javaClassFinder;
149 }
150
151 }