blob: 54f4a29fb10a8109ab5abe0155dc508485bcd5a3 [file] [log] [blame]
<html>
<!--
NO NO NO NO NO!
==============> DO NOT EDIT ME! <==============
AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT
SEE projects/projectapi/apichanges.xml
-->
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Change History for the Project API</title>
<link rel="stylesheet" href="prose.css" type="text/css">
</head>
<body>
<p class="overviewlink">
<a href="overview-summary.html" shape="rect">Overview</a>
</p>
<h1>Introduction</h1>
<p>This document lists changes made to the <a href="../org-netbeans-modules-projectapi/index.html" shape="rect">Project API</a>.</p>
<!-- The actual lists of changes, as summaries and details: -->
<hr>
<h1>
<a name="list-all-apis">Index of APIs</a>
</h1>
<ul>
<li>
<a href="#general">Project API</a>
</li>
</ul>
<h1>
<a name="incompat-by-date">Incompatible changes by date</a>
</h1>
<p>Fuller descriptions of all changes can be found below (follow links).</p>
<p>Not all deprecations are listed here, assuming that the deprecated
APIs continue to essentially work. For a full deprecation list, please
consult the
<a href="deprecated-list.html">Javadoc</a>.</p>
<ul>
<li>(Nov 15 '11) <a href="#SourceGroup.contains.IAE"><code>SourceGroup.contains</code> no longer throws <code>IllegalArgumentException</code></a>
</li>
</ul>
<h1>
<a name="all-by-date">All changes by date</a>
</h1>
<ul>
<li>(Mar 20 '17) <a href="#SourceGroupRelativeModifierImplementation">Added a <code>SourceGroupRelativeModifierImplementation</code> to improve source root creation</a>
</li>
<li>(Jun 8 '15) <a href="#SharabilityQueryMerger">Added a <code>LookupMerger</code> for <code>SharabilityQueryImplementation2</code></a>
</li>
<li>(Apr 30 '14) <a href="#ProjectManager.Result">More information in <code>ProjectManager.Result</code></a>
</li>
<li>(Apr 7 '14) <a href="#ProjectManagerImplementation">SPI interface for <code>ProjectManager</code></a>
</li>
<li>(Nov 20 '13) <a href="#DependencyProjectProvider"></a>
</li>
<li>(Sep 26 '12) <a href="#LookupProviderSupport.multi">New method createCompositeLookup(Lookup, Lookup) in LookupProviderSupport</a>
</li>
<li>(May 30 '12) <a href="#FOQ.UNOWNED">New constant UNOWNED in FileOwnerQuery to mark a folder as definitely not owned by any project.</a>
</li>
<li>(Mar 20 '12) <a href="#ActionProgress">Added <code>ActionProgress</code></a>
</li>
<li>(Nov 15 '11) <a href="#SourceGroup.contains.IAE"><code>SourceGroup.contains</code> no longer throws <code>IllegalArgumentException</code></a>
</li>
<li>(Sep 10 '11) <a href="#ActionProviderMerger">Added <code>LookupProviderSupport.createActionProviderMerger</code> factory method</a>
</li>
<li>(Mar 27 '11) <a href="#Profiler.Actions">Profiler actions are an integral part of the project infrastructure - just like the debugger actions</a>
</li>
<li>(Jun 24 '10) <a href="#ProjectIconAnnotator">Added <code>ProjectIconAnnotator</code></a>
</li>
<li>(Apr 15 '10) <a href="#MoveOrRenameOperationImplementation">Added <code>MoveOrRenameOperationImplementation</code></a>
</li>
<li>(Jul 21 '09) <a href="#ProjectUtils.getCacheDirectory">API complement to <code>CacheDirectoryProvider</code></a>
</li>
<li>(Feb 18 '09) <a href="#source-group-modifier">introduction of SourceGroupModifier, a way to create SourceGroup if missing</a>
</li>
<li>(Jan 23 '09) <a href="#ProjectServiceProvider">Add annotations <code>@ProjectServiceProvider</code> and <code>@LookupMerger.Registration</code></a>
</li>
<li>(Jan 13 '09) <a href="#projectfactory2">Provide project icon without actually loading the project</a>
</li>
<li>(Nov 13 '08) <a href="#lookupprovider-ann">Add annotation @LookupProvider.Registration</a>
</li>
<li>(Jul 9 '08) <a href="#test-single-method">Added class <code>SingleMethod</code></a>
</li>
<li>(Jun 9 '08) <a href="#ProjectUtils.getAuxiliaryConfiguration">Added <code>ProjectUtils.getAuxiliaryConfiguration</code></a>
</li>
<li>(Jun 9 '08) <a href="#projectutils-getPreferences">Added ProjectUtils.getPreferences.</a>
</li>
<li>(Oct 5 '06) <a href="#lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</li>
<li>(Sep 8 '06) <a href="#ProjectConfigurationProvider">Added support for project configurations</a>
</li>
<li>(Aug 22 '05) <a href="#copy-move-support">Added support for project delete/copy/rename/move</a>
</li>
<li>(May 27 '05) <a href="#markExternal-for-file-and-URIs">The FileOwnerQuery.markExternalOwner allows registration of individal files and URIs</a>
</li>
<li>(Dec 22 '04) <a href="#rel-vers-1">Switched to major release version 1</a>
</li>
</ul>
<h1>
<a name="all-by-version">Changes by version</a>
</h1>
<p>
These API specification versions may be used to indicate that a module
requires a certain API feature in order to function. For example, if you
see here a feature you need which is labelled <samp>1.20</samp>, your
manifest should contain in its main attributes the line:
</p>
<pre>OpenIDE-Module-Module-Dependencies: org.netbeans.modules.projectapi/1 &gt; 1.20</pre>
<ul>
<li>
(1.68) <a href="#SourceGroupRelativeModifierImplementation">Added a <code>SourceGroupRelativeModifierImplementation</code> to improve source root creation</a>
</li>
<li>
(1.64) <a href="#SharabilityQueryMerger">Added a <code>LookupMerger</code> for <code>SharabilityQueryImplementation2</code></a>
</li>
<li>
(1.60) <a href="#ProjectManager.Result">More information in <code>ProjectManager.Result</code></a>
</li>
<li>
(1.59) <a href="#ProjectManagerImplementation">SPI interface for <code>ProjectManager</code></a>
</li>
<li>
(1.56) <a href="#DependencyProjectProvider"></a>
</li>
<li>
(1.49) <a href="#LookupProviderSupport.multi">New method createCompositeLookup(Lookup, Lookup) in LookupProviderSupport</a>
</li>
<li>
(1.46) <a href="#FOQ.UNOWNED">New constant UNOWNED in FileOwnerQuery to mark a folder as definitely not owned by any project.</a>
</li>
<li>
(1.44) <a href="#Profiler.Actions">Profiler actions are an integral part of the project infrastructure - just like the debugger actions</a>
</li>
<li>
(1.43) <a href="#ActionProgress">Added <code>ActionProgress</code></a>
</li>
<li>
(1.40) <a href="#SourceGroup.contains.IAE"><code>SourceGroup.contains</code> no longer throws <code>IllegalArgumentException</code></a>
</li>
<li>
(1.38) <a href="#ActionProviderMerger">Added <code>LookupProviderSupport.createActionProviderMerger</code> factory method</a>
</li>
<li>
(1.33) <a href="#ProjectIconAnnotator">Added <code>ProjectIconAnnotator</code></a>
</li>
<li>
(1.31) <a href="#MoveOrRenameOperationImplementation">Added <code>MoveOrRenameOperationImplementation</code></a>
</li>
<li>
(1.26) <a href="#ProjectUtils.getCacheDirectory">API complement to <code>CacheDirectoryProvider</code></a>
</li>
<li>
(1.24) <a href="#source-group-modifier">introduction of SourceGroupModifier, a way to create SourceGroup if missing</a>
</li>
<li>
(1.23) <a href="#ProjectServiceProvider">Add annotations <code>@ProjectServiceProvider</code> and <code>@LookupMerger.Registration</code></a>
</li>
<li>
(1.22) <a href="#projectfactory2">Provide project icon without actually loading the project</a>
</li>
<li>
(1.21) <a href="#lookupprovider-ann">Add annotation @LookupProvider.Registration</a>
</li>
<li>
(1.19) <a href="#test-single-method">Added class <code>SingleMethod</code></a>
</li>
<li>
(1.17) <a href="#ProjectUtils.getAuxiliaryConfiguration">Added <code>ProjectUtils.getAuxiliaryConfiguration</code></a>
</li>
<li>
(1.16) <a href="#projectutils-getPreferences">Added ProjectUtils.getPreferences.</a>
</li>
<li>
(1.12) <a href="#lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</li>
<li>
(1.11) <a href="#ProjectConfigurationProvider">Added support for project configurations</a>
</li>
<li>
(1.7) <a href="#copy-move-support">Added support for project delete/copy/rename/move</a>
</li>
<li>
(1.5) <a href="#markExternal-for-file-and-URIs">The FileOwnerQuery.markExternalOwner allows registration of individal files and URIs</a>
</li>
<li>
(1.3) <a href="#rel-vers-1">Switched to major release version 1</a>
</li>
</ul>
<h1>
<a name="all-by-class">Changes by affected class</a>
</h1>
<h2>
<a name="org.netbeans.spi.project.ActionProgress"><code><span style="color:gray">org.netbeans.spi.project.</span>ActionProgress</code></a>
</h2><ul><li>(Mar 20 '12) <a href="#ActionProgress">Added <code>ActionProgress</code></a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ActionProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>ActionProvider</code></a>
</h2><ul><li>(Mar 27 '11) <a href="#Profiler.Actions">Profiler actions are an integral part of the project infrastructure - just like the debugger actions</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.AuxiliaryProperties"><code><span style="color:gray">org.netbeans.spi.project.</span>AuxiliaryProperties</code></a>
</h2><ul><li>(Jun 9 '08) <a href="#projectutils-getPreferences">Added ProjectUtils.getPreferences.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.DependencyProjectProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>DependencyProjectProvider</code></a>
</h2><ul><li>(Nov 20 '13) <a href="#DependencyProjectProvider"></a>
</li></ul><h2>
<a name="org.netbeans.api.project.FileOwnerQuery"><code><span style="color:gray">org.netbeans.api.project.</span>FileOwnerQuery</code></a>
</h2><ul><li>(May 30 '12) <a href="#FOQ.UNOWNED">New constant UNOWNED in FileOwnerQuery to mark a folder as definitely not owned by any project.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.LookupMerger"><code><span style="color:gray">org.netbeans.spi.project.</span>LookupMerger</code></a>
</h2><ul><li>(Jan 23 '09) <a href="#ProjectServiceProvider">Add annotations <code>@ProjectServiceProvider</code> and <code>@LookupMerger.Registration</code></a>
</li>
<li>(Oct 5 '06) <a href="#lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.LookupProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>LookupProvider</code></a>
</h2><ul><li>(Nov 13 '08) <a href="#lookupprovider-ann">Add annotation @LookupProvider.Registration</a>
</li>
<li>(Oct 5 '06) <a href="#lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.support.LookupProviderSupport"><code><span style="color:gray">org.netbeans.spi.project.support.</span>LookupProviderSupport</code></a>
</h2><ul><li>(Mar 20 '17) <a href="#SourceGroupRelativeModifierImplementation">Added a <code>SourceGroupRelativeModifierImplementation</code> to improve source root creation</a>
</li>
<li>(Jun 8 '15) <a href="#SharabilityQueryMerger">Added a <code>LookupMerger</code> for <code>SharabilityQueryImplementation2</code></a>
</li>
<li>(Sep 26 '12) <a href="#LookupProviderSupport.multi">New method createCompositeLookup(Lookup, Lookup) in LookupProviderSupport</a>
</li>
<li>(Sep 10 '11) <a href="#ActionProviderMerger">Added <code>LookupProviderSupport.createActionProviderMerger</code> factory method</a>
</li>
<li>(Oct 5 '06) <a href="#lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.MoveOrRenameOperationImplementation"><code><span style="color:gray">org.netbeans.spi.project.</span>MoveOrRenameOperationImplementation</code></a>
</h2><ul><li>(Apr 15 '10) <a href="#MoveOrRenameOperationImplementation">Added <code>MoveOrRenameOperationImplementation</code></a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectConfiguration"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectConfiguration</code></a>
</h2><ul><li>(Sep 8 '06) <a href="#ProjectConfigurationProvider">Added support for project configurations</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectConfigurationProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectConfigurationProvider</code></a>
</h2><ul><li>(Sep 8 '06) <a href="#ProjectConfigurationProvider">Added support for project configurations</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectContainerProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectContainerProvider</code></a>
</h2><ul><li>(Nov 20 '13) <a href="#DependencyProjectProvider"></a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectFactory2"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectFactory2</code></a>
</h2><ul><li>(Jan 13 '09) <a href="#projectfactory2">Provide project icon without actually loading the project</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectIconAnnotator"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectIconAnnotator</code></a>
</h2><ul><li>(Jun 24 '10) <a href="#ProjectIconAnnotator">Added <code>ProjectIconAnnotator</code></a>
</li></ul><h2>
<a name="org.netbeans.api.project.ProjectManager"><code><span style="color:gray">org.netbeans.api.project.</span>ProjectManager</code></a>
</h2><ul><li>(Apr 30 '14) <a href="#ProjectManager.Result">More information in <code>ProjectManager.Result</code></a>
</li>
<li>(Apr 7 '14) <a href="#ProjectManagerImplementation">SPI interface for <code>ProjectManager</code></a>
</li>
<li>(Jan 13 '09) <a href="#projectfactory2">Provide project icon without actually loading the project</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectManagerImplementation"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectManagerImplementation</code></a>
</h2><ul><li>(Apr 7 '14) <a href="#ProjectManagerImplementation">SPI interface for <code>ProjectManager</code></a>
</li></ul><h2>
<a name="org.netbeans.spi.project.ProjectServiceProvider"><code><span style="color:gray">org.netbeans.spi.project.</span>ProjectServiceProvider</code></a>
</h2><ul><li>(Jan 23 '09) <a href="#ProjectServiceProvider">Add annotations <code>@ProjectServiceProvider</code> and <code>@LookupMerger.Registration</code></a>
</li></ul><h2>
<a name="org.netbeans.api.project.ProjectUtils"><code><span style="color:gray">org.netbeans.api.project.</span>ProjectUtils</code></a>
</h2><ul><li>(Nov 20 '13) <a href="#DependencyProjectProvider"></a>
</li>
<li>(Jul 21 '09) <a href="#ProjectUtils.getCacheDirectory">API complement to <code>CacheDirectoryProvider</code></a>
</li>
<li>(Jun 9 '08) <a href="#ProjectUtils.getAuxiliaryConfiguration">Added <code>ProjectUtils.getAuxiliaryConfiguration</code></a>
</li>
<li>(Jun 9 '08) <a href="#projectutils-getPreferences">Added ProjectUtils.getPreferences.</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.SingleMethod"><code><span style="color:gray">org.netbeans.spi.project.</span>SingleMethod</code></a>
</h2><ul><li>(Jul 9 '08) <a href="#test-single-method">Added class <code>SingleMethod</code></a>
</li></ul><h2>
<a name="org.netbeans.api.project.SourceGroup"><code><span style="color:gray">org.netbeans.api.project.</span>SourceGroup</code></a>
</h2><ul><li>(Nov 15 '11) <a href="#SourceGroup.contains.IAE"><code>SourceGroup.contains</code> no longer throws <code>IllegalArgumentException</code></a>
</li></ul><h2>
<a name="org.netbeans.api.project.SourceGroupModifier"><code><span style="color:gray">org.netbeans.api.project.</span>SourceGroupModifier</code></a>
</h2><ul><li>(Feb 18 '09) <a href="#source-group-modifier">introduction of SourceGroupModifier, a way to create SourceGroup if missing</a>
</li></ul><h2>
<a name="org.netbeans.spi.project.SourceGroupModifierImplementation"><code><span style="color:gray">org.netbeans.spi.project.</span>SourceGroupModifierImplementation</code></a>
</h2><ul><li>(Feb 18 '09) <a href="#source-group-modifier">introduction of SourceGroupModifier, a way to create SourceGroup if missing</a>
</li></ul><hr>
<h1>
<a name="details-by-api">Details of all changes by API and date</a>
</h1>
<hr style="width:50%">
<h2>
<a name="general">Project API</a>
</h2>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="SourceGroupRelativeModifierImplementation">Added a <code>SourceGroupRelativeModifierImplementation</code> to improve source root creation</a>
</h3>
<em>Mar 20 '17; API spec. version: 1.68; affected top-level classes: <a href="./org/netbeans/spi/project/support/LookupProviderSupport.html"><code>LookupProviderSupport</code></a>; made by: sdedic; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=253355">
#253355</a></em>
<br>
<p>
In presence of multiple source roots, e.g. several source folders, or test folders, some of them may be more
related to the
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="SharabilityQueryMerger">Added a <code>LookupMerger</code> for <code>SharabilityQueryImplementation2</code></a>
</h3>
<em>Jun 8 '15; API spec. version: 1.64; affected top-level classes: <a href="./org/netbeans/spi/project/support/LookupProviderSupport.html"><code>LookupProviderSupport</code></a>; made by: tzezula; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=253355">
#253355</a></em>
<br>
<p>
Added a factory method into the <code>LookupProviderSupport</code> creating a
<code>LookupMerger</code> for <code>SharabilityQueryImplementation2</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectManager.Result">More information in <code>ProjectManager.Result</code></a>
</h3>
<em>Apr 30 '14; API spec. version: 1.60; affected top-level classes: <a href="./org/netbeans/api/project/ProjectManager.html"><code>ProjectManager</code></a>; made by: tstupka; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=244126">
#244126</a></em>
<br>
<p>
Introduced <code>ProjectManager.Result.getDisplayName()</code> and <code>ProjectManager.Result.getProjectType()</code>
to provide more information about a potential project via <code>ProjectManager.isProject2(FileObject)</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectManagerImplementation">SPI interface for <code>ProjectManager</code></a>
</h3>
<em>Apr 7 '14; API spec. version: 1.59; affected top-level classes: <a href="./org/netbeans/spi/project/ProjectManagerImplementation.html"><code>ProjectManagerImplementation</code></a> <a href="./org/netbeans/api/project/ProjectManager.html"><code>ProjectManager</code></a>; made by: tzezula; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=210465">
#210465</a></em>
<br>
<p>
Added a SPI internface for <code>ProjectManager</code> allowing
different implementations of <code>ProjectManager</code>
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="DependencyProjectProvider"></a>
</h3>
<em>Nov 20 '13; API spec. version: 1.56; affected top-level classes: <a href="./org/netbeans/spi/project/DependencyProjectProvider.html"><code>DependencyProjectProvider</code></a> <a href="./org/netbeans/spi/project/ProjectContainerProvider.html"><code>ProjectContainerProvider</code></a> <a href="./org/netbeans/api/project/ProjectUtils.html"><code>ProjectUtils</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=210465">
#210465</a></em>
<br>
<p>
Newly introduced interfaces <code>DependencyProjectProvider</code> and <code>ProjectContainerProvider</code> are meant as less general replacement for <code>SubprojectProvider</code>
as they explicitly declaring their contract
(<code>DependencyProjectProvider</code> the project's dependency projects and <code>ProjectContainerProvider</code> projects that are build as part of this project). Code using <code>SubprojectProvider</code> currently
should evaluate if <code>DependencyProjectProvider</code> or <code>ProjectContainerProvider</code> contracts suit their usage better. Please note that the new interfaces are not
mandatory for project types to implement and if it's missing, <code>SubprojectProvider</code> should be used.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="LookupProviderSupport.multi">New method createCompositeLookup(Lookup, Lookup) in LookupProviderSupport</a>
</h3>
<em>Sep 26 '12; API spec. version: 1.49; affected top-level classes: <a href="./org/netbeans/spi/project/support/LookupProviderSupport.html"><code>LookupProviderSupport</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=200711">
#200711</a></em>
<br>
<p>
Introducing method <code>LookupProviderSupport.createCompositeLookup(Lookup, Lookup)</code> which is a more freeform variant of
already existing method. The first parameter is expected to be the base lookup containing instances to be found in project lookup,
the second parameter is a lookup containing just <code>LookupProvider</code>s.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="FOQ.UNOWNED">New constant UNOWNED in FileOwnerQuery to mark a folder as definitely not owned by any project.</a>
</h3>
<em>May 30 '12; API spec. version: 1.46; affected top-level classes: <a href="./org/netbeans/api/project/FileOwnerQuery.html"><code>FileOwnerQuery</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=212015">
#212015</a></em>
<br>
<p>
Introducing constant <code>FileOwnerQuery.UNOWNED</code>, a pseudoproject indicating just that a directory is definitely unowned. May
be returned by either
<code>FileOwnerQueryImplementation.getOwner</code>, in which case null is returned from
<code>FileOwnerQuery.getOwner</code>. May also be passed to either
<code>FileOwnerQuery.markExternalOwner</code> overload, in which case the standard directory search will be pruned at this point with no result.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ActionProgress">Added <code>ActionProgress</code></a>
</h3>
<em>Mar 20 '12; API spec. version: 1.43; affected top-level classes: <a href="./org/netbeans/spi/project/ActionProgress.html"><code>ActionProgress</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=71515">
#71515</a></em>
<br>
<p>
A new callback was added permitting the invoker of a project
action to be notified when the action completes.
</p>
<br>
<strong>Compatibility: </strong>
<p>
<code>ActionProvider</code> implementations should call the
new progress listener if possible.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="SourceGroup.contains.IAE"><code>SourceGroup.contains</code> no longer throws <code>IllegalArgumentException</code></a>
</h3>
<em>Nov 15 '11; API spec. version: 1.40; affected top-level classes: <a href="./org/netbeans/api/project/SourceGroup.html"><code>SourceGroup</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=204271">
#204271</a></em>
<br>
<p>
For convenience and safety, the <code>contains</code> method no longer throws an unchecked exception;
it proved infeasible to ensure the precondition even in the face of projects
being renamed or deleted or similar dynamic changes to directory structure.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Implementations previously throwing this exception should just return false now instead.
Callers previously catching the exception, or making a special effort to ensure the precondition, no longer need do so.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ActionProviderMerger">Added <code>LookupProviderSupport.createActionProviderMerger</code> factory method</a>
</h3>
<em>Sep 10 '11; API spec. version: 1.38; affected top-level classes: <a href="./org/netbeans/spi/project/support/LookupProviderSupport.html"><code>LookupProviderSupport</code></a>; made by: tzezula; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=201737">
#201737</a></em>
<br>
<p>
Added <code>LookupProviderSupport.createActionProviderMerger</code> factory method to
create a <code>LookupMerger</code> for merging multiple instances of <code>ActionProvider</code>
in the project's <code>Lookup</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="Profiler.Actions">Profiler actions are an integral part of the project infrastructure - just like the debugger actions</a>
</h3>
<em>Mar 27 '11; API spec. version: 1.44; affected top-level classes: <a href="./org/netbeans/spi/project/ActionProvider.html"><code>ActionProvider</code></a>; made by: yardus; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=203519">
#203519</a></em>
<br>
<p>
In order to be able to fully integrate the profiler with the project infrastructure
it is necessary to add three new constants to
<code>ActionProvider</code> SPI for profiling a project, profiling a single file and
profiling a test for single file.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectIconAnnotator">Added <code>ProjectIconAnnotator</code></a>
</h3>
<em>Jun 24 '10; API spec. version: 1.33; affected top-level classes: <a href="./org/netbeans/spi/project/ProjectIconAnnotator.html"><code>ProjectIconAnnotator</code></a>; made by: jbecicka; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=171516">
#171516</a></em>
<br>
<p>
A mechanism for changing the project node icon.
You can use it for example to add a badge to the project's icon.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="MoveOrRenameOperationImplementation">Added <code>MoveOrRenameOperationImplementation</code></a>
</h3>
<em>Apr 15 '10; API spec. version: 1.31; affected top-level classes: <a href="./org/netbeans/spi/project/MoveOrRenameOperationImplementation.html"><code>MoveOrRenameOperationImplementation</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=183680">
#183680</a></em>
<br>
<p>
Extended interface giving projects the ability to implement
a simple display name change more safely and efficiently.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Existing implementations of <code>MoveOperationImplementation</code>
should be revised to implement the extended interface.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectUtils.getCacheDirectory">API complement to <code>CacheDirectoryProvider</code></a>
</h3>
<em>Jul 21 '09; API spec. version: 1.26; affected top-level classes: <a href="./org/netbeans/api/project/ProjectUtils.html"><code>ProjectUtils</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=168414">
#168414</a></em>
<br>
<p>
Added <code>ProjectUtils.getCacheDirectory</code> to complement
the SPI interface <code>CacheDirectoryProvider</code>.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="source-group-modifier">introduction of SourceGroupModifier, a way to create SourceGroup if missing</a>
</h3>
<em>Feb 18 '09; API spec. version: 1.24; affected top-level classes: <a href="./org/netbeans/api/project/SourceGroupModifier.html"><code>SourceGroupModifier</code></a> <a href="./org/netbeans/spi/project/SourceGroupModifierImplementation.html"><code>SourceGroupModifierImplementation</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=102711">
#102711</a></em>
<br>
<p>
<code>SourceGroupModifier</code> provides ways of create specific folders (<code>SourceGroup</code> root folders)
in case they don't exist, eg. cannot be retrieved from <code>Sources</code>.
The project supporting automated creation of SourceGroup root folders needs to
provide <code>SourceGroupModifierImplementation</code> in the project's lookup.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectServiceProvider">Add annotations <code>@ProjectServiceProvider</code> and <code>@LookupMerger.Registration</code></a>
</h3>
<em>Jan 23 '09; API spec. version: 1.23; affected top-level classes: <a href="./org/netbeans/spi/project/ProjectServiceProvider.html"><code>ProjectServiceProvider</code></a> <a href="./org/netbeans/spi/project/LookupMerger.html"><code>LookupMerger</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=150194">
#150194</a></em>
<br>
<p>
Added annotations to register entries to project lookup individually.
These can be used instead of implementing a <code>LookupProvider</code>.
Since the entries are loaded on demand, this can help avoid needless class loading.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Implementations of <code>LookupProvider</code> should be converted wherever possible.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="projectfactory2">Provide project icon without actually loading the project</a>
</h3>
<em>Jan 13 '09; API spec. version: 1.22; affected top-level classes: <a href="./org/netbeans/api/project/ProjectManager.html"><code>ProjectManager</code></a> <a href="./org/netbeans/spi/project/ProjectFactory2.html"><code>ProjectFactory2</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=153923">
#153923</a></em>
<br>
<p>
Introducing <code>ProjectFactory2</code> that extends <code>ProjectFactory</code>
and return <code>ProjectManager.Result</code> instead of a simple boolean value.
Also add <code>ProjectManager.isProject2(FileObject)</code> method that can be used by
3rd party modules that need a fast (yet not 100% reliable) way of finding the project icon for a folder.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="lookupprovider-ann">Add annotation @LookupProvider.Registration</a>
</h3>
<em>Nov 13 '08; API spec. version: 1.21; affected top-level classes: <a href="./org/netbeans/spi/project/LookupProvider.html"><code>LookupProvider</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=152392">
#152392</a></em>
<br>
<p>
Add annotation @LookupProvider.Registration to replace registration in layer files.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="test-single-method">Added class <code>SingleMethod</code></a>
</h3>
<em>Jul 9 '08; API spec. version: 1.19; affected top-level classes: <a href="./org/netbeans/spi/project/SingleMethod.html"><code>SingleMethod</code></a>; made by: mpetras; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=137191">
#137191</a></em>
<br>
<p>
Added class <code>SingleMethod</code>,
which represents identification of a single method/function
in a file. The new class also contains new constants
(<code>COMMAND_RUN_SINGLE_TEST_METHOD</code> and
<code>COMMAND_DEBUG_SINGLE_TEST_METHOD</code>) corresponding
to commands for running debugging test methods.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectUtils.getAuxiliaryConfiguration">Added <code>ProjectUtils.getAuxiliaryConfiguration</code></a>
</h3>
<em>Jun 9 '08; API spec. version: 1.17; affected top-level classes: <a href="./org/netbeans/api/project/ProjectUtils.html"><code>ProjectUtils</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=136333">
#136333</a></em>
<br>
<p>
A new API method was introduced to match the <code>AuxiliaryConfiguration</code>
SPI interface. The change simplifies caller code, provides a path for future
changes in the SPI, and allows project types to avoid providing an explicit
implementation of this SPI if the fallback implementation suffices for their needs.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Modules which formerly looked for <code>AuxiliaryConfiguration</code>
directly in project lookup are strongly encouraged to migrate to the
new method instead.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="projectutils-getPreferences">Added ProjectUtils.getPreferences.</a>
</h3>
<em>Jun 9 '08; API spec. version: 1.16; affected top-level classes: <a href="./org/netbeans/api/project/ProjectUtils.html"><code>ProjectUtils</code></a> <a href="./org/netbeans/spi/project/AuxiliaryProperties.html"><code>AuxiliaryProperties</code></a>; made by: jlahoda; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=134580">
#134580</a></em>
<br>
<p>
Added new API method <code>ProjectUtils.getPreferences</code> and new SPI interface <code>AuxiliaryProperties</code>.
</p>
<br>
<strong>Compatibility: </strong>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="lookup-provider">Added support for composing project's lookup from multiple sources.</a>
</h3>
<em>Oct 5 '06; API spec. version: 1.12; affected top-level classes: <a href="./org/netbeans/spi/project/LookupProvider.html"><code>LookupProvider</code></a> <a href="./org/netbeans/spi/project/LookupMerger.html"><code>LookupMerger</code></a> <a href="./org/netbeans/spi/project/support/LookupProviderSupport.html"><code>LookupProviderSupport</code></a>; made by: mkleint; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=83343">
#83343</a></em>
<br>
<p>
Added interfaces and support classes that can be used to compose the project's lookup
from multiple 3rd party sources. Framework for creating merged instances included.
<code>LookupMerger</code> implementation for <code>Sources</code> added.
</p>
<br>
<strong>Compatibility: </strong>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="ProjectConfigurationProvider">Added support for project configurations</a>
</h3>
<em>Sep 8 '06; API spec. version: 1.11; affected top-level classes: <a href="./org/netbeans/spi/project/ProjectConfiguration.html"><code>ProjectConfiguration</code></a> <a href="./org/netbeans/spi/project/ProjectConfigurationProvider.html"><code>ProjectConfigurationProvider</code></a>; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=49652">
#49652</a></em>
<br>
<p>
Added an interface <code>ProjectConfigurationProvider</code>
which can be included in a project's lookup to support
switchable configurations / profiles.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="copy-move-support">Added support for project delete/copy/rename/move</a>
</h3>
<em>Aug 22 '05; API spec. version: 1.7; made by: jlahoda; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=61546">
#61546</a></em>
<br>
<p>
Introduced:
New method <code>notifyDeleted</code> added to <code>ProjectState</code>.
Interfaces DataFilesProviderImplementation, DeleteOperationImplementation, CopyOperationImplementation, MoveOperationImplementation has
been added to support project delete/copy/rename/move.
Support class ProjectOperations has been added to simplify operations on compound projects.
</p>
<br>
<strong>Compatibility: </strong>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="markExternal-for-file-and-URIs">The FileOwnerQuery.markExternalOwner allows registration of individal files and URIs</a>
</h3>
<em>May 27 '05; API spec. version: 1.5; made by: jlahoda; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=58313">
#58313</a></em>
<br>
<p>
It is possible to register owner of an individual file using <code>FileOwnerQuery.markExternalOwner</code>.
It is possible to register owner of a folder or file using URI, so the folder or file does not
have to exist at the time of registration.
</p>
<br>
<strong>Compatibility: </strong>
<p>
This changes add a new method <code>FileOwnerQuery.markExternalOwner(URI, FileObject, int)</code>,
and also extends sematics of the existing
<code>FileOwnerQuery.markExternalOwner(FileObject, FileObject, int)</code> method to allow registration
of individual files.
</p>
<!-- AUTOMATICALLY GENERATED - DO NOT EDIT ME! -->
<h3>
<a name="rel-vers-1">Switched to major release version 1</a>
</h3>
<em>Dec 22 '04; API spec. version: 1.3; made by: jglick; issues: <a href="https://netbeans.org/bugzilla/show_bug.cgi?id=51468">
#51468</a></em>
<br>
<p>
To indicate that this is now considered a stable API, the major release version was
incremented to 1 from 0.
</p>
<br>
<strong>Compatibility: </strong>
<p>
Clients should begin requesting the new version to avoid a warning at startup.
</p>
<hr>
<p><span class="footnote">Built on September 14 2018.&nbsp;&nbsp;|&nbsp;&nbsp; Copyright &#169; 2017-2018 Apache Software Foundation. All Rights Reserved.</span></p>
</body>
</html>