blob: c47855390fc2d882a03d36b12a67aaae1d138676 [file]
<idea-plugin>
<id>org.jetbrains.debugger.streams</id>
<name>Java Stream Debugger</name>
<vendor>JetBrains</vendor>
<category>Other Tools</category>
<depends>com.intellij.java</depends>
<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>
<resource-bundle>messages.StreamDebuggerBundle</resource-bundle>
<extensionPoints>
<extensionPoint name="librarySupport" interface="com.intellij.debugger.streams.lib.LibrarySupportProvider"/>
</extensionPoints>
<extensions defaultExtensionNs="org.jetbrains.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>
<actions>
<action id="StreamTracerAction"
class="com.intellij.debugger.streams.action.TraceStreamAction"
icon="JavaDebuggerStreamsIcons.Stream_debugger">
<add-to-group group-id="XDebugger.ToolWindow.TopToolbar" anchor="after" relative-to-action="EvaluateExpression"/>
</action>
</actions>
</idea-plugin>