From 10b3c1f470a2f617decb7530a59410813331f0bf Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 15 Sep 2011 15:59:09 +0200 Subject: [PATCH] register PsiElementFactory as an independent service --- .../src/com/intellij/psi/impl/JavaPsiFacadeImpl.java | 4 +--- .../src/com/intellij/psi/PsiElementFactory.java | 11 +++++++++++ resources/src/META-INF/IdeaPlugin.xml | 2 ++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java b/java/java-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java index 301276ee86d7..dcca78f435f8 100644 --- a/java/java-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java +++ b/java/java-impl/src/com/intellij/psi/impl/JavaPsiFacadeImpl.java @@ -74,7 +74,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx implements Disposable { private final PsiResolveHelper myResolveHelper; private final JavadocManager myJavadocManager; private final PsiNameHelper myNameHelper; - private final PsiElementFactory myElementFactory; private final PsiConstantEvaluationHelper myConstantEvaluationHelper; private final ConcurrentMap myPackageCache = new ConcurrentHashMap(); private final Project myProject; @@ -92,7 +91,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx implements Disposable { myJavadocManager = new JavadocManagerImpl(project); myNameHelper = new PsiNameHelperImpl(this); myConstantEvaluationHelper = new PsiConstantEvaluationHelperImpl(); - myElementFactory = new PsiElementFactoryImpl(psiManager); List elementFinders = new ArrayList(); elementFinders.add(new PsiElementFinderImpl()); @@ -547,7 +545,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx implements Disposable { @NotNull public PsiElementFactory getElementFactory() { - return myElementFactory; + return PsiElementFactory.SERVICE.getInstance(myProject); } public void setAssertOnFileLoadingFilter(final VirtualFileFilter filter) { diff --git a/java/openapi/src/com/intellij/psi/PsiElementFactory.java b/java/openapi/src/com/intellij/psi/PsiElementFactory.java index 416ee4fe768f..00dbbcd9ffa1 100644 --- a/java/openapi/src/com/intellij/psi/PsiElementFactory.java +++ b/java/openapi/src/com/intellij/psi/PsiElementFactory.java @@ -15,6 +15,8 @@ */ package com.intellij.psi; +import com.intellij.openapi.components.ServiceManager; +import com.intellij.openapi.project.Project; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.javadoc.PsiDocTag; import com.intellij.psi.search.GlobalSearchScope; @@ -33,6 +35,15 @@ import java.util.Map; * @see com.intellij.psi.JavaPsiFacade#getElementFactory() */ public interface PsiElementFactory extends PsiJavaParserFacade, JVMElementFactory { + class SERVICE { + private SERVICE() { + } + + public static PsiElementFactory getInstance(Project project) { + return ServiceManager.getService(project, PsiElementFactory.class); + } + } + /** * Creates an empty class with the specified name. * diff --git a/resources/src/META-INF/IdeaPlugin.xml b/resources/src/META-INF/IdeaPlugin.xml index eb9e9869252d..49166727bb42 100644 --- a/resources/src/META-INF/IdeaPlugin.xml +++ b/resources/src/META-INF/IdeaPlugin.xml @@ -256,6 +256,8 @@ serviceImplementation="com.intellij.codeInsight.guess.impl.GuessManagerImpl"/> +