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