diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java index e312f40589ca..09305bf7ca94 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPoint.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.stream.Stream; public interface ExtensionPoint { @NotNull @@ -26,6 +27,9 @@ public interface ExtensionPoint { @NotNull List getExtensionList(); + @NotNull + Stream extensions(); + boolean hasAnyExtensions(); @Nullable diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java index 6eec764eb898..2ce90894696c 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionPointName.java @@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.List; +import java.util.stream.Stream; public final class ExtensionPointName extends BaseExtensionPointName { public ExtensionPointName(@NotNull String name) { @@ -31,6 +32,11 @@ public final class ExtensionPointName extends BaseExtensionPointName { return getExtensionList(null); } + @NotNull + public Stream extensions() { + return extensions(null); + } + public boolean hasAnyExtensions() { return getPoint(null).hasAnyExtensions(); } @@ -45,6 +51,11 @@ public final class ExtensionPointName extends BaseExtensionPointName { return getPoint(areaInstance).getExtensions(); } + @NotNull + public Stream extensions(@Nullable AreaInstance areaInstance) { + return getPoint(areaInstance).extensions(); + } + @NotNull public ExtensionPoint getPoint(@Nullable AreaInstance areaInstance) { return Extensions.getArea(areaInstance).getExtensionPoint(getName()); diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java index e64ece2c6a10..abdbfac62398 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionPointImpl.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.TestOnly; import java.lang.reflect.Array; import java.util.*; +import java.util.stream.Stream; /** * @author AKireyev @@ -203,6 +204,12 @@ public final class ExtensionPointImpl implements ExtensionPoint { } } + @NotNull + @Override + public Stream extensions() { + return getExtensionList().stream(); + } + @Override public boolean hasAnyExtensions() { final List cache = myExtensionsCache;