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.descriptors.serialization.descriptors.MemberFilter;
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.DescriptorDeserializers;
038 import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
039 import org.jetbrains.jet.lang.resolve.kotlin.DescriptorDeserializersStorage;
040 import org.jetbrains.jet.lang.resolve.kotlin.ConstantDescriptorDeserializer;
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 MemberFilter memberFilter;
063 private final LazyJavaPackageFragmentProvider lazyJavaPackageFragmentProvider;
064 private final GlobalJavaResolverContext globalJavaResolverContext;
065 private final DeserializedDescriptorResolver deserializedDescriptorResolver;
066 private final DescriptorDeserializers descriptorDeserializers;
067 private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
068 private final DescriptorDeserializersStorage descriptorDeserializersStorage;
069 private final ConstantDescriptorDeserializer constantDescriptorDeserializer;
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.memberFilter = org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter.ALWAYS_TRUE;
093 this.descriptorDeserializers = new DescriptorDeserializers();
094 this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
095 this.descriptorDeserializersStorage = new DescriptorDeserializersStorage(lockBasedStorageManager);
096 this.constantDescriptorDeserializer = new ConstantDescriptorDeserializer();
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.setDeserializers(descriptorDeserializers);
112 deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
113 deserializedDescriptorResolver.setJavaDescriptorResolver(javaDescriptorResolver);
114 deserializedDescriptorResolver.setJavaPackageFragmentProvider(lazyJavaPackageFragmentProvider);
115 deserializedDescriptorResolver.setMemberFilter(memberFilter);
116 deserializedDescriptorResolver.setStorageManager(lockBasedStorageManager);
117
118 descriptorDeserializers.setAnnotationDescriptorDeserializer(annotationDescriptorDeserializer);
119 descriptorDeserializers.setConstantDescriptorDeserializer(constantDescriptorDeserializer);
120
121 annotationDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
122 annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
123 annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
124 annotationDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
125
126 descriptorDeserializersStorage.setClassResolver(javaDescriptorResolver);
127 descriptorDeserializersStorage.setErrorReporter(traceBasedErrorReporter);
128
129 constantDescriptorDeserializer.setClassResolver(javaDescriptorResolver);
130 constantDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
131 constantDescriptorDeserializer.setKotlinClassFinder(virtualFileFinder);
132 constantDescriptorDeserializer.setStorage(descriptorDeserializersStorage);
133
134 javaClassFinder.initialize();
135
136 }
137
138 @PreDestroy
139 public void destroy() {
140 }
141
142 public GlobalContextImpl getGlobalContext() {
143 return this.globalContext;
144 }
145
146 public ModuleDescriptorImpl getModule() {
147 return this.module;
148 }
149
150 public JavaDescriptorResolver getJavaDescriptorResolver() {
151 return this.javaDescriptorResolver;
152 }
153
154 public JavaClassFinderImpl getJavaClassFinder() {
155 return this.javaClassFinder;
156 }
157
158 }