<?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 api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
  <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
]>

<api-answers
  question-version="1.12"
  author="jglick@netbeans.org"
>

  &api-questions;


<!--
        <question id="arch-what">
            What is this project good for?
            <hint>
            Please provide here few lines describing the the project,
            what problem it should solve, provide links to documentation, 
            specifications, etc.
            </hint>
        </question>
-->
<answer id="arch-what">
The Modules API lies at the core of NetBeans and describes how plug-in
modules are added and managed.
<api name="ModulesAPI" group="java" type="export" category="official" url="@TOP@/org/openide/modules/doc-files/api.html"/>
</answer>

<answer id="arch-usecases">
     <a onclick="target='_blank'" href="https://leanpub.com/nbp4beginners">
     <img src="http://wiki.apidesign.org/images/0/03/NetBeansPlatformForBeginners.jpg"
        style="float: right"
          width="60" height="70" alt="Cover of NetBeans Platform for Beginners book"/>
     </a>
    For general overview of the concepts, 
    together with code samples, see chapter 2, 
    of <a onclick="target='_blank'" href="https://leanpub.com/nbp4beginners">NetBeans Platform for Beginners</a> 
    by Jason Wexbridge and Walter Nyland.
    
    Gory technical details are explained on <a href="@TOP@/org/openide/modules/doc-files/api.html">
    API overview page                                         
    </a>. Other interesting topic(s) follow:
    
	<usecase id="classpath" name="How a classpath of my module is constructed?" >
    The NetBeans is defacto a container that manages individual module's 
    lifecycle and other runtime aspects. One of the important things is 
    that it creates a runtime classpath for provided modules based on
    dependencies they specify in their manifests. The 
    <a href="@TOP@/org/openide/modules/doc-files/classpath.html">
    overview of the runtime infrastructure</a> is a good starting place for
    everyone who wishes to learn more about the NetBeans runtime container
    behaviour.
  </usecase>
  <usecase id="patchfor" name="Runtime compatibility patches">
      <p>
        To maintain binary compatibility, method implementations may be injected
        at runtime, in a form of a superclass in the class' inheritance hierarchy.
        Modules compiled against older version of APIs which contains MethodReferences to 
        methods removed from the oficial APIs will be then linked according to JVM Resolution
        algorithm to a matching method present in the superclass of the referenced type.
      </p>
      <p>
        Annotations are used to instruct the ClassLoader to make transformations to the API
          classes. <a href="@TOP@/org/openide/modules/PatchFor.html">PatchFor</a> causes the annotated
          class to be injected as a superclass of the API class identified by the annotation's value.
          <a href="@TOP@/org/openide/modules/ConstructorDelegate.html">ConstructorDelegate</a> marks
          a method, which is called as constructor implementation in the case that it is necessary
          to preserve a constructor for binary compatibility.
      </p>
  </usecase>
</answer>


<!--
        <question id="compat-i18n">
            Is your module correctly internationalized?
            <hint>
            Correct internationalization means that it obeys instuctions 
            at <a href="http://www.netbeans.org/devhome/docs/i18n/index.html">
            NetBeans I18N pages</a>.
            </hint>
        </question>
-->
<answer id="compat-i18n">
Yes
</answer>



<!--
        <question id="compat-standards">
            Does the module implements or defines any standards? Is the 
            implementation exact or it deviates somehow?
        </question>
-->
<answer id="compat-standards">
It defines and implements the Modules API. No intentional deviations.
</answer>



<!--
        <question id="compat-version">
            Does your module properly coexists with earlier and future
            versions? Can you correctly read settings? Will future
            versions be able to read settings?
            
            <hint>
            Very helpful for reading settings is to store version number
            there, so future versions can decide whether how to read/convert
            the settings and older versions can ignore the new ones.
            </hint>
        </question>
-->
<answer id="compat-version">
Backward compatibility of setting storage for the list of configured modules
is considered a design priority. The implementation of the Modules API uses
an XML format to store this list; it has an associated versioned DTD, and the
1.0 format additionally supports expansion through arbitrary named parameters.
Also, the modules themselves can be considered settings in that a user directory
may contain them, so backward compatibility of the directory layout is maintained.
</answer>



<!--
        <question id="dep-jre">
            Which version of JRE you need (1.2, 1.3, 1.4, etc.)?
            <hint>
            It is expected that if your module runs on 1.x that it will run 
            on 1.x+1 if no, state that please. Also describe here cases where
            you run different code on different versions of JRE and why.
            </hint>
        </question>
-->
<answer id="dep-jre">
1.3
</answer>



<!--
        <question id="dep-jrejdk">
            Do you require JDK or is JRE enough?
        </question>
-->
<answer id="dep-jrejdk">
JRE
</answer>



<!--
        <question id="dep-nb">
            What other NetBeans projects this one depends on?
            <hint>
            If you want, describe such projects as imported API using
            the <code>&lt;api name=&quot;identification&quot; type=&quot;import or export&quot; category=&quot;stable&quot; url=&quot;where is the description&quot; /></code>
            </hint>
        </question>
-->
<answer id="dep-nb">
<api name="UtilitiesAPI" group="java" type="import" category="official" url="@org-openide-util@/org/openide/util/doc-files/api.html"/>
And in the implementation only:
<api name="FilesystemsAPI" group="java" type="import" category="official" url="@org-openide-filesystems@/org/openide/filesystems/doc-files/api.html"/>
</answer>



<!--
        <question id="dep-non-nb">
            What other non-NetBeans projects this one depends on?
            
            <hint>
            Some non-NetBeans projects are packaged as NetBeans modules
            (see <a href="http://libs.netbeans.org">libraries</a>) and
            it is prefered to use this approach when more modules may
            depend on such third-party library.
            </hint>
        </question>
-->
<answer id="dep-non-nb">
None, other than any available SAX parser.
</answer>



<!--
        <question id="dep-platform">
            On which platforms your module run? Any? Does it run in the same
            way?
            <hint>
            If your module is using JNI or deals with special differences of
            OSes like filesystems, etc. please describe here what they are.
            </hint>
        </question>
-->
<answer id="dep-platform">
Any.
</answer>



<!--
        <question id="deploy-jar">
            Do you deploy just module JAR file(s) or some other files?
            <hint>
            If your module consist just from one module JAR file, just confirm that.
            If it uses more than one JAR, describe where there are located, how
            they refer to each other. 
            If it consist of module JAR(s) and other files, please describe
            what is their purpose, why other files are necessary. Please 
            make sure that installation/deinstallation leaves the system 
            in state as it was before installation.
            </hint>
        </question>
-->
<answer id="deploy-jar">
The API portion is inside <samp>openide.jar</samp>;
the implementation refers to this and is inside <samp>core.jar</samp>.
</answer>



<!--
        <question id="deploy-nbm">
            Can you deploy NBM via AutoUpdate center?
            <hint>
            If not why?
            </hint>
        </question>
-->
<answer id="deploy-nbm">
Yes (as part of <samp>openide.nbm</samp> and <samp>core.nbm</samp>).
</answer>



<!--
        <question id="deploy-packages">
            Are packages of your module made inaccessible by not declaring them
            public?
            
            <hint>
            NetBeans module system allows restriction of access rights to
            public classes of your module from other modules. This prevents
            unwanted dependencies of others on your code and should be used
            whenever possible (<a href="http://www.netbeans.org/download/apis/org/openide/doc-files/upgrade.html#3.4-public-packages">
            public packages
            </a>). 
            </hint>
        </question>
-->
    <answer id="deploy-packages">
        <p>
            The entire API is one public package.
            <api name="ModulesAPI" group="java" type="export" category="official" />
        </p>
        <p>
            The implementation is in another package and is not considered
            public, though it is made available to <code>autoupdate</code> and
            <code>apisupport</code> as these special modules deal directly with
            the module system at a deeper level than the API provides for.
            <api name="CoreModulesAPI" group="java" type="export" category="friend"/>
        </p>
    </answer>



<!--
        <question id="deploy-shared">
            Do you need to be installed in shared location or only in user directory?
            <hint>
            Installation location shall not matter, if it does explain why.
            </hint>
        </question>
-->
<answer id="deploy-shared">
Must be installed in the shared location as it is part of the very core of NetBeans.
</answer>



<!--
        <question id="exec-classloader">
            Does your code uses own classloader?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
<answer id="exec-classloader">
The implementation creates one class loader for each enabled module,
plus a special "system" class loader.
</answer>



<!--
        <question id="exec-component">
            Is execution of your code influenced by (string) property
            of any of your components?
            
            <hint>
            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
            a behaviour of some code. This of course forms an interface that should
            be documented. Also if one depends on some interface that an object
            implements (<code>component instanceof Runnable</code>) that forms an
            API as well.
            </hint>
        </question>
-->
<answer id="exec-component">
    No.
</answer>



<!--
        <question id="exec-privateaccess">
            Are you aware of any other part of the system calling some of 
            your methods by reflection?
            <hint>
            If so, describe the &quot;contract&quot; as an API. Likely private or friend one, but
            still API and consider rewrite of it.
            </hint>
        </question>
-->
<answer id="exec-privateaccess">
No.
</answer>



<!--
        <question id="exec-property">
            Is execution of your code influenced by any environment of
            system (<code>System.getProperty</code>) property?
            
            <hint>
            If there is a property that can change the behaviour of your 
            code, somebody will likely use it. You should describe what it does 
            and the stability category of this API. You may use
            <PRE>
                &lt;property name=&quot;id&quot; category=&quot;private&quot; >
                    description of the property, where it is used, what it influence, etc.
                &lt;/property>            
            </PRE>
            </hint>
        </question>
-->
<answer id="exec-property">
<api type="import" group="systemproperty" name="netbeans.home" category="private">
NetBeans installation directory.
</api>
<api type="import" group="systemproperty" name="netbeans.user" category="private">
User directory.
</api>
<api type="import" group="systemproperty" name="netbeans.dirs" category="private">
Additional installation component directories.
</api>
<api type="export" group="systemproperty" name="netbeans.systemclassloader.patches" category="friend">
Classpath appended to the system class loader.
Used for automated testing infrastructure.
</api>
<api type="import" group="systemproperty" name="netbeans.classpath" category="friend">
May be used to prepend items to the same class loader as is used
for <samp>openide.jar</samp> and <samp>core.jar</samp>, similarly
to JARs found in <samp>lib/patches/</samp>.
</api>
<api type="export" group="systemproperty" name="netbeans.cache.manifests" category="private">
By default true, may be turned off to disable manifest caching.
</api>
<api type="export" group="systemproperty" name="netbeans.patches.MODULE.CODE.NAME.BASE" category="friend">
Patch directories or JARs to add to the class loader for a module,
besides <samp>patches/MODULE-CODE-NAME-BASE/*.jar</samp>.
</api>
<api type="export" group="systemproperty" name="netbeans.preresolve.classes" category="private">
If true, all module classes are forcibly loaded at startup, to help
detect possible linkage errors.
</api>
<api type="export" group="systemproperty" name="org.netbeans.core.modules.NbInstaller.noAutoDeps" category="private">
Disables automatic module dependency upgrades.
</api>
<api type="export" group="systemproperty" name="org.netbeans.core.modules" category="private">
If set to <samp>0</samp>, enables logging for the module system.
</api>
<api type="export" group="systemproperty" name="org.netbeans.core.modules.NbInstaller.NO_COMPAT_AUTO_TRANSITIVE_DEPS" category="private">
Disabled automatic transitive class loader dependencies for old modules.
</api>
<api type="export" group="systemproperty" name="netbeans.modules.quiet" category="private">
Avoids text messaging (other than <code>ErrorManager</code> logging) to the console
from the module system.
</api>
<api type="export" group="systemproperty" name="netbeans.moduleitem.dontverifyclassloader" category="private">
Suppresses checks to ensure that module section classes are actually loaded
from the module itself.
</api>
<api type="import" group="systemproperty" name="netbeans.full.hack" category="friend" url="https://netbeans.apache.org/wiki/DevFaqNetBeansFullHack">
Avoids using GUI when user-visible error conditions occur.
</api>
<api type="import" group="systemproperty" name="netbeans.mainclass" category="friend">
Name of class from <samp>core.jar</samp> which will handle most of the
startup sequence; by default, <samp>org.netbeans.core.Main</samp>.
</api>
<!-- XXX this is really in "launcher", not module system -->
<api type="export" group="systemproperty" name="netbeans.security.nocheck" category="friend">
Suppress security checks in the VM, even from "untrusted" code.
</api>
<api type="export" group="systemproperty" name="netbeans.classloader.verbose" category="private">
Prints messages when resources or classes are loaded from JARs.
</api>
        <api group="systemproperty" name="netbeans.cache.layers" type="export" category="private">
            <p>
                Used to control the XML layer cache mechanism. Value may be a
                fully-qualified class name to load as a manager (implement
                <code>org.netbeans.core.projects.cache.LayerCacheManager</code>),
                or <code>-</code> to disable caching and always parse the XML
                layers directly. Current default is to use a binary cache
                manager.
            </p>
        </api>
</answer>



<!--
        <question id="exec-reflection">
            Does your code uses java.lang.reflect to execute some other code?
            <hint>
            This usually indicates a missing or unsufficient API in the other
            part of the system. If the other side is not aware of your dependency
            this contract can be easily broken.
            </hint>
        </question>
-->
    <answer id="exec-reflection">
        Of course components present in modules are initially loaded using
        reflection. Otherwise there is little semantic use of it (transparent
        optimizations only). One exception: pending a solution to <a
        href="https://bz.apache.org/netbeans/show_bug.cgi?id=29382">#29382</a>,
        one portion of the Filesystems API is accessed via reflection when
        merging XML layers from modules.
    </answer>



<!--
        <question id="format-clipboard">
            Which protocols your code reads/inserts when communicating with
            clipboard?
        </question>
-->
<answer id="format-clipboard">
N/A
</answer>



<!--
        <question id="format-dnd">
            Which protocols your code understands during drag-n-drop?
        </question>
-->
<answer id="format-dnd">
N/A
</answer>



<!--
        <question id="format-types">
            Which file formats your code reads or writes on disk?
        </question>
-->
<answer id="format-types">
<ul>
<li>Module JAR files, as specified by the Modules API</li>
<li><api group="dtd" category="devel" type="export" name="module-status-1_0.dtd" url="http://www.netbeans.org/dtds/module-status-1_0.dtd"><samp>-//NetBeans//DTD Module Status 1.0//EN</samp></api></li>
<li><api group="dtd" category="devel" type="export" name="module-auto-deps-1_0.dtd" url="http://www.netbeans.org/dtds/module-auto-deps-1_0.dtd"><samp>-//NetBeans//DTD Module Automatic Dependencies 1.0//EN</samp></api></li>
<li><api group="dtd" category="stable" type="export" name="filesystem-1_1.dtd" url="http://www.netbeans.org/dtds/filesystem-1_1.dtd"><samp>-//NetBeans//DTD Filesystem 1.1//EN</samp></api></li>
<li>a custom binary format for caching merged layer contents</li>
<li>a custom binary format for caching module manifests</li>
<li>a custom binary (serialized) format for caching folder lookup</li>
<li>Java serialization for externalized <code>ModuleInstall</code>s (deprecated)</li>
</ul>
</answer>



<!--
        <question id="lookup-lookup">
            Does your module uses <code>org.openide.util.Lookup</code>
            to find any components to communicate to? Which ones?
            
            <hint>
            Please describe the interfaces you are searching for, where 
            are defined, whether you are searching for just one or more of them,
            if the order is important, etc. Also clasify the stability of such
            API contract.
            </hint>
        </question>
-->
<answer id="lookup-lookup">
All registered <code>InstalledFileLocator</code>
instances are queried and used 
to implement <code>InstalledFileLocator.getDefault()</code>. 
</answer>



<!--
        <question id="lookup-register">
            Do you register anything into the lookup for other to find? 
            <hint>
            Do you register using layer file or using <code>META-INF/services</code>?
            Who is supposed to find your component?
            </hint>
        </question>
-->
<answer id="lookup-register">
<ul>
<li><code>TestModuleDeployer</code> (from META-INF), used by apisupport</li>
<li><code>InstalledFileLocator</code> (from META-INF), used by its public default method</li>
<li>an instance of every known <code>ModuleInfo</code>, via a custom lookup insertion (specified in API)</li>
<li>an instance of <code>ClassLoader</code>, via a custom lookup insertion (used broadly)</li>
</ul>
</answer>



<!--
        <question id="lookup-remove">
            Are removing entries of other modules from the lookup? 
            <hint>
            Why? Of course, that is possible, but it can be dangerous. Is the module
            your are masking resource from aware of what you are doing?
            </hint>
        </question>
-->
<answer id="lookup-remove">
No.
</answer>



<!--
        <question id="perf-exit">
            Does your module executes anything on exit?
        </question>
-->
<answer id="perf-exit">
Delegates to exit handlers of enabled modules.
Saves lookup cache.
</answer>



<!--
        <question id="perf-huge_dialogs">
            Does your module contain any dialogs or wizards with huge
            amount of GUI controls like combo boxes, lists, trees, text
            areas?
        </question>
-->
<answer id="perf-huge_dialogs">
No. Occasionally small dialogs only.
</answer>



<!--
        <question id="perf-limit">
            Are there any limits in number/size of elements your code
            can handle?
        </question>
-->
<answer id="perf-limit">
No.
</answer>



<!--
        <question id="perf-mem">
            What is the amount of memory your component occupies? Estimate
            with a relaction to the number of windows, etc.
        </question>
-->
<answer id="perf-mem">
Not a lot. On modules which are well-formed (layers, JAR entries,
complex interdependencies) but which do not run any code there is a modest
incremental cost: 3.1msec and 4.5Kb per module at least measurement.
</answer>



<!--
        <question id="perf-menus">
            Does your module use dynamically changing context menus or
            context sensitive actions with complicated logic for enable/disable?
        </question>
-->
<answer id="perf-menus">
No.
</answer>



<!--
        <question id="perf-progress">
            Does your module executes some long running task?
            <hint>Typically they are tasks like connecting over
            network, computing huge amount of data, compilation.
            Such communication should be done asynchronously (for example
            using <code>RequestProcessor</code>), definitively it should 
            not block AWT thread.
            </hint>
        </question>
-->
<answer id="perf-progress">
Bulk module installation can be time-consuming. <code>org.netbeans.core.ui.ModuleBean</code>
is a Swing-safe bean that serves as a nonblocking wrapper for all module system
modifications and is used e.g. in the <b>Modules</b> node.
</answer>



<!--
        <question id="perf-scale">
            Which external criteria influence the performance of your
            program (size of file in editor, number of files in menu, 
            in source directory, etc.) and how well your code scales?
            Please include some estimates.
        </question>
-->
<answer id="perf-scale">
Scalability of the standalone system seems reasonably good; even with
a thousand modules (an order of magnitude higher than current reality)
startup time and memory consumption in the module system itself are
not large (7 seconds, 6 Mb).
</answer>



<!--
        <question id="perf-startup">
            Does your module executes anything on startup?
        </question>
-->
<answer id="perf-startup">
Yes, of course - it finds and loads all modules.
</answer>



<!--
        <question id="perf-wakeup">
            Is any piece of your code waking up periodically?
        </question>
-->
<answer id="perf-wakeup">
No.
</answer>



<!--
        <question id="resources-file">
            Does your module use <code>java.io.File</code> directly?
            
            <hint>
            NetBeans provide a logical wrapper over plain files called 
            <code>org.openide.filesystems.FileObject</code> that
            provides uniform access to such resources and is the prefered
            way that should be used. But of course there can be situations when
            this is not suitable.
            </hint>
        </question>
-->
    <answer id="resources-file">
        <p>
            Yes, module JARs and associated resource JARs must be real files.
            They are loaded as defined by module enablement XML files.
        </p>
        <p>
            Module enablement XML files are loaded via Filesystems. The public
            API (partially) specifies them only in these terms.
            <code>autoupdate</code> uses Filesystems to manipulate them when
            necessary, though it relies on some additional
            implementation-specific knowledge of their format (which is fairly
            stable, especially since changes are limited by compatibility
            constraints on old user directories). The NetBeans build scripts use
            some additional implementation knowledge to pregenerate suitable XML
            files for modules included in the application distribution.
        </p>
    </answer>



<!--
        <question id="resources-layer">
            Does your module provide own layer? Does it create some files or
            folders on it? What it is trying to communicate by that and with which 
            component?
            
            <hint>
            NetBeans allows automatic and declarative installation of resources 
            by module layers. Module register files into appropriate places
            and other components use that information to perform their task
            (build menu, toolbar, window layout, list of templates, set of
            options, etc.). 
            </hint>
        </question>
-->
<answer id="resources-layer">
The Modules API defines some layer folders:
<ul>
<li><samp>Modules/*.xml</samp> (read from and written to)</li>
<li><samp>ModuleAutoDeps/*.xml</samp> (only read from)</li>
</ul>
</answer>



<!--
        <question id="resources-mask">
            Does your module mask/hide/override any resource provided by another one in
            module layer? 
            
            <hint>
            If you mask a file provided by another module, you probably depend
            on that and do not want the other module to (for example) change
            the file's name. That module shall thus make that file available as an API
            of some stability category.
            </hint>
        </question>
-->
<answer id="resources-mask">
No.
</answer>



<!--
        <question id="resources-read">
            Does your module read any resources from layers? For what purpose?
            
            <hint>
            As this is some kind of intermodule dependency, it is a kind of API.
            Please describe it and clasify according to 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
            common stability categories</a>.
            </hint>
        </question>
-->
<answer id="resources-read">
XML files are read from the two folders defined by the API.
Note however that since these folders control the module system itself,
contents generally should not be placed in module layers, but in the
<samp>system/</samp> subfolder of the installation or user directory
(generally, in the NBM).
</answer>

</api-answers>
