Files
openide/plugins/stream-debugger/resources/META-INF/plugin.xml
Nikolay Chashnikov 68600a7c36 [plugin model] specify namespace for plugins which main module depends on internal modules (IJPL-207059)
Until elements from the plugin descriptor are extracted to an explicit content module (see IJPL-212351), an empty 'content' tag is added with 'jetbrains' namespace to make internal modules accessible.

GitOrigin-RevId: b8e2d0d9a479cba4276d599e61fbd099a11921ee
2025-10-10 12:38:49 +00:00

47 lines
2.7 KiB
XML

<idea-plugin allow-bundled-update="true">
<id>org.jetbrains.debugger.streams</id>
<name>Java Stream Debugger</name>
<vendor>JetBrains</vendor>
<category>JVM Tools</category>
<dependencies>
<plugin id="com.intellij.java"/>
<module name="intellij.debugger.streams.core"/>
</dependencies>
<!--suppress PluginXmlValidity -->
<content namespace="jetbrains">
<!-- The implicit main module of the plugin depends on internal modules (intellij.debugger.streams.core), so it's required to set the namespace for it
todo: extract elements and dependencies to an explicit content module (see IJPL-212351) -->
</content>
<description><![CDATA[
<p>Visualizes chains of operations on Java streams.</p>
<p>In some ways, Stream API is better than traditional loop approach: it takes full advantage of modern multi-core architectures,
and lets you process data in a declarative way. What's also good is that this approach helps to avoid the state issues, and the
code written in it looks more elegant. But, there's a certain downside to it: the code sometimes is sure hard to read, understand,
and, of course, to debug.</p>
<p>This plugin is here to amend that and offer solutions to the issues you might run into. It extends the <em>Debugger</em>
tool window by adding the <em>Trace Current Stream Chain</em> button, which becomes active when debugger stops inside of a
chain of Stream API calls.</p>
<img src="https://raw.githubusercontent.com/bibaev/static/master/debugger-stop.png" height="300" width="750">
<p>After you click it, the current data stream is evaluated and you get a visualization of what exactly happens to each element
from the first call to last, with changes occurring gradually as it's passing thru all the steps:</p>
<img src="https://raw.githubusercontent.com/bibaev/static/master/flat_mode.png" height="300" width="750">
<p>The <em>Split Mode button</em> in the left bottom corner lets you choose whether you want to see all operations at once or
separately:</p>
<img src="https://raw.githubusercontent.com/bibaev/static/master/split_mode.png" height="300" width="750">
<p>In the latter mode, you can switch between operations manually using the tabs on top.</p>
]]></description>
<extensions defaultExtensionNs="org.jetbrains.platform.debugger.streams">
<librarySupport implementation="com.intellij.debugger.streams.lib.impl.StandardLibrarySupportProvider"/>
<librarySupport implementation="com.intellij.debugger.streams.lib.impl.StreamExLibrarySupportProvider"/>
<librarySupport implementation="com.intellij.debugger.streams.lib.impl.JBIterableSupportProvider"/>
</extensions>
</idea-plugin>