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