<?xml version="1.0" encoding="UTF-8"?>
<!-- Search for CHANGEME in this document when copying and using it: -->
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<?xml-stylesheet type="text/xml" href="../../nbbuild/javadoctools/apichanges.xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<!--

INFO FOR PEOPLE ADDING CHANGES:

Check the DTD (apichanges.dtd) for details on the syntax. You do not
need to regenerate the HTML, as this is part of Javadoc generation; just
change the XML. Rough syntax of a change (several parts optional):

<change>
    <api name="compiler"/>
    <summary>Some brief description here, can use <b>XHTML</b></summary>
    <version major="1" minor="99"/>
    <date day="13" month="6" year="2001"/>
    <author login="jrhacker"/>
    <compatibility addition="yes"/>
    <description>
        The main description of the change here.
        Again can use full <b>XHTML</b> as needed.
    </description>
    <class package="org.openide.compiler" name="DoWhatIWantCompiler"/>
    <issue number="14309"/>
</change>

Also permitted elements: <package>, <branch>. <version> is API spec
version, recommended for all new changes. <compatibility> should say
if things were added/modified/deprecated/etc. and give all information
related to upgrading old code. List affected top-level classes and
link to issue numbers if applicable. See the DTD for more details.

Changes need not be in any particular order, they are sorted in various
ways by the stylesheet anyway.

Dates are assumed to mean "on the trunk". If you *also* make the same
change on a stabilization branch, use the <branch> tag to indicate this
and explain why the change was made on a branch in the <description>.

Please only change this file on the trunk! Rather: you can change it
on branches if you want, but these changes will be ignored; only the
trunk version of this file is important.

Deprecations do not count as incompatible, assuming that code using the
deprecated calls continues to see their documented behavior. But do
specify deprecation="yes" in <compatibility>.

This file is not a replacement for Javadoc: it is intended to list changes,
not describe the complete current behavior, for which ordinary documentation
is the proper place.

-->

<apichanges>

    <!-- First, a list of API names you may use: -->
    <apidefs>
        <apidef name="extexecution_api">External Execution API</apidef>
        <apidef name="extexecution_api_input">External Execution Input API</apidef>
        <apidef name="extexecution_api_print">External Execution Input Printing API</apidef>
        <apidef name="extexecution_api_startup">External Execution Startup Arguments API</apidef>
        <apidef name="extexecution_spi">External Execution SPI</apidef>
        <apidef name="extexecution_spi_destroy">External Execution Process Destroy SPI</apidef>
        <apidef name="extexecution_spi_open">External Execution Open Handler SPI</apidef>
        <apidef name="extexecution_spi_startup">External Execution Startup Arguments SPI</apidef>
        <!-- etc. -->
    </apidefs>

    <!-- ACTUAL CHANGES BEGIN HERE: -->

    <changes>
        <change>
            <api name="extexecution_api"/>
            <summary>StartupExtender may return unescaped parameters</summary>
            <version major="1" minor="62"/>
            <date day="10" month="8" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes"/>
            <description>
                The <a href="@TOP@/org/netbeans/spi/extexecution/startup/StartupExtenderImplementation.html">StartupExtenderImplementation</a> 
                javadoc did not specify how to handle parameters with spaces in them. Some of the implementations quote/escape the parameters they 
                return, but most of them not. This causes issues later when the parameters are processed or re-arranged into the final 
                commandline. This change allows a <a href="@TOP@/org/netbeans/spi/extexecution/startup/StartupExtenderImplementation.html">StartupExtenderImplementation</a>
                to declare its quoting policy.
            </description>
            <class package="org.netbeans.spi.extexecution.startup" name="StartupExtenderImplementation"/>
            <class package="org.netbeans.api.extexecution.startup" name="StartupExtender"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>postExecution callback with exit code value</summary>
            <version major="1" minor="61"/>
            <date day="12" month="5" year="2021"/>
            <author login="jtulach"/>
            <compatibility addition="yes"/>
            <description>
                Use overloaded <code>ExecutionDescriptor.postExecution</code>
                method to obtain exit code of just finished application.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExecutionDescriptor"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>Rerun action callback</summary>
            <version major="1" minor="46"/>
            <date day="18" month="5" year="2015"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                Allows the user of the API to register a callback to be invoked
                on rerun action.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExecutionDescriptor"/>
            <issue number="252283"/>
        </change>
        <change>
            <summary>API split and deprecation</summary>
            <version major="1" minor="44"/>
            <date day="1" month="6" year="2014"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                Splitting the API deprecating major parts.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExternalProcessSupport"/>
            <class package="org.netbeans.api.extexecution" name="ProcessBuilder"/>
            <class package="org.netbeans.api.extexecution.print" name="InputProcessors"/>
            <class package="org.netbeans.api.extexecution.print" name="LineProcessors"/>
            <class package="org.netbeans.spi.extexecution" name="ProcessBuilderImplementation"/>
            <package name="org.netbeans.api.extexecution.input"/>
            <package name="org.netbeans.spi.extexecution"/>
            <package name="org.netbeans.spi.extexecution.destroy"/>
            <issue number="244308"/>
        </change>
        <change>
            <api name="extexecution_spi"/>
            <summary>Advice to throw UserQuestionException</summary>
            <version major="1" minor="35"/>
            <date day="21" month="9" year="2012"/>
            <author login="jtulach"/>
            <compatibility addition="yes"/>
            <description>
                Providers of <code>ProcessBuilderImplementation</code> are
                advised to throw <code>UserQuestionException</code> in case
                they need some interaction with user.
            </description>
            <class package="org.netbeans.spi.extexecution" name="ProcessBuilderImplementation"/>
            <class package="org.netbeans.api.extexecution" name="ProcessBuilder"/>
            <issue number="217874"/>
        </change>
        <change>
            <api name="extexecution_spi_open"/>
            <summary>SPI to allow to split the API and implementation</summary>
            <version major="1" minor="33"/>
            <date day="31" month="8" year="2012"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                This API/SPI allow splitting the extexecution to real API
                and implementation classes.
            </description>
            <class package="org.netbeans.spi.extexecution.open" name="OptionOpenHandler"/>
            <class package="org.netbeans.spi.extexecution.open" name="FileOpenHandler"/>
            <class package="org.netbeans.spi.extexecution.open" name="HttpOpenHandler"/>
            <issue number="216882"/>
        </change>
        <change>
            <api name="extexecution_api_startup"/>
            <summary>SPI to allow extending process startup</summary>
            <version major="1" minor="30"/>
            <date day="7" month="2" year="2012"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                This API/SPI allow third party plugins (such as JRebel) to
                register extenders of process startup. The interested clients
                such as projects or servers may optionaly query such
                extenders and pass additional arguments to the process.
            </description>
            <class package="org.netbeans.api.extexecution.startup" name="StartupExtender"/>
            <class package="org.netbeans.spi.extexecution.startup" name="StartupExtenderImplementation"/>
            <issue number="206196"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>New API method to open IO tab on error</summary>
            <version major="1" minor="29"/>
            <date day="20" month="12" year="2011"/>
            <author login="phejl"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                Added configuration method to ExecutionDescriptor to allow
                opening of output tab on nonzero exit code.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExecutionDescriptor"/>
            <issue number="206254"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>New API/SPI to abstract process builder</summary>
            <version major="1" minor="28"/>
            <date day="21" month="11" year="2011"/>
            <author login="phejl"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                New API/SPI classes to allow different implementations
                of process builders.
            </description>
            <class package="org.netbeans.api.extexecution" name="ProcessBuilder"/>
            <class package="org.netbeans.spi.extexecution" name="ProcessBuilderFactory"/>
            <class package="org.netbeans.spi.extexecution" name="ProcessBuilderImplementation"/>
            <issue number="205104"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>New API method to avoid reset of custom IO</summary>
            <version major="1" minor="20"/>
            <date day="17" month="2" year="2010"/>
            <author login="phejl"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                Added configuration method to ExecutionDescriptor to make
                reset of IO optional for custom IO.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExecutionDescriptor"/>
            <issue number="180459"/>
        </change>
        <change>
            <api name="extexecution_spi_destroy"/>
            <summary>New SPI for improved external process termination</summary>
            <version major="1" minor="16"/>
            <date day="1" month="7" year="2009"/>
            <author login="mkleint"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                Added API/SPI support to kill the whole process tree on
                Process.destroy().
            </description>
            <class package="org.netbeans.api.extexecution" name="ExternalProcessSupport"/>
            <class package="org.netbeans.spi.extexecution.destroy" name="ProcessDestroyPerformer"/>
            <issue number="138116"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>Configurable charset for process streams</summary>
            <version major="1" minor="14"/>
            <date day="7" month="4" year="2008"/>
            <author login="phejl"/>
            <compatibility binary="compatible" source="compatible" semantic="compatible"/>
            <description>
                Added charset() method to ExecutionDescriptor to configure
                the charset used to decode process streams.
            </description>
            <class package="org.netbeans.api.extexecution" name="ExecutionDescriptor"/>
            <issue number="161607"/>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>Published as a stable API</summary>
            <version major="1" minor="13"/>
            <date day="20" month="11" year="2008"/>
            <author login="phejl"/>
            <compatibility binary="incompatible" source="incompatible" semantic="incompatible"/>
            <description>
                Published as a stable API. Refactored to API packages.
            </description>
        </change>
        <change>
            <api name="extexecution_api"/>
            <summary>Initial version released</summary>
            <version major="1" minor="6"/>
            <date day="1" month="7" year="2008"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                First initial release of the External Execution API.
            </description>
        </change>
    </changes>

    <!-- Now the surrounding HTML text and document structure: -->

    <htmlcontents>
<!--

                            NO NO NO NO NO!

         ==============>    DO NOT EDIT ME!  <==============

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE CHANGEME/apichanges.xml

-->
    <head>
      <title>Change History for the External Execution API</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
    </head>
    <body>

<p class="overviewlink"><a href="overview-summary.html">Overview</a></p>

<h1>Introduction</h1>

<p>This document lists changes made to the External Execution API.</p>

<!-- The actual lists of changes, as summaries and details: -->

      <hr/>
      
      <standard-changelists module-code-name="org.netbeans.modules.extexecution"/>

      <hr/><p>@FOOTER@</p>

    </body>
  </htmlcontents>

</apichanges>
