<?xml version="1.0" encoding="UTF-8"?>
<!--

    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, this will be done periodically; just
change the XML. If you can, validate the XML against the DTD, if not
do not worry about it. 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>
    <!-- org.netbeans.modules.parsing.api -->
    <apidef name="IndexingAPI">Indexing API</apidef>
  </apidefs>

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

  <changes>
      <change id="IndexabilityQuery">
          <api name="IndexingAPI"/>
          <summary>Allow plugins to exclude files from being indexed.</summary>
          <version major="9" minor="24"/>
          <date day="14" month="9" year="2021"/>
          <author login="matthiasblaesing"/>
          <compatibility source="compatible" binary="compatible" semantic="compatible" addition="yes"/>
          <description>
              <p>
                  There are situations where it is desireable to exclude files from the NetBeans indexing infrastructure. Implementors of
                  <a href="@TOP@/org/netbeans/modules/parsing/spi/indexing/IndexabilityQueryImplementation.html">IndexabilityQueryImplementation</a>
                  are queried whether an indexer should be invoked for a given file.
              </p>
              <p>
                  Indexing for a file can be rejected verbatim (<code>boolean preventIndexing(FileObject fo)</code>) or more specific by
                  indexer name, URL to the file to be indexed and the UTL of the indexing root.
                  <code>boolean preventIndexing(String indexerName, URL indexable, URL rootUrl)</code>.
              </p>
              <p>
                  One such example are Angular projects, where code assistence is provided by the typescript integration by the
                  language server. In these cases the <code>node_modules</code> folder often contains huge amounts of javascript
                  code, that the IDE user does not need to be indexed, but which take a lot of time to parse. A hypothetical
                  plugin could check if an <code>angular.json</code> file is present and then prevent the <code>js</code> indexer
                  from indexing files in the <code>node_modules</code> directory.
              </p>
          </description>
          <class package="org.netbeans.modules.parsing.spi.indexing" name="IndexabilityQueryImplementation"/>
      </change>
      <change id="IndexingTask">
          <api name="IndexingAPI"/>
          <summary>Allow Parsers to adjust results for indexing</summary>
          <version major="9" minor="22"/>
          <date day="28" month="7" year="2021"/>
          <author login="sdedic"/>
          <compatibility source="compatible" binary="compatible" semantic="compatible" addition="yes"/>
          <description>
              <p>
                  <a href="@org-netbeans-modules-parsing-api@/org/netbeans/modules/parsing/spi/Parser.html">Parsers</a> may need to provide reduced data for indexing, or enriched data for source parsing. The
                  added <a href="@TOP@/org/netbeans/modules/parsing/spi/indexing/support/IndexingSupport.html#isIndexingTask-org.netbeans.modules.parsing.api.Task-">isIndexingTask()</a> method identifies tasks applied by indexing infrastructure.
              </p>
          </description>
          <class package="org.netbeans.modules.parsing.spi.indexing.support" name="IndexingSupport"/>
      </change>
      <change id="CustomCamelCase">
          <api name="IndexingAPI"/>
          <summary>Added custom camel case support into <code>QuerySupport</code></summary>
          <version major="9" minor="5"/>
          <date day="14" month="4" year="2015"/>
          <author login="tzezula"/>
          <compatibility source="compatible" binary="compatible" semantic="compatible" modification="yes"/>
          <description>
              <p>
                  Added a support for custom camel case separators and custom camel case parts into <code>QuerySupport</code>
              </p>
          </description>
          <class package="org.netbeans.modules.parsing.spi.indexing.support" name="QuerySupport"/>
      </change>
      <change id="Separate.Parsing.Indexing">
          <api name="IndexingAPI"/>
          <summary>Indexing API separated to its own module</summary>
          <version major="9" minor="0"/>
          <date day="20" month="4" year="2014"/>
          <author login="sdedic"/>
          <compatibility source="incompatible" binary="compatible" semantic="compatible" modification="yes"/>
          <description>
              <p>
                  Historically the module offered both APIs for Parsing (invoking parser, implementing parser) and
                  Indexing (refresh index, index SPIs). Those APIs are typically used by unrelated pieces of code,
                  possibly with the exception of "refresh" actions.
              </p>
              <p>
                  The indexing now resides separately in its <code>parsing.indexing</code> module. Binary compatibility
                  is kept by using module-auto-deps.xml.
              </p>
              <p>
                  Please also refer to the <a href="@org-netbeans-modules-parsing-api@/apichanges.html">API Changes document</a> of the parental module.
              </p>
          </description>
      </change>
  </changes>

  <htmlcontents>
<!--

                            NO NO NO NO NO!

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

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE parsing.api/apichanges.xml

-->
    <head>
        <title>Change History for the Indexing API</title>
        <link rel="stylesheet" href="prose.css" type="text/css"/>
        <meta name="CATEGORY" content="OtherDevelopmentDoc"/>
        <meta name="DESCRIPTION" content="A cross-indexed list of all changes made to the Parsing &amp; Indexing API."/>
    </head>
    <body>
        <p class="overviewlink">
            <a href="overview-summary.html">Overview</a>
        </p>
        <h1>Introduction</h1>
        <h2>What do the Dates Mean?</h2>
        <p>
            The supplied dates indicate when the API change was made, on the CVS
            trunk. From this you can generally tell whether the change should be
            present in a given build or not; for trunk builds, simply whether it
            was made before or after the change; for builds on a stabilization
            branch, whether the branch was made before or after the given date. In
            some cases corresponding API changes have been made both in the trunk
            and in an in-progress stabilization branch, if they were needed for a
            bug fix; this ought to be marked in this list.
        </p>
        <hr/>
        <standard-changelists module-code-name="$codebase"/>
        <hr/>
        <p>@FOOTER@</p>
    </body>
  </htmlcontents>

</apichanges>
