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 }