001    /*
002     * Copyright 2010-2013 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.lang.resolve.java.JavaClassFinderImpl;
022    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedExternalSignatureResolver;
023    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedJavaResolverCache;
024    import org.jetbrains.jet.lang.resolve.java.resolver.TraceBasedErrorReporter;
025    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedMethodSignatureChecker;
026    import org.jetbrains.jet.lang.resolve.java.resolver.PsiBasedExternalAnnotationResolver;
027    import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
028    import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClassFinder;
029    import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileFinder;
030    import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationResolver;
031    import org.jetbrains.jet.lang.resolve.java.resolver.JavaAnnotationArgumentResolver;
032    import org.jetbrains.jet.lang.resolve.java.resolver.JavaClassResolver;
033    import org.jetbrains.jet.lang.resolve.kotlin.DeserializedDescriptorResolver;
034    import org.jetbrains.jet.lang.resolve.kotlin.AnnotationDescriptorDeserializer;
035    import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver;
036    import org.jetbrains.jet.lang.resolve.java.resolver.JavaMemberResolver;
037    import org.jetbrains.jet.lang.resolve.java.resolver.JavaConstructorResolver;
038    import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeTransformer;
039    import org.jetbrains.jet.lang.resolve.java.resolver.JavaValueParameterResolver;
040    import org.jetbrains.jet.lang.resolve.java.resolver.JavaFunctionResolver;
041    import org.jetbrains.jet.lang.resolve.java.resolver.JavaTypeParameterResolver;
042    import org.jetbrains.jet.lang.resolve.java.resolver.JavaPropertyResolver;
043    import org.jetbrains.jet.lang.resolve.java.resolver.JavaSupertypeResolver;
044    import org.jetbrains.annotations.NotNull;
045    import javax.annotation.PreDestroy;
046    
047    /* This file is generated by org.jetbrains.jet.generators.injectors.GenerateInjectors. DO NOT EDIT! */
048    public class InjectorForJavaDescriptorResolver {
049        
050        private final Project project;
051        private final BindingTrace bindingTrace;
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 JavaDescriptorResolver javaDescriptorResolver;
059        private final VirtualFileKotlinClassFinder virtualFileKotlinClassFinder;
060        private final VirtualFileFinder virtualFileFinder;
061        private final JavaAnnotationResolver javaAnnotationResolver;
062        private final JavaAnnotationArgumentResolver javaAnnotationArgumentResolver;
063        private final JavaClassResolver javaClassResolver;
064        private final DeserializedDescriptorResolver deserializedDescriptorResolver;
065        private final AnnotationDescriptorDeserializer annotationDescriptorDeserializer;
066        private final JavaNamespaceResolver javaNamespaceResolver;
067        private final JavaMemberResolver javaMemberResolver;
068        private final JavaConstructorResolver javaConstructorResolver;
069        private final JavaTypeTransformer javaTypeTransformer;
070        private final JavaValueParameterResolver javaValueParameterResolver;
071        private final JavaFunctionResolver javaFunctionResolver;
072        private final JavaTypeParameterResolver javaTypeParameterResolver;
073        private final JavaPropertyResolver javaPropertyResolver;
074        private final JavaSupertypeResolver javaSupertypeResolver;
075        
076        public InjectorForJavaDescriptorResolver(
077            @NotNull Project project,
078            @NotNull BindingTrace bindingTrace
079        ) {
080            this.project = project;
081            this.bindingTrace = bindingTrace;
082            this.javaClassFinder = new JavaClassFinderImpl();
083            this.traceBasedExternalSignatureResolver = new TraceBasedExternalSignatureResolver();
084            this.traceBasedJavaResolverCache = new TraceBasedJavaResolverCache();
085            this.traceBasedErrorReporter = new TraceBasedErrorReporter();
086            this.psiBasedMethodSignatureChecker = new PsiBasedMethodSignatureChecker();
087            this.psiBasedExternalAnnotationResolver = new PsiBasedExternalAnnotationResolver();
088            this.javaDescriptorResolver = new JavaDescriptorResolver();
089            this.virtualFileKotlinClassFinder = new VirtualFileKotlinClassFinder();
090            this.virtualFileFinder = com.intellij.openapi.components.ServiceManager.getService(project, VirtualFileFinder.class);
091            this.javaAnnotationResolver = new JavaAnnotationResolver();
092            this.javaAnnotationArgumentResolver = new JavaAnnotationArgumentResolver();
093            this.javaClassResolver = new JavaClassResolver();
094            this.deserializedDescriptorResolver = new DeserializedDescriptorResolver();
095            this.annotationDescriptorDeserializer = new AnnotationDescriptorDeserializer();
096            this.javaNamespaceResolver = new JavaNamespaceResolver();
097            this.javaMemberResolver = new JavaMemberResolver();
098            this.javaConstructorResolver = new JavaConstructorResolver();
099            this.javaTypeTransformer = new JavaTypeTransformer();
100            this.javaValueParameterResolver = new JavaValueParameterResolver();
101            this.javaFunctionResolver = new JavaFunctionResolver();
102            this.javaTypeParameterResolver = new JavaTypeParameterResolver();
103            this.javaPropertyResolver = new JavaPropertyResolver();
104            this.javaSupertypeResolver = new JavaSupertypeResolver();
105    
106            this.javaClassFinder.setProject(project);
107    
108            traceBasedExternalSignatureResolver.setAnnotationResolver(javaAnnotationResolver);
109            traceBasedExternalSignatureResolver.setTrace(bindingTrace);
110    
111            traceBasedJavaResolverCache.setTrace(bindingTrace);
112    
113            traceBasedErrorReporter.setTrace(bindingTrace);
114    
115            psiBasedMethodSignatureChecker.setAnnotationResolver(javaAnnotationResolver);
116            psiBasedMethodSignatureChecker.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
117    
118            this.javaDescriptorResolver.setClassResolver(javaClassResolver);
119            this.javaDescriptorResolver.setNamespaceResolver(javaNamespaceResolver);
120    
121            virtualFileKotlinClassFinder.setVirtualFileFinder(virtualFileFinder);
122    
123            javaAnnotationResolver.setArgumentResolver(javaAnnotationArgumentResolver);
124            javaAnnotationResolver.setClassResolver(javaClassResolver);
125            javaAnnotationResolver.setExternalAnnotationResolver(psiBasedExternalAnnotationResolver);
126    
127            javaAnnotationArgumentResolver.setAnnotationResolver(javaAnnotationResolver);
128            javaAnnotationArgumentResolver.setClassResolver(javaClassResolver);
129            javaAnnotationArgumentResolver.setTypeTransformer(javaTypeTransformer);
130    
131            javaClassResolver.setAnnotationResolver(javaAnnotationResolver);
132            javaClassResolver.setCache(traceBasedJavaResolverCache);
133            javaClassResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
134            javaClassResolver.setFunctionResolver(javaFunctionResolver);
135            javaClassResolver.setJavaClassFinder(javaClassFinder);
136            javaClassResolver.setKotlinClassFinder(virtualFileKotlinClassFinder);
137            javaClassResolver.setMemberResolver(javaMemberResolver);
138            javaClassResolver.setNamespaceResolver(javaNamespaceResolver);
139            javaClassResolver.setSupertypesResolver(javaSupertypeResolver);
140            javaClassResolver.setTypeParameterResolver(javaTypeParameterResolver);
141    
142            deserializedDescriptorResolver.setAnnotationDeserializer(annotationDescriptorDeserializer);
143            deserializedDescriptorResolver.setErrorReporter(traceBasedErrorReporter);
144            deserializedDescriptorResolver.setJavaClassResolver(javaClassResolver);
145            deserializedDescriptorResolver.setJavaNamespaceResolver(javaNamespaceResolver);
146    
147            annotationDescriptorDeserializer.setErrorReporter(traceBasedErrorReporter);
148            annotationDescriptorDeserializer.setJavaClassResolver(javaClassResolver);
149            annotationDescriptorDeserializer.setKotlinClassFinder(virtualFileKotlinClassFinder);
150    
151            javaNamespaceResolver.setCache(traceBasedJavaResolverCache);
152            javaNamespaceResolver.setDeserializedDescriptorResolver(deserializedDescriptorResolver);
153            javaNamespaceResolver.setJavaClassFinder(javaClassFinder);
154            javaNamespaceResolver.setKotlinClassFinder(virtualFileKotlinClassFinder);
155            javaNamespaceResolver.setMemberResolver(javaMemberResolver);
156    
157            javaMemberResolver.setClassResolver(javaClassResolver);
158            javaMemberResolver.setConstructorResolver(javaConstructorResolver);
159            javaMemberResolver.setFunctionResolver(javaFunctionResolver);
160            javaMemberResolver.setNamespaceResolver(javaNamespaceResolver);
161            javaMemberResolver.setPropertyResolver(javaPropertyResolver);
162    
163            javaConstructorResolver.setCache(traceBasedJavaResolverCache);
164            javaConstructorResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
165            javaConstructorResolver.setTypeTransformer(javaTypeTransformer);
166            javaConstructorResolver.setValueParameterResolver(javaValueParameterResolver);
167    
168            javaTypeTransformer.setClassResolver(javaClassResolver);
169    
170            javaValueParameterResolver.setAnnotationResolver(javaAnnotationResolver);
171            javaValueParameterResolver.setTypeTransformer(javaTypeTransformer);
172    
173            javaFunctionResolver.setAnnotationResolver(javaAnnotationResolver);
174            javaFunctionResolver.setCache(traceBasedJavaResolverCache);
175            javaFunctionResolver.setErrorReporter(traceBasedErrorReporter);
176            javaFunctionResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
177            javaFunctionResolver.setSignatureChecker(psiBasedMethodSignatureChecker);
178            javaFunctionResolver.setTypeParameterResolver(javaTypeParameterResolver);
179            javaFunctionResolver.setTypeTransformer(javaTypeTransformer);
180            javaFunctionResolver.setValueParameterResolver(javaValueParameterResolver);
181    
182            javaTypeParameterResolver.setTypeTransformer(javaTypeTransformer);
183    
184            javaPropertyResolver.setAnnotationResolver(javaAnnotationResolver);
185            javaPropertyResolver.setCache(traceBasedJavaResolverCache);
186            javaPropertyResolver.setErrorReporter(traceBasedErrorReporter);
187            javaPropertyResolver.setExternalSignatureResolver(traceBasedExternalSignatureResolver);
188            javaPropertyResolver.setTypeTransformer(javaTypeTransformer);
189    
190            javaSupertypeResolver.setClassResolver(javaClassResolver);
191            javaSupertypeResolver.setTypeTransformer(javaTypeTransformer);
192    
193            javaClassFinder.initialize();
194    
195        }
196        
197        @PreDestroy
198        public void destroy() {
199        }
200        
201        public JavaClassFinderImpl getJavaClassFinder() {
202            return this.javaClassFinder;
203        }
204        
205        public JavaDescriptorResolver getJavaDescriptorResolver() {
206            return this.javaDescriptorResolver;
207        }
208        
209    }