<?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="spi">Netigso Integration SPI</apidef>
    <apidef name="general">OSGi Related Behavior</apidef>
</apidefs>
<changes>
    <change id="findpkgs.exported.if.present">
      <api name="general"/>
      <summary>FIND_COVERED_PKGS new value: exportedIfPresent</summary>
      <version major="1" minor="23"/>
      <date day="20" month="6" year="2013"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible"/>
      <description>
          <a href="@TOP@architecture-summary.html#branding-org.netbeans.core.netigso.FIND_COVERED_PKGS">
              FIND_COVERED_PKGS</a> supports new value: <b>exportedIfPresent</b>.
     </description>
     <issue number="218022"/>
    </change>
    <change id="inject.system.properties">
      <api name="spi"/>
      <summary>Use -J-D to influence configuration of Felix</summary>
      <version major="1" minor="18"/>
      <date day="20" month="9" year="2012"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible"/>
      <description>
          One can influence behavior of Felix OSGi container by <a href="architecture-summary.html#systemproperty-felix_org.osgi.framework">
          specifying</a> system properties. 
     </description>
     <issue number="218022"/>
    </change>
    <change id="osgi-4.3">
      <api name="general"/>
      <summary>Updated to OSGi 4.3</summary>
      <version major="1" minor="15"/>
      <date day="17" month="2" year="2012"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="incompatible" source="incompatible" semantic="incompatible">
          <p>
          The OSGi specification considers adding new methods to interfaces
          compatible. That has happened and it is not compatible 
          according to NetBeans API principles,
          thus making incompatible, in spite the incompatibility is only in
          the imported <em>standard</em> API.
          </p>
          <p>
          Some incompatibilities were reported between Equinox 3.6 and 3.7.1
          (which has also been upgraded). These include bug <b>208616</b>.
          All known issues with Felix 4.0.2 were mitigated.
          </p>
      </compatibility>
      <description>
          OSGi specification bundle with NetBeans has been upgraded to 
          version 4.3. Both containers were upgraded too. Felix to version
          4.0.2 and Equinox to 3.7.1.
     </description>
      <issue number="207199"/>
      <issue number="208616"/>
    </change>
    <change id="is.archive.active">
      <api name="spi"/>
      <summary>Is archive active?</summary>
      <version major="1" minor="14"/>
      <date day="10" month="1" year="2012"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible"/>
      <description>
          One can check whether the access to resource archive is safe or not
          by calling <code>isActive()</code> method.
     </description>
      <class package="org.netbeans.core.netigso.spi" name="NetigsoArchive"/>
    </change>
    <change id="no.friends">
      <api name="general"/>
      <summary>Friend API is no longer accessible</summary>
      <version major="1" minor="11"/>
      <date day="14" month="9" year="2011"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="incompatible">
          In previous version OSGi bundles could access NetBeans APIs which
          enumerated list of "friends" without any restrictions. This has been
          restricted. If you need a friend access, consider writing real 
          NetBeans module.
      </compatibility>
      <description>
          Only NetBeans modules with public API can be accessed from OSGi bundles.
          One can specify direct value for
          <a href="@TOP@/architecture-summary.html#property-Netigso-Export-Package">Netigso-Export-Package</a>
          to export also non-public APIs.
     </description>
    </change>
    <change id="archive">
      <api name="spi"/>
      <summary>Netigso grants access to archives</summary>
      <version major="1" minor="3"/>
      <date day="29" month="3" year="2010"/>
      <author login="jtulach"/>
      <compatibility addition="yes" binary="compatible" source="compatible" semantic="compatible"/>
      <description>
          OSGi frameworks can get access on <b>Netigso</b>'s resource cache
          and store classes in there, rather in their own private caches.
     </description>
      <class package="org.netbeans.core.netigso.spi" name="NetigsoArchive"/>
    </change>
</changes>
<htmlcontents>
<head>
<title>Change History for the Netigso SPI</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>
<hr/>
<standard-changelists module-code-name="$codebase"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>
