Registered annotations provider as a service instead of static class to avoid problems with projects disposal.

This commit is contained in:
Evgeny Gerashchenko
2012-07-02 23:21:22 +04:00
parent 23a1c85c44
commit fa3e3ee104
8 changed files with 29 additions and 45 deletions
+3 -6
View File
@@ -8,12 +8,6 @@
<depends optional="true">JUnit</depends>
<application-components>
<component>
<implementation-class>org.jetbrains.jet.plugin.extAnnotations.IdeaExternalAnnotationsProvider</implementation-class>
</component>
</application-components>
<project-components>
<component>
<implementation-class>org.jetbrains.jet.plugin.JetStandardLibraryInitializer</implementation-class>
@@ -77,6 +71,9 @@
<projectService serviceInterface="org.jetbrains.jet.lang.resolve.java.JetFilesProvider"
serviceImplementation="org.jetbrains.jet.plugin.project.PluginJetFilesProvider"/>
<projectService serviceInterface="org.jetbrains.jet.lang.resolve.java.extAnnotations.ExternalAnnotationsProvider"
serviceImplementation="org.jetbrains.jet.plugin.extAnnotations.IdeaExternalAnnotationsProvider"/>
<errorHandler implementation="org.jetbrains.jet.plugin.reporter.KotlinReportSubmitter"/>
<internalFileTemplate name="Kotlin File"/>
@@ -31,29 +31,20 @@ import org.jetbrains.jet.lang.resolve.java.extAnnotations.ExternalAnnotationsPro
* @since 6/26/12
*/
@Deprecated
public class IdeaExternalAnnotationsProvider extends ExternalAnnotationsProvider implements ApplicationComponent {
@Override
public PsiAnnotation findExternalAnnotation(@NotNull Project project, @NotNull PsiModifierListOwner listOwner, @NotNull String annotationFQN) {
return ExternalAnnotationsManager.getInstance(project).findExternalAnnotation(listOwner, annotationFQN);
public class IdeaExternalAnnotationsProvider extends ExternalAnnotationsProvider {
private final ExternalAnnotationsManager externalAnnotationsManager;
public IdeaExternalAnnotationsProvider(ExternalAnnotationsManager externalAnnotationsManager) {
this.externalAnnotationsManager = externalAnnotationsManager;
}
@Override
public PsiAnnotation[] findExternalAnnotations(@NotNull Project project, @NotNull PsiModifierListOwner listOwner) {
return ExternalAnnotationsManager.getInstance(project).findExternalAnnotations(listOwner);
public synchronized PsiAnnotation findExternalAnnotation(@NotNull PsiModifierListOwner listOwner, @NotNull String annotationFQN) {
return externalAnnotationsManager.findExternalAnnotation(listOwner, annotationFQN);
}
@Override
public void initComponent() {
ExternalAnnotationsProvider.setInstance(this);
}
@Override
public void disposeComponent() {
}
@NotNull
@Override
public String getComponentName() {
return getClass().getName();
public synchronized PsiAnnotation[] findExternalAnnotations(@NotNull PsiModifierListOwner listOwner) {
return externalAnnotationsManager.findExternalAnnotations(listOwner);
}
}