<?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="CHANGEME/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="common_annotations_api">Common Annotations API</apidef>
        <!-- etc. -->
    </apidefs>

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

    <changes>
        <change id="transitive-closure">
            <api name="common_annotations_api"/>
            <summary>Exposing necessary javax.annotation elements</summary>
            <version major="1" minor="40"/>
            <date day="1" month="4" year="2021"/>
            <author login="jtulach"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    In order to enable <code>-Werror</code> to treat warnings
                    as errors, we need to get rid of annotation errors caused
                    by missing <code>When</code> constants as 
                    <a href="https://github.com/apache/netbeans/pull/2835">PR-2835</a>
                    explains. This is done by exposing transitively needed,
                    but previously missing <code>javax.annotation</code> elements.
                    Javadoc for the <code>javax</code> isn't generated and they aren't
                    recommended to be used directly.
                </p>
            </description>
        </change>
        <change id="SuppressWarningsJustification">
            <api name="common_annotations_api"/>
            <summary>Added justification attribute to <code>SuppressWarnings</code></summary>
            <version major="1" minor="19"/>
            <date day="1" month="2" year="2013"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Introduced justification attribute to specify why it is ok to
                    suppress a warning.
                </p>
            </description>
            <class package="org.netbeans.api.annotations.common" name="SuppressWarnings"/>
            <issue number="221381"/>
        </change>
        <change id="StaticResource">
            <api name="common_annotations_api"/>
            <summary>Added <code>StaticResource</code></summary>
            <version major="1" minor="13"/>
            <date day="28" month="11" year="2011"/>
            <author login="jglick"/>
            <compatibility addition="yes"/>
            <description>
                <p>
                    Introduced an annotation for validating the existence of static resources.
                </p>
            </description>
            <class package="org.netbeans.api.annotations.common" name="StaticResource"/>
            <issue number="205377"/>
        </change>
        <change>
            <api name="common_annotations_api"/>
            <summary>Initial version released</summary>
            <version major="1" minor="0"/>
            <date day="22" month="1" year="2009"/>
            <author login="phejl"/>
            <compatibility addition="yes"/>
            <description>
                First initial release of the Common Annotations 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 Common Annotations 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 Common Annotations API.</p>

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

      <hr/>
      
      <standard-changelists module-code-name="org.netbeans.api.annotations.common"/>

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

    </body>
  </htmlcontents>

</apichanges>
