<?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.

-->
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">
<apichanges>
<apidefs>
    <apidef name="javasource_base">Java Source API</apidef>
</apidefs>
<changes>
    <change id="SourceUtils.forceSource">
        <api name="javasource_base" />
        <summary>Adding SourceUtils.forceSource(CompilationController, FileObject)</summary>
        <version major="1" minor="2.46"/>
        <date day="9" month="3" year="2020"/>
        <author login="jlahoda"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
                Adding SourceUtils.forceSource(CompilationController, FileObject).
        </description>
        <class name="SourceUtils" package="org.netbeans.api.java.source"/>
    </change>
    <change id="CodeStyle.parensAroundSingularLambdaParam">
        <api name="javasource_base" />
        <summary>CodeStyle.parensAroundSingularLambdaParam() added</summary>
        <version major="1" minor="2.45"/>
        <date day="8" month="2" year="2020"/>
        <author login="jlahoda"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
                Method CodeStyle.parensAroundSingularLambdaParam() has been added.
        </description>
        <class name="CodeStyle" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeMaker.SwitchExpression">
        <api name="javasource_base" />
        <summary>Creates a new SwitchExpressionTree</summary>
        <version major="1" minor="2.41.0"/>
        <date day="27" month="2" year="2019"/>
        <author login="vikasprabhakar"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
                Creates a new SwitchExpressionTree.
        </description>
        <class name="TreeMaker" package="org.netbeans.api.java.source"/>
    </change>
    <change id="Matcher.setKeepSyntheticTrees">
        <api name="javasource_base"/>
        <summary>Adding Matcher.setKeepSyntheticTrees method</summary>
        <version major="1" minor="2.40"/>
        <date day="7" month="12" year="2018"/>
        <author login="jlahoda"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added Matcher.setKeepSyntheticTrees method, that allows to keep synthetically
            generated variables mapping in the outgoing variables.
        </description>
        <class name="Matcher" package="org.netbeans.api.java.source.matching"/>
    </change>
    <change id="TreeMaker.Case">
        <api name="javasource_base"/>
        <summary>Adding case-related overload to TreeMaker</summary>
        <version major="1" minor="2.39"/>
        <date day="6" month="9" year="2018"/>
        <author login="jlahoda"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added TreeMaker.CaseMultipleLabels(List&lt;? extends ExpressionTree&gt; patterns, List&lt;? extends StatementTree&gt; statements) and
            TreeMaker.Case(List&lt;? extends ExpressionTree&gt; patterns, Tree body) overloads.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="BuildArtifactMapper.isCompileOnSaveSupported">
        <api name="javasource_base"/>
        <summary>Check the var type variable in given tree path.</summary>
        <version major="1" minor="2.32"/>
        <date day="20" month="4" year="2018"/>
        <author login="jlahoda"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added BuildArtifactMapper.isCompileOnSaveSupported method, which
            checks if compile on save is suported in the current configuration.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeUtilities.isTreeHasError">
        <api name="javasource_base"/>
        <summary>Check the tree has compile error in given collection of errors.</summary>
        <version major="1" minor="2.37"/>
        <date day="18" month="7" year="2018"/>
        <author login="vikasprabhakar"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Check the tree has compile error in given collection of errors.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeUtilities.isVarType">
        <api name="javasource_base"/>
        <summary>Check the var type variable in given tree path.</summary>
        <version major="1" minor="2.31"/>
        <date day="27" month="3" year="2018"/>
        <author login="vikasprabhakar"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Check the var type variable in given tree path.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeUtilities.isEndOfCompoundVariableDeclaration">
        <api name="javasource_base"/>
        <summary>Check the tree is the end of compound declaration.</summary>
        <version major="1" minor="2.33"/>
        <date day="3" month="5" year="2018"/>
        <author login="vikasprabhakar"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Check the tree end with comma.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeUtilities.isPartOfCompoundVariableDeclaration">
        <api name="javasource_base"/>
        <summary>Check the tree is the end of compound declaration.</summary>
        <version major="1" minor="2.34"/>
        <date day="14" month="5" year="2018"/>
        <author login="arusinha"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Check whether tree is part of compound declaration.
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
    <change id="ElementHandle.createModuleElementHandle">
        <api name="javasource_base"/>
        <summary>Added a method to create an <code>ElementHandle</code> for module</summary>
        <version major="1" minor="2.26"/>
        <date day="17" month="1" year="2017"/>
        <author login="tzezula"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added a method to create a module <code>ElementHandle</code> from a module name.
        </description>
        <class name="ElementHandle" package="org.netbeans.api.java.source"/>
    </change>
    <change id="TreeMaker.module">
        <api name="javasource_base"/>
        <summary>Added methods to generate/modify the module-info.java files</summary>
        <version major="1" minor="2.23"/>
        <date day="4" month="10" year="2016"/>
        <author login="dbalek"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added methods to generate/modify the module-info.java files
        </description>
        <class name="TypesEvent" package="org.netbeans.api.java.source"/>
    </change>    
    <change id="TypesEvent.module">
        <api name="javasource_base"/>
        <summary>Added an information about changes in the module-info</summary>
        <version major="1" minor="2.23"/>
        <date day="4" month="10" year="2016"/>
        <author login="tzezula"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added an information about changes in the module-info.
        </description>
        <class name="TypesEvent" package="org.netbeans.api.java.source"/>
    </change>    
    <change id="TypeUtilities.getDenotableType">
        <api name="javasource_base"/>
        <summary>Provide type suitable for declaration in source</summary>
        <version major="1" minor="2.17"/>
       <date day="16" month="5" year="2016"/>
        <author login="sdedic"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Support method which allows to infer a type suitable for use in symbol
            declaration in the source was added.
        </description>
        <class name="TypeUtilities" package="org.netbeans.api.java.source"/>
        <issue number="262073"/>
    </change>
    <change id="utilities.findVisibleElements">
        <api name="javasource_base"/>
        <summary>List elements with their definining Scope</summary>
        <version major="1" minor="2.16"/>
        <date day="31" month="5" year="2016"/>
        <author login="sdedic"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Allows to enumerate Elements matching passed <code>ElementFilter</code> according
            to hiding and inheritance rules. The method may be useful to list elements matching certain
            criteria, or to check whether an element exists and find what class/method defined it.
        </description>
        <class name="ElementUtilities" package="org.netbeans.api.java.source"/>
        <issue number="262281"/>
    </change>
    <change id="utilities.implementAndOverride.defaultMethods">
        <api name="javasource_base"/>
        <summary>Allow to return also unimplemented default methods</summary>
        <version major="1" minor="2.15"/>
        <date day="10" month="5" year="2016"/>
        <author login="sdedic"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                <code>findUnimplementedMethods</code> and <code>findOverridableMethods</code>
                work better with interface default methods: they are treated as implemented,
                but overridable.
            </p>
            <p>
                Allow <code>ElementUtilities.findUnimplementedMethods</code> enumerate
                also default methods whose implementations are not provided by class or
                superclasses.
            </p>
        </description>
        <class name="ElementUtilities" package="org.netbeans.api.java.source"/>
        <issue number="258981"/>
    </change>
    <change id="generator.insert.caretlocation">
        <api name="javasource_base"/>
        <summary>Code Generator uses caret location to insert members</summary>
        <version major="1" minor="2.11"/>
        <date day="5" month="10" year="2015"/>
        <author login="ralphbenjamin"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added an overloaded method to Code Generator should to include the
            caret location when inserting members. This will be used when the
            codestyle is CodeStyle.InsertionPoint.CARET_LOCATION.
        </description>
        <class name="CodeStyle" package="org.netbeans.api.java.source"/>
        <issue number="255214"/>
    </change>
    <change id="classindex.searchkind.lambda">
        <api name="javasource_base"/>
        <summary>ClassIndex SearchKind extended by FUNCTIONAL_IMPLEMENTORS</summary>
        <version major="1" minor="2.9"/>
        <date day="23" month="9" year="2015"/>
        <author login="tzezula"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Added a possibility to <code>ClassIndex</code> to search a lambda
            implementations.
        </description>
        <class name="ClassIndex" package="org.netbeans.api.java.source"/>
        <issue number="255393"/>
    </change>
    <change id="classindex.resources.binaryroots">
        <api name="javasource_base"/>
        <summary>ClassIndex returns resources from binaryroots</summary>
        <version major="1" minor="2.6"/>
        <date day="27" month="6" year="2015"/>
        <author login="ralphbenjamin"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            ClassIndex holds information from different types of roots. Added a
            parameter to ClassIndex#getResources to specify which roots to use
            for its results.
        </description>
        <class name="ClassIndex" package="org.netbeans.api.java.source"/>
        <issue number="252992"/>
    </change>
    <change id="generator.sort.dependencies">
        <api name="javasource_base"/>
        <summary>Code Generator uses dependencies between fields</summary>
        <version major="1" minor="2.2"/>
        <date day="9" month="2" year="2015"/>
        <author login="sdedic"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            Proper textual order of members should be used
            when inserting a field or class/interface initializer. The analysis
            could be optionally turned off.
        </description>
        <class name="CodeStyle" package="org.netbeans.api.java.source"/>
        <issue number="249199"/>
    </change>
    <change id="remove.openide.text">
        <api name="javasource_base"/>
        <summary>Remove dependency on Openide Text API</summary>
        <version major="1" minor="1"/>
        <date day="25" month="5" year="2014"/>
        <author login="sdedic"/>
        <compatibility modification="yes" binary="compatible" source="incompatible"/>
        <description>
            <p>
                OpenIDE Text API dependencies are removed, affecting <code>ModificationResult.Difference</code>
                API class, whose interface <b>changed</b> incompatibly. The class now returns
                <code>java.swing.text.Position</code> instead of <code>org.openide.text.PositionRef</code>
                for the start and end positions.
            </p>
            <p>
                For binary compatibility, an additional module <code>java.source.compat8</code> was created,
                which provides compatible method that still returns <code>PositionRef</code>
            </p>
        </description>
        <class name="ModificationResult" package="org.netbeans.api.java.source"/>
        <issue number="244744"/>
    </change>
    <change id="server.is.free">
        <api name="javasource_base"/>
        <summary>Desktop independent parts of the Java Source module extracted</summary>
        <version major="1" minor="0"/>
        <date day="30" month="4" year="2014"/>
        <author login="dbalek"/>
        <compatibility modification="yes" addition="yes" binary="compatible" source="incompatible">
        </compatibility>
        <description>
            <p>
                Runtime compatibility remains, compile time compatibility is
                mostly preserved too. It is however recommended to upgrade
                dependencies of client modules. Try running
                <code>ant fix-dependencies</code> in your Ant module.
            </p>
        </description>
    </change>
    <change id="TreeUtilities.getBreakContinueTargetTree">
        <api name="javasource_base" />
        <summary>Find the target of Break or Continue statement</summary>
        <version major="1" minor="2.40.0"/>
        <date day="22" month="1" year="2019"/>
        <author login="sarveshkesharwani"/>
        <compatibility addition="yes" binary="compatible" source="compatible"/>
        <description>
            <p>
                Find the target of <code>break</code> or <code>continue</code> 
                statement. Target is of type Tree here.
            </p>
        </description>
        <class name="TreeUtilities" package="org.netbeans.api.java.source"/>
    </change>
</changes>
<htmlcontents>
<head>
<title>Change History for the Base Java Source 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>
<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>
<ul>
<li>The <code>release41</code> branch was made on Apr 03 '05 for use in the NetBeans 4.1 release.
Specification versions: 6.0 begins after this point.</li>
<li>The <code>release40</code> branch was made on Nov 01 '04 for use in the NetBeans 4.0 release.
Specification versions: 5.0 begins after this point.</li>
</ul>
<hr/>
<standard-changelists module-code-name="$codebase"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>
