<?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="JavaHintsTest">Java Hints Test API</apidef>
    </apidefs>

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

    <changes>
        <change id="HintTest-options">
            <api name="JavaHintsTest"/>
            <summary>Added HintTest.options method</summary>
            <version major="1" minor="23"/>
            <date day="6" month="9" year="2018"/>
            <author login="jlahoda"/>
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
            <description>
                A method <code>HintTestoptions</code> was added that allows to specify additional compiler options.
            </description>
            <class name="HintTest" package="org.netbeans.modules.java.hints.test.api"/>
        </change>
        <change id="HintTest-fixNotPresent">
            <api name="JavaHintsTest"/>
            <summary>Assertion for missing fixes</summary>
            <version major="1" minor="18"/>
            <date day="24" month="5" year="2016"/>
            <author login="sdedic"/>
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
            <description>
                A method <code>assertFixesNotPresent</code> was added to easily detect that fix is gone if e.g. some precondition is not met.
            </description>
            <class name="HintTest" package="org.netbeans.modules.java.hints.test.api"/>
        </change>
        <change id="HintTest-singleHint">
            <api name="JavaHintsTest"/>
            <summary>Allowed to check a single hint</summary>
            <version major="1" minor="9"/>
            <date day="3" month="4" year="2013"/>
            <author login="sdedic"/>
            <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
            <description>
                New method <code>run(Class, String)</code> was added so that hint with a specific ID can be run, if the
                class contains multiple hint implementations.
            </description>
            <class name="HintTest" package="org.netbeans.modules.java.hints.test.api"/>
            <issue number="227962"/>
        </change>
        <change id="HintTest-ensureJavaFixes">
             <api name="JavaHintsTest"/>
             <summary>Added assertFixes method to HintWarning</summary>
             <version major="1" minor="8"/>
             <date day="22" month="3" year="2013"/>
             <author login="jlahoda"/>
             <compatibility addition="no" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="incompatible" source="compatible"/>
             <description>
                 <code>HintTest.HintWarning.applyFix</code> now enforces constraints for Inspect&amp;Transform. Unless a hint
                 is marked as <code>Options.QUERY</code>, <code>Options.NO_BULK</code> or <code>Kind.ACTION</code>,
                 the <code>Fix</code> that is being applied is tested to be <code>JavaFix</code> and repeatable,
                 which are the requirements of Inspect&amp;Transform.
             </description>
             <class name="HintTest" package="org.netbeans.modules.java.hints.test.api"/>
             <issue number="227271"/>
        </change>
        
        <change id="HintWarning-assertFixes">
             <api name="JavaHintsTest"/>
             <summary>Added assertFixes method to HintWarning</summary>
             <version major="1" minor="1"/>
             <date day="30" month="3" year="2012"/>
             <author login="jlahoda"/>
             <compatibility addition="yes" binary="compatible" deletion="no" deprecation="no" modification="no" semantic="compatible" source="compatible"/>
             <description>
                 Added assertFixes method to HintWarning
             </description>
             <class name="HintTest" package="org.netbeans.modules.java.hints.test.api"/>
             <issue number="209828"/>
        </change>

    </changes>

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

    <htmlcontents>
<!-- Generated from apichanges.xml -->
    <head>
      <title>Change History for the Editor Hints SPI</title>
      <link rel="stylesheet" href="prose.css" type="text/css"/>
    </head>
    <body>

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

<h1>Introduction</h1>

<p>This document lists changes made to the <a href="@TOP@/overview-summary.html">Editor Hints SPI</a>.</p>

<!-- The actual lists of changes, as summaries and details: -->
      <hr/>
      <standard-changelists module-code-name="org.netbeans.spi.editor.hints/0"/>

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

    </body>
  </htmlcontents>

</apichanges>
