<?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 href="../../nbbuild/javadoctools/apichanges.xsl" type="text/xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<!-- INFO FOR PEOPLE ADDING CHANGES:
[most of contents snipped - see openide's apichanges for how-to instructions]
<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>
-->

<apichanges>

<!-- First, a list of API names you may use: -->
<apidefs>
        <apidef name="whitelist">White List API</apidef>
</apidefs>

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

<changes>
        <change id="WhiteListRsult">
            <api name="whitelist"/>
            <summary>WhiteList.Result changed to support merged WhiteLists</summary>
            <version major="1" minor="3"/>
            <date day="16" month="9" year="2011"/>
            <author login="dkonecny"/>
            <compatibility addition="yes" modification="yes" semantic="compatible" source="incompatible" binary="incompatible"/>
            <description>
                <p>
                    WhiteListQuery.Result has been split into Result and RuleDescription to support merging
                    of whitelist results.
                </p>
            </description>
            <class package="org.netbeans.api.whitelist" name="WhiteListQuery"/>
            <issue number="202187"/>
        </change>
        <change id="WhiteListIndex">
            <api name="whitelist"/>
            <summary>Added WhiteListQuery to check violations of runtime restrictions</summary>
            <version major="1" minor="2"/>
            <date day="15" month="9" year="2011"/>
            <author login="tzezula"/>
            <compatibility addition="yes" modification="no" semantic="compatible" source="compatible" binary="compatible"/>
            <description>
                <p>
                    Added WhiteListIndex to provide persistent index of the white list violations.
                </p>
            </description>
            <class package="org.netbeans.api.whitelist.index" name="WhiteListIndex"/>
            <class package="org.netbeans.api.whitelist.index" name="WhiteListIndexListener"/>
            <class package="org.netbeans.api.whitelist.index" name="WhiteListIndexEvent"/>
            <class package="org.netbeans.api.whitelist.support" name="WhiteListSupport"/>
            <issue number="202063"/>
        </change>
        <change id="WhiteListQuery">
            <api name="whitelist"/>
            <summary>Added WhiteListQuery to check violations of runtime restrictions</summary>
            <version major="1" minor="0"/>
            <date day="29" month="8" year="2011"/>
            <author login="tzezula"/>
            <compatibility addition="yes" modification="no" semantic="compatible" source="compatible" binary="compatible"/>
            <description>
                <p>
                    Added WhiteListQuery to check violations of runtime restrictions. The project types supporting a runtime
                    with class usage restriction implement the <code>WhiteListQueryImplementation</code> to provide a white list
                    of allowed types (methods).
                </p>
            </description>
            <class package="org.netbeans.api.whitelist" name="WhiteListQuery"/>
            <class package="org.netbeans.spi.whitelist" name="WhiteListQueryImplementation"/>
            <class package="org.netbeans.spi.whitelist.support" name="WhiteListQueryMergerSupport"/>
        </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 xml/api/doc/changes/apichanges.xml

-->
    <head>
      <title>White List API changes by date</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 White List  APIs. Please ask on the
<code>dev@java.netbeans.org</code> or <code>nbdev@netbeans.org</code>
mailing list if you have any questions about the details of a
change, or are wondering how to convert existing code to be compatible.</p>

      <hr/><standard-changelists module-code-name="org.netbeans.modules.whitelist"/>

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

    </body>
  </htmlcontents>
</apichanges>
