diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/OrderEnumerationHandler.java b/platform/lang-impl/src/com/intellij/openapi/roots/OrderEnumerationHandler.java index b8320979f663..bb01efb1ffd5 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/OrderEnumerationHandler.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/OrderEnumerationHandler.java @@ -19,6 +19,7 @@ import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.Collection; @@ -26,12 +27,18 @@ import java.util.Collection; * @author nik */ public abstract class OrderEnumerationHandler { - public static final ExtensionPointName EP_NAME = - ExtensionPointName.create("com.intellij.orderEnumerationHandler"); + public static final ExtensionPointName EP_NAME = + ExtensionPointName.create("com.intellij.orderEnumerationHandlerFactory"); - public abstract boolean isApplicable(@NotNull Project project); + public static abstract class Factory { + + public abstract boolean isApplicable(@NotNull Project project); + + public abstract boolean isApplicable(@NotNull Module module); + + public abstract OrderEnumerationHandler createHandler(@Nullable Module module); + } - public abstract boolean isApplicable(@NotNull Module module); public static enum AddDependencyType {ADD, DO_NOT_ADD, DEFAULT} diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/impl/OrderEnumeratorBase.java b/platform/lang-impl/src/com/intellij/openapi/roots/impl/OrderEnumeratorBase.java index d4fab01e0fc1..ffb647d1a37e 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/impl/OrderEnumeratorBase.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/impl/OrderEnumeratorBase.java @@ -56,12 +56,12 @@ abstract class OrderEnumeratorBase extends OrderEnumerator implements OrderEnume public OrderEnumeratorBase(@Nullable Module module, @NotNull Project project, @Nullable OrderRootsCache cache) { myCache = cache; List customHandlers = null; - for (OrderEnumerationHandler handler : OrderEnumerationHandler.EP_NAME.getExtensions()) { - if (handler.isApplicable(project) && (module == null || handler.isApplicable(module))) { + for (OrderEnumerationHandler.Factory handlerFactory : OrderEnumerationHandler.EP_NAME.getExtensions()) { + if (handlerFactory.isApplicable(project) && (module == null || handlerFactory.isApplicable(module))) { if (customHandlers == null) { customHandlers = new SmartList(); } - customHandlers.add(handler); + customHandlers.add(handlerFactory.createHandler(module)); } } this.myCustomHandlers = customHandlers == null ? Collections.emptyList() : customHandlers; diff --git a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml index 53c99f5ea95d..730e624076f5 100644 --- a/platform/platform-resources/src/META-INF/LangExtensionPoints.xml +++ b/platform/platform-resources/src/META-INF/LangExtensionPoints.xml @@ -151,7 +151,7 @@ - + diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenOrderEnumeratorHandler.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenOrderEnumeratorHandler.java index a59b777e6c06..30703de93d25 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenOrderEnumeratorHandler.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/execution/MavenOrderEnumeratorHandler.java @@ -21,6 +21,7 @@ import com.intellij.openapi.roots.*; import com.intellij.openapi.vfs.VfsUtil; import org.jdom.Element; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.idea.maven.importing.MavenRootModelAdapter; import org.jetbrains.idea.maven.model.MavenArtifact; import org.jetbrains.idea.maven.model.MavenConstants; @@ -32,16 +33,26 @@ import java.util.Collection; import java.util.List; public class MavenOrderEnumeratorHandler extends OrderEnumerationHandler { - @Override - public boolean isApplicable(@NotNull Project project) { - return MavenProjectsManager.getInstance(project).isMavenizedProject(); + + public static class FactoryImpl extends OrderEnumerationHandler.Factory { + @Override + public boolean isApplicable(@NotNull Project project) { + return MavenProjectsManager.getInstance(project).isMavenizedProject(); + } + + @Override + public boolean isApplicable(@NotNull Module module) { + final MavenProjectsManager manager = MavenProjectsManager.getInstance(module.getProject()); + return manager.isMavenizedModule(module); + } + + @Override + public OrderEnumerationHandler createHandler(@Nullable Module module) { + return INSTANCE; + } } - @Override - public boolean isApplicable(@NotNull Module module) { - final MavenProjectsManager manager = MavenProjectsManager.getInstance(module.getProject()); - return manager.isMavenizedModule(module); - } + private static final MavenOrderEnumeratorHandler INSTANCE = new MavenOrderEnumeratorHandler(); @Override @NotNull diff --git a/plugins/maven/src/main/resources/META-INF/plugin.xml b/plugins/maven/src/main/resources/META-INF/plugin.xml index cb0a31872cb3..04df9dc48058 100644 --- a/plugins/maven/src/main/resources/META-INF/plugin.xml +++ b/plugins/maven/src/main/resources/META-INF/plugin.xml @@ -32,7 +32,7 @@ - +