<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Classpath APIs - NetBeans Architecture Questions</title>
<link rel="stylesheet" type="text/css" href="prose.css">
</head>
<body>
<p class="overviewlink">
<a href="overview-summary.html">Overview</a>
</p>
<h1>NetBeans Architecture Answers for Classpath APIs module</h1>
<ul>
<li>
<b>Author:</b> tzezula@netbeans.org</li>
<li>
<b>Answers as of:</b> 14-Sep-2018</li>
<li>
<b>Answers for questions version:</b> 1.24</li>
<li>
<b>Latest available version of questions:</b> 1.29</li>
</ul>
<strong>
                        WARNING: answering questions version 1.24
                        rather than the current 1.29.
                    </strong>
<hr>
<h2>Interfaces table</h2>
<a name="group-java">
<h5>Group of java interfaces</h5>
</a>
<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="1" width="100%">
<tr class="tablersh">
<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
</tr>
<tr class="tabler">
<td>ClassPathAPIs</td><td>Exported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-ClassPathAPIs">
<p></p>
   The ClassPath APIs provides java classpath like ordered collection of (source)
   roots with ability to listen on changes and helper methods like finding the file
   under the roots, returning a path from root to given file. It also provides a
   registry where projects register their classpaths to make them visible to languages
   infrastructure.
  <p></p>
</a></td>
</tr>
<tr class="tabler">
<td>Filesystems</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-Filesystems">
<p></p>
     
<p>
      For many purposes.
     </p>
    
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>Execution</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-Execution">
<p></p>
     
<p>
      
<code>NbClassLoader</code> is used by
      <code>ClassPath.getClassLoader(...)</code>.
     </p>
    
<p></p>
</a></td>
</tr>
<tr class="tabler">
<td>CommonAnnotationsAPI</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Stable">Stable</a></td><td><a name="java-CommonAnnotationsAPI">
<p></p>
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    1.8
                    is required.
                <p></p>
</a></td>
</tr>
<tr class="tabler">
<td>FilesystemsAPI</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-FilesystemsAPI">
<p></p>
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    9.10
                    is required.
                <p></p>
</a></td>
</tr>
<tr class="tabler">
<td>WeakListener.setAccessible</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Devel">Under Development</a></td><td><a name="java-WeakListener.setAccessible">
<p></p>
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    9.3
                    is required.
                <p></p>
</a></td>
</tr>
<tr class="tabler">
<td>LookupAPI</td><td>Imported</td><td><a href="http://wiki.netbeans.org/API_Stability#Official">Official</a></td><td><a name="java-LookupAPI">
<p></p>
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    8.0
                    is required.
                <p></p>
</a></td>
</tr>
</table>
</td>
</tr>
</table>
<p></p>
<!--

    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.

-->
<api-answers author="tzezula@netbeans.org" module="Classpath APIs" question-version="1.24">

  
<!--

    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.

-->

<!--
    Author     : Jaroslav Tulach, Jesse Glick
    Description: Questions that should be answered in order to make better API

    No PUBLIC or SYSTEM IDs defined currently.
-->

<!--
                        *** ATTENTION EDITORS ***
Please increment the 'version' field of <api-questions> whenever you make a
semantic change: adding a new question or significantly changing the meaning of
an old one. Changing this field ensures that arch pages answering the old version
print a warning during Javadoc generation. If you only change hints or make small
edits in the text of a question, you need not change the version number.

An automated process runs openide/www/tutorial/build.xml#question periodically
and commits any changes to openide/www/tutorial/questions.html.
-->

<api-questions version="1.29" xml:base="file:/home/nsigma/Code/NetBeans/incubator-netbeans/nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
    
<hr>
<h2>General Information</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-arch-what">Question (arch-what)</a>:</b><em>
            What is this project good for?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Models basic aspects of the metadata surrounding list of source roots, such as
   the classpath. More information in the Javadoc.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-arch-overall">Question (arch-overall)</a>:</b><em>
            Describe the overall architecture. 
            
        </em></font>
<p></p>
<b>Answer:</b>
  <a href="#java-ClassPathAPIs">ClassPathAPIs</a>
            - 
   The ClassPath APIs provides java classpath like ordered collection of (source)
   roots with ability to listen on changes and helper methods like finding the file
   under the roots, returning a path from root to given file. It also provides a
   registry where projects register their classpaths to make them visible to languages
   infrastructure.
  
 <p></p>
<font color="gray"><b><a name="answer-arch-usecases">Question (arch-usecases)</a>:</b><em>
            
        
            Describe the main <a href="http://wiki.netbeans.org/API_Design#The_Importance_of_Being_Use_Case_Oriented" shape="rect">
            use cases</a> of the new API. Who will use it under
            what circumstances? What kind of code would typically need to be written
            to use the module?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   The API is widely used by all sorts of IDE modules which need to work with
   sources. The SPI is intended mainly for (java) platforms and
   library providers, and project type providers, to declare all of this
   information.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-arch-time">Question (arch-time)</a>:</b><em>
            What are the time estimates of the work?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Essentially done.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-arch-quality">Question (arch-quality)</a>:</b><em>
            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html" shape="rect">quality</a>
            of your code be tested and 
            how are future regressions going to be prevented?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Ought to be covered by unit tests.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-arch-where">Question (arch-where)</a>:</b><em>
            Where one can find sources for your module?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
<p>
            The sources for the module are in the
            <a href="http://hg.netbeans.org/" shape="rect">NetBeans Mercurial repositories</a>.
        </p>
</p>
 
</ul>
    
<hr>
<h2>Project and platform dependencies</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-dep-nb">Question (dep-nb)</a>:</b><em>
            What other NetBeans projects and modules does this one depend on?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<ul>
   
<li>
    
<a href="#java-Filesystems">Filesystems</a>
            - 
     <p>
      For many purposes.
     </p>
    
   
</li>
   
<li>
    
<a href="#java-Execution">Execution</a>
            - 
     <p>
      
<code>NbClassLoader</code> is used by
      <code>ClassPath.getClassLoader(...)</code>.
     </p>
    
   
</li>
  
</ul>
 
<p>The default answer to this question is:<!--If you do not want default answer to be generated you can use <defaultanswer generate='none' /> here--><br>
<p>
<p>
            These modules are required in project.xml:
            <!--<li><api type='import' group='java' category='stable' name='CommonAnnotationsAPI'>
            The module is needed for compilation. 
        
            The module is used during runtime. 
            
                Specification version 
                1.8
                is required.
            </api>
</li>            
--><!--<li><api type='import' group='java' category='official' name='FilesystemsAPI'>
            The module is needed for compilation. 
        
            The module is used during runtime. 
            
                Specification version 
                9.10
                is required.
            </api>
</li>            
--><!--<li><api type='import' group='java' category='devel' name='WeakListener.setAccessible'>
            The module is needed for compilation. 
        
            The module is used during runtime. 
            
                Specification version 
                9.3
                is required.
            </api>
</li>            
--><!--<li><api type='import' group='java' category='official' name='LookupAPI'>
            The module is needed for compilation. 
        
            The module is used during runtime. 
            
                Specification version 
                8.0
                is required.
            </api>
</li>            
--><ul>
<li>
<a href="#java-CommonAnnotationsAPI">CommonAnnotationsAPI</a>
            - 
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    1.8
                    is required.
                </li>
<li>
<a href="#java-FilesystemsAPI">FilesystemsAPI</a>
            - 
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    9.10
                    is required.
                </li>
<li>
<a href="#java-WeakListener.setAccessible">WeakListener.setAccessible</a>
            - 
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    9.3
                    is required.
                </li>
<li>
<a href="#java-LookupAPI">LookupAPI</a>
            - 
                The module is needed for compilation. 
            
                The module is used during runtime. 
                
                    Specification version 
                    8.0
                    is required.
                </li>
</ul>
</p>
</p>
</p>
<p></p>
<font color="gray"><b><a name="answer-dep-non-nb">Question (dep-non-nb)</a>:</b><em>
            What other projects outside NetBeans does this one depend on?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   None.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-dep-platform">Question (dep-platform)</a>:</b><em>
            On which platforms does your module run? Does it run in the same
            way on each?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Any.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-dep-jre">Question (dep-jre)</a>:</b><em>
            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   1.5+.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-dep-jrejdk">Question (dep-jrejdk)</a>:</b><em>
            Do you require the JDK or is the JRE enough?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   JRE.
  </p>
 
</ul>

    
<hr>
<h2>Deployment</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-deploy-jar">Question (deploy-jar)</a>:</b><em>
            Do you deploy just module JAR file(s) or other files as well?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Just a JAR.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-deploy-nbm">Question (deploy-nbm)</a>:</b><em>
            Can you deploy an NBM via the Update Center?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Yes.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-deploy-shared">Question (deploy-shared)</a>:</b><em>
            Do you need to be installed in the shared location only, or in the user directory only,
            or can your module be installed anywhere?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Anywhere.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-deploy-packages">Question (deploy-packages)</a>:</b><em>
            Are packages of your module made inaccessible by not declaring them
            public?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Yes, only API and SPI packages are exported.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-deploy-dependencies">Question (deploy-dependencies)</a>:</b><em>
            What do other modules need to do to declare a dependency on this one,
            in addition to or instead of the normal module dependency declaration
            (e.g. tokens to require)?
            
        </em></font>
<p></p>
<b>Answer:</b>
Nothing.
 </ul>
    
    
<hr>
<h2>Compatibility with environment</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-compat-i18n">Question (compat-i18n)</a>:</b><em>
            Is your module correctly internationalized?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No I18N issues.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-compat-standards">Question (compat-standards)</a>:</b><em>
            Does the module implement or define any standards? Is the 
            implementation exact or does it deviate somehow?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-compat-version">Question (compat-version)</a>:</b><em>
            Can your module coexist with earlier and future
            versions of itself? Can you correctly read all old settings? Will future
            versions be able to read your current settings? Can you read
            or politely ignore settings stored by a future version?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No settings.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-compat-deprecation">Question (compat-deprecation)</a>:</b><em>
            How the introduction of your project influences functionality
            provided by previous version of the product?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   XXX no answer for compat-deprecation
  </p>
 
</ul>
    
    
<hr>
<h2>Access to resources</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-resources-file">Question (resources-file)</a>:</b><em>
            Does your module use <code>java.io.File</code> directly?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-resources-layer">Question (resources-layer)</a>:</b><em>
            Does your module provide own layer? Does it create any files or
            folders in it? What it is trying to communicate by that and with which 
            components?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-resources-read">Question (resources-read)</a>:</b><em>
            Does your module read any resources from layers? For what purpose?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-resources-mask">Question (resources-mask)</a>:</b><em>
            Does your module mask/hide/override any resources provided by other modules in
            their layers?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-resources-preferences">Question (resources-preferences)</a>:</b><em>
            Does your module uses preferences via Preferences API? Does your module use NbPreferences or
            or regular JDK Preferences ? Does it read, write or both ? 
            Does it share preferences with other modules ? If so, then why ?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   XXX no answer for resources-preferences
  </p>
 
</ul>

    
    
<hr>
<h2>Lookup of components</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-lookup-lookup">Question (lookup-lookup)</a>:</b><em>
            Does your module use <code>org.openide.util.Lookup</code>
            or any similar technology to find any components to communicate with? Which ones?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Yes, query implementations are found using Lookup as usual.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-lookup-register">Question (lookup-register)</a>:</b><em>
            Do you register anything into lookup for other code to find?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-lookup-remove">Question (lookup-remove)</a>:</b><em>
            Do you remove entries of other modules from lookup?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
</ul>

    
    <!-- classification of interfaces -->
    
    <!-- package names -->
    
    
    
<hr>
<h2>Execution Environment</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-exec-property">Question (exec-property)</a>:</b><em>
            Is execution of your code influenced by any environment or
            Java system (<code>System.getProperty</code>) property?
            On a similar note, is there something interesting that you
            pass to <code>java.util.logging.Logger</code>? Or do you observe
            what others log?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-component">Question (exec-component)</a>:</b><em>
            Is execution of your code influenced by any (string) property
            of any of your components?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-ant-tasks">Question (exec-ant-tasks)</a>:</b><em>
            Do you define or register any ant tasks that other can use?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   XXX no answer for exec-ant-tasks
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-classloader">Question (exec-classloader)</a>:</b><em>
            Does your code create its own class loader(s)?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   There is support for getting a class loader corresponding to a given
   classpath, useful e.g. for loading user JavaBeans to introspect. This is not
   used within the module itself.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-reflection">Question (exec-reflection)</a>:</b><em>
            Does your code use Java Reflection to execute other code?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-privateaccess">Question (exec-privateaccess)</a>:</b><em>
            Are you aware of any other parts of the system calling some of 
            your methods by reflection?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-process">Question (exec-process)</a>:</b><em>
            Do you execute an external process from your module? How do you ensure
            that the result is the same on different platforms? Do you parse output?
            Do you depend on result code?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-introspection">Question (exec-introspection)</a>:</b><em>
            Does your module use any kind of runtime type information (<code>instanceof</code>,
            work with <code>java.lang.Class</code>, etc.)?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-exec-threading">Question (exec-threading)</a>:</b><em>
            What threading models, if any, does your module adhere to? How the
            project behaves with respect to threading?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Currently each data structure is intended to be thread-safe.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-security-policy">Question (security-policy)</a>:</b><em>
            Does your functionality require modifications to the standard policy file?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-security-grant">Question (security-grant)</a>:</b><em>
            Does your code grant additional rights to some other code?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   
<code>ClassPath.getClassLoader(...)</code> is granted all permissions.
  </p>
 
</ul>
    
    
<hr>
<h2>Format of files and protocols</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-format-types">Question (format-types)</a>:</b><em>
            Which protocols and file formats (if any) does your module read or write on disk,
            or transmit or receive over the network? Do you generate an ant build script?
            Can it be edited and modified? 
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   None.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-format-dnd">Question (format-dnd)</a>:</b><em>
            Which protocols (if any) does your code understand during Drag &amp; Drop?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   None.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-format-clipboard">Question (format-clipboard)</a>:</b><em>
            Which data flavors (if any) does your code read from or insert to
            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   None.
  </p>
 
</ul>

    
    
<hr>
<h2>Performance and Scalability</h2>
<ul>
<p></p>
<font color="gray"><b><a name="answer-perf-startup">Question (perf-startup)</a>:</b><em>
            Does your module run any code on startup?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-exit">Question (perf-exit)</a>:</b><em>
            Does your module run any code on exit?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-scale">Question (perf-scale)</a>:</b><em>
            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?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   Queries perform linearly in number of implementations, but as usual there will
   typically be only one or two implementations, e.g. delegating to owner
   projects.
  </p>
  
<p>
   Currently <code>ClassPath</code>s keep global file change listeners to permit
   roots to be invalidated, and this makes file change events linear in the
   number of <code>ClassPath</code> objects. This area is being studied and will
   hopefully be optimized, perhaps reducing overhead to a small constant.
   May require explicit support from the Filesystems API to fully optimize.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-limit">Question (perf-limit)</a>:</b><em>
            Are there any hard-coded or practical limits in the number or size of
            elements your code can handle?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   None known.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-mem">Question (perf-mem)</a>:</b><em>
            How much memory does your component consume? Estimate
            with a relation to the number of windows, etc.
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   TBD, but probably little.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-wakeup">Question (perf-wakeup)</a>:</b><em>
            Does any piece of your code wake up periodically and do something
            even when the system is otherwise idle (no user interaction)?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-progress">Question (perf-progress)</a>:</b><em>
            Does your module execute any long-running tasks?
            
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-huge_dialogs">Question (perf-huge_dialogs)</a>:</b><em>
            Does your module contain any dialogs or wizards with a large number of
            GUI controls such as combo boxes, lists, trees, or text areas?
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-menus">Question (perf-menus)</a>:</b><em>
            Does your module use dynamically updated context menus, or
            context-sensitive actions with complicated and slow enablement logic?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No.
  </p>
 
<p></p>
<font color="gray"><b><a name="answer-perf-spi">Question (perf-spi)</a>:</b><em>
            How the performance of the plugged in code will be enforced?
            
        </em></font>
<p></p>
<b>Answer:</b>
  
<p>
   No special provisions.
  </p>
 
</ul>
    
    
    <!-- security -->
    <!-- recovery -->
    

</api-questions>



<!--
        <question id="arch-overall" when="init">
            Describe the overall architecture.
            <hint>
            What will be API for
            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
                clients and what support API</a>? 
            What parts will be pluggable?
            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
            to describe your general APIs.
            If possible please provide 
            simple diagrams. 
            </hint>
        </question>
-->
 



<!--
        <question id="arch-quality" when="init">
            How the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
            of your code will be tested and 
            how future regressions are going to be prevented?
            <hint>
            What kind of testing
            you want to use? What/how much area of functionality
            should be covered by the tests? 
            </hint>
        </question>
-->
 



<!--
        <question id="arch-time" when="init">
            What are the time estimates of the work?
            <hint>
            Please express your estimates of how long the design, implementation,
            stabilization are likely to last. How many people will be needed to
            implement this and what is the expected milestone the work should be 
            ready.
            </hint>
        </question>
-->
 



<!--
        <question id="arch-usecases" when="init">
            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
            use cases</a> of the new API. Who will use it at
            what circumstances and what will be the typical code to write
            to use the module.
        </question>
-->
 



<!--
        <question id="arch-what" when="init">
            What is this project good for?
            <hint>
            Please provide here a few lines describing the project, 
            what problem it should solve, provide links to documentation, 
            specifications, etc.
            </hint>
        </question>
-->
 



<!--
        <question id="compat-i18n" when="impl">
            Is your module correctly internationalized?
            <hint>
            Correct internationalization means that it obeys instructions 
            at <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html">
            NetBeans I18N pages</a>.
            </hint>
        </question>
-->
 



<!--
        <question id="compat-standards" when="init">
            Does the module implement or define any standards? Is the 
            implementation exact or does it deviate somehow?
        </question>
-->
 



<!--
        <question id="compat-version" when="impl">
            Can your module coexist with earlier and future
            versions of itself? Can you correctly read all old settings? Will future
            versions be able to read your current settings? Can you read
            or politely ignore settings stored by a future version?
            
            <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>
-->
 



<!--
        <question id="dep-jre" when="final">
            Which version of JRE do 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>
-->
 



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



<!--
        <question id="dep-nb" when="init">
            What other NetBeans projects and modules does this one depend on?
            <hint>
            If you want, describe such projects as imported API using
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
            </hint>
        </question>
-->
 



<!--
        <question id="dep-non-nb" when="init">
            What other projects outside NetBeans does this one depend on?
            
            <hint>
            Some non-NetBeans projects are packaged as NetBeans modules
            (see <a href="http://libs.netbeans.org/">libraries</a>) and
            it is preferred to use this approach when more modules may
            depend on such third-party library.
            </hint>
        </question>
-->
 



<!--
        <question id="dep-platform" when="init">
            On which platforms does your module run? Does it run in the same
            way on each?
            <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>
-->
 



 



<!--
        <question id="deploy-jar" when="impl">
            Do you deploy just module JAR file(s) or other files as well?
            <hint>
            If your module consists of just one module JAR file, just confirm that.
            If it uses more than one JAR, describe where they 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/uninstallation leaves the system 
            in state as it was before installation.
            </hint>
        </question>
-->
 



<!--
        <question id="deploy-nbm" when="impl">
            Can you deploy an NBM via the Update Center?
            <hint>
            If not why?
            </hint>
        </question>
-->
 



<!--
        <question id="deploy-packages" when="init">
            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/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages">
            public packages
            </a>). If you do not restrict access to your classes you are
            making it too easy for other people to misuse your implementation
            details, that is why you should have good reason for not 
            restricting package access.
            </hint>
        </question>
-->
 



<!--
        <question id="deploy-shared" when="final">
            Do you need to be installed in the shared location only, or in the user directory only,
            or can your module be installed anywhere?
            <hint>
            Installation location shall not matter, if it does explain why.
            Consider also whether <code>InstalledFileLocator</code> can help.
            </hint>
        </question>
-->
 



<!--
        <question id="exec-classloader" when="impl">
            Does your code create its own class loader(s)?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
 



<!--
        <question id="exec-component" when="impl">
            Is execution of your code influenced by any (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 behavior 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>
-->
 



<!--
        <question id="exec-introspection" when="impl">
            Does your module use any kind of runtime type information (<code>instanceof</code>,
            work with <code>java.lang.Class</code>, etc.)?
            <hint>
            Check for cases when you have an object of type A and you also
            expect it to (possibly) be of type B and do some special action. That
            should be documented. The same applies on operations in meta-level
            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
            </hint>
        </question>
-->
 



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



<!--
        <question id="exec-process" when="impl">
            Do you execute an external process from your module? How do you ensure
            that the result is the same on different platforms? Do you parse output?
            Do you depend on result code?
            <hint>
            If you feed an input, parse the output please declare that as an API.
            </hint>
        </question>
-->
 



<!--
        <question id="exec-property" when="impl">
            Is execution of your code influenced by any environment or
            Java system (<code>System.getProperty</code>) property?
            
            <hint>
            If there is a property that can change the behavior of your 
            code, somebody will likely use it. You should describe what it does 
            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
            of this API. You may use
            <pre>
                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
                    description of the property, where it is used, what it influence, etc.
                &lt;/api&gt;            
            </pre>
            </hint>
        </question>
-->
 



<!--
        <question id="exec-reflection" when="impl">
            Does your code use Java Reflection to execute other code?
            <hint>
            This usually indicates a missing or insufficient 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>
-->
 



<!--
        <question id="exec-threading" when="impl">
            What threading models, if any, does your module adhere to?
            <hint>
                If your module calls foreign APIs which have a specific threading model,
                indicate how you comply with the requirements for multithreaded access
                (synchronization, mutexes, etc.) applicable to those APIs.
                If your module defines any APIs, or has complex internal structures
                that might be used from multiple threads, declare how you protect
                data against concurrent access, race conditions, deadlocks, etc.,
                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
                Examples: a class might be non-thread-safe (like Java Collections); might
                be fully thread-safe (internal locking); might require access through a mutex
                (and may or may not automatically acquire that mutex on behalf of a client method);
                might be able to run only in the event queue; etc.
                Also describe when any events are fired: synchronously, asynchronously, etc.
                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
            </hint>
        </question>
-->
 



<!--
        <question id="format-clipboard" when="impl">
            Which data flavors (if any) does your code read from or insert to
            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
            
            <hint>
            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
            Check your code for overriding these methods.
            </hint>
        </question>
-->
 



<!--
        <question id="format-dnd" when="impl">
            Which protocols (if any) does your code understand during Drag &amp; Drop?
            <hint>
            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>. 
            Check your code for overriding these methods. Btw. if they are not overridden, they
            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
            </hint>
        </question>
-->
 



<!--
        <question id="format-types" when="impl">
            Which protocols and file formats (if any) does your module read or write on disk,
            or transmit or receive over the network?
        </question>
-->
 



<!--
        <question id="lookup-lookup" when="init">
            Does your module use <code>org.openide.util.Lookup</code>
            or any similar technology to find any components to communicate with? 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 classify the stability of such
            API contract.
            </hint>
        </question>
-->
 



<!--
        <question id="lookup-register" when="final">
            Do you register anything into lookup for other code 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>
-->
 



<!--
        <question id="lookup-remove" when="final">
            Do you remove entries of other modules from 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>
-->
 



<!--
        <question id="perf-exit" when="final">
            Does your module run any code on exit?
        </question>
-->
 



<!--
        <question id="perf-huge_dialogs" when="final">
            Does your module contain any dialogs or wizards with a large number of
            GUI controls such as combo boxes, lists, trees, or text areas?
        </question>
-->
 



<!--
        <question id="perf-limit" when="init">
            Are there any hard-coded or practical limits in the number or size of
            elements your code can handle?
        </question>
-->
 



<!--
        <question id="perf-mem" when="final">
            How much memory does your component consume? Estimate
            with a relation to the number of windows, etc.
        </question>
-->
 



<!--
        <question id="perf-menus" when="final">
            Does your module use dynamically updated context menus, or
            context-sensitive actions with complicated enablement logic?
        </question>
-->
 



<!--
        <question id="perf-progress" when="final">
            Does your module execute any long-running tasks?
            
            <hint>Long running tasks should never block 
            AWT thread as it badly hurts the UI
            <a href="http://performance.netbeans.org/responsiveness/issues.html">
            responsiveness</a>.
            Tasks like connecting over
            network, computing huge amount of data, compilation
            be done asynchronously (for example
            using <code>RequestProcessor</code>), definitively it should 
            not block AWT thread.
            </hint>
        </question>
-->
 



<!--
        <question id="perf-scale" when="init">
            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?
            <hint>
            Please include some estimates, there are other more detailed 
            questions to answer in later phases of implementation. 
            </hint>
        </question>
-->
 



<!--
        <question id="perf-spi" when="init">
            How the performance of the plugged in code will be enforced?
            <hint>
            If you allow foreign code to be plugged into your own module, how
            do you enforce, that it will behave correctly and fast and will not
            negatively influence the performance of your own module?
            </hint>
        </question>
-->
 



<!--
        <question id="perf-startup" when="final">
            Does your module run any code on startup?
        </question>
-->
 



<!--
        <question id="perf-wakeup" when="final">
            Does any piece of your code wake up periodically and do something
            even when the system is otherwise idle (no user interaction)?
        </question>
-->
 



<!--
        <question id="resources-file" when="final">
            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 preferred
            way that should be used. But of course there can be situations when
            this is not suitable.
            </hint>
        </question>
-->
 



<!--
        <question id="resources-layer" when="final">
            Does your module provide own layer? Does it create any files or
            folders in it? What it is trying to communicate by that and with which 
            components?
            
            <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>
-->
 



<!--
        <question id="resources-mask" when="final">
            Does your module mask/hide/override any resources provided by other modules in
            their layers?
            
            <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>
-->
 



<!--
        <question id="resources-read" when="final">
            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 classify according to 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
            common stability categories</a>.
            </hint>
        </question>
-->
 


<!--
        <question id="security-grant" when="final">
            Does your code grant additional rights to some other code?
            <hint>Avoid using a class loader that adds extra
            permissions to loaded code unless really necessary.
            Also note that your API implementation
            can also expose unneeded permissions to enemy code by
            calling AccessController.doPrivileged().</hint>
        </question>
-->
 



<!--
        <question id="security-policy" when="final">
            Does your functionality require modifications to the standard policy file?
            <hint>Your code might pass control to third-party code not
            coming from trusted domains. This could be code downloaded over the
            network or code coming from libraries that are not bundled
            with NetBeans. Which permissions need to be granted to which domains?</hint>
        </question>
-->
 





<!--
        <question id="arch-where" when="impl">
            Where one can find sources for your module?
            <hint>
                Please provide link to the Hg web client at
                http://hg.netbeans.org/
                or just use tag defaultanswer generate='here'
            </hint>
        </question>
-->
 



<!--
        <question id="compat-deprecation" when="init">
            How the introduction of your project influences functionality
            provided by previous version of the product?
            <hint>
            If you are planning to deprecate/remove/change any existing APIs,
            list them here accompanied with the reason explaining why you
            are doing so.
            </hint>
        </question>
-->
 



<!--
        <question id="exec-ant-tasks" when="impl">
            Do you define or register any ant tasks that other can use?
            
            <hint>
            If you provide an ant task that users can use, you need to be very
            careful about its syntax and behaviour, as it most likely forms an
	          API for end users and as there is a lot of end users, their reaction
            when such API gets broken can be pretty strong.
            </hint>
        </question>
-->
 



<!--
        <question id="resources-preferences" when="final">
            Does your module uses preferences via Preferences API? Does your module use NbPreferences or
            or regular JDK Preferences ? Does it read, write or both ? 
            Does it share preferences with other modules ? If so, then why ?
            <hint>
                You may use
                    &lt;api type="export" group="preferences"
                    name="preference node name" category="private"&gt;
                    description of individual keys, where it is used, what it
                    influences, whether the module reads/write it, etc.
                    &lt;/api&gt;
                Due to XML ID restrictions, rather than /org/netbeans/modules/foo give the "name" as org.netbeans.modules.foo.
                Note that if you use NbPreferences this name will then be the same as the code name base of the module.
            </hint>
        </question>
-->
 


</api-answers>
<hr>
<p><span class="footnote">Built on September 14 2018.&nbsp;&nbsp;|&nbsp;&nbsp;         Copyright &#169; 2017-2018 Apache Software Foundation. All Rights Reserved.</span></p>
</body>
</html>
