| <?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.24" | 
 |   author="dkonecny@netbeans.org" | 
 | > | 
 |  | 
 |   &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><api type="export"/></code> | 
 |             to describe your general APIs. | 
 |             If possible please provide  | 
 |             simple diagrams.  | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="arch-overall"> | 
 |   <p> | 
 |    J2SE development support for freeform project. | 
 |   </p> | 
 |   <api group="java" name="JavaFreeformProjectSPI" type="export" category="friend"> | 
 |   <p> | 
 |    Provides support SPI for instantiating this extension, e.g. Web freeform  | 
 |    extension can use it as part of its project wizard to set up new freeform | 
 |    project with both Web and J2SE development support enabled. | 
 |   </p> | 
 |   </api> | 
 |   <p> | 
 |    The behavior of this extension is entirely controlled by | 
 |    <code>project.xml</code>: | 
 |   </p> | 
 |   <ol> | 
 |    <li> | 
 |     <api group="dtd" name="freeform-project-java.xsd" type="export" category="official" url="http://www.netbeans.org/ns/freeform-project-java/1.xsd"> | 
 |      <p> | 
 |       Old XML schema for the Java-specific section. Users are allowed | 
 |       to modify this section by hand and can refer to this schema for available | 
 |       syntax. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="dtd" name="freeform-project-java-2.xsd" type="export" category="official" url="http://www.netbeans.org/ns/freeform-project-java/2.xsd"> | 
 |      <p> | 
 |       Current XML schema for the Java-specific section. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |   </ol> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="arch-quality" when="init"> | 
 |             How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> | 
 |             of your code be tested and  | 
 |             how are future regressions going to be prevented? | 
 |             <hint> | 
 |             What kind of testing do | 
 |             you want to use? How much functionality, in which areas, | 
 |             should be covered by the tests?  | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="arch-quality"> | 
 |   <p> | 
 |    Unit test coverage should be high, except for the GUI portions which may be | 
 |    covered by functional tests in the future. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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 by which the work should be  | 
 |             ready? | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="arch-time"> | 
 |   <p> | 
 |    Complete. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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 under | 
 |             what circumstances? What kind of code would typically need to be written | 
 |             to use the module? | 
 |         </question> | 
 | --> | 
 |  <answer id="arch-usecases"> | 
 |   <p> | 
 |    See the <a | 
 |    href="http://projects.netbeans.org/buildsys/design.html#freeform">Architecture | 
 |    Sketch</a> for justifications of the module. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="arch-what"> | 
 |   <p> | 
 |    This module implements J2SE development support in Freeform project type. | 
 |    See Freeform project type documentation for its general description. The | 
 |    main features of this extension are: | 
 |   </p> | 
 |   <ol> | 
 |    <li> | 
 |     <p> | 
 |      Provides <code>packages</code> style view of source folder. | 
 |     </p> | 
 |    </li> | 
 |    <li> | 
 |     <p> | 
 |      Answers various Java specific <dfn>queries</dfn> like classpath to use | 
 |      for source files for purposes of code completion and refactoring, source | 
 |      level to use for source files, etc. | 
 |     </p> | 
 |    </li> | 
 |    <li> | 
 |     <p> | 
 |      Provides wizard to help the user set up a new project with J2SE support. | 
 |     </p> | 
 |    </li> | 
 |   </ol> | 
 |   <p> | 
 |    Specifications: | 
 |   </p> | 
 |   <ol> | 
 |    <li> | 
 |     <a href="http://projects.netbeans.org/buildsys/freeform-project-ui-spec.html">UI Specification</a> | 
 |    </li> | 
 |    <li> | 
 |     <a href="http://projects.netbeans.org/buildsys/design.html#freeform">Architecture Sketch</a> | 
 |    </li> | 
 |   </ol> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="compat-i18n"> | 
 |   <p> | 
 |    Yes. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="compat-standards" when="init"> | 
 |             Does the module implement or define any standards? Is the  | 
 |             implementation exact or does it deviate somehow? | 
 |         </question> | 
 | --> | 
 |  <answer id="compat-standards"> | 
 |   <p> | 
 |    Defines project syntax of J2SE support. There is no known independent format for this. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="compat-version"> | 
 |   <p> | 
 |    Project XML schemas namespaces are versioned. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="dep-jre"> | 
 |   <p> | 
 |    1.4+. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="dep-jrejdk" when="final"> | 
 |             Do you require the JDK or is the JRE enough? | 
 |         </question> | 
 | --> | 
 |  <answer id="dep-jrejdk"> | 
 |   <p> | 
 |    JRE. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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 APIs using | 
 |             the <code><api name="identification" type="import or export" category="stable" url="where is the description" /></code> | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="dep-nb"> | 
 |   <ul> | 
 |    <li> | 
 |     <api group="java" name="FreeformProjectSPI" type="import" category="friend"> | 
 |      <p> | 
 |       Base Freeform SPI. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="AntProjectAPI" type="import" category="official"> | 
 |      <p> | 
 |       The SPI is used heavily to implement various queries, evaluate Ant | 
 |       properties at development time, etc. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="JavaSupportAPIs" type="import" category="official"> | 
 |      <p> | 
 |       Implements the classpath query. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="JavaPlatformAPI" type="import" category="official"> | 
 |      <p> | 
 |       Looks for registered Java platforms to handle the boot classpath. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="JavaProjectAPI" type="import" category="official"> | 
 |      <p> | 
 |       Used for the Java package view, etc. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="ProjectAPI" type="import" category="official"> | 
 |      <p> | 
 |       Basic project API. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="ProjectUIAPI" type="import" category="official"> | 
 |      <p> | 
 |       Used to register the project open hook, etc. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="GeneralQueriesAPI" type="import" category="official"> | 
 |      <p> | 
 |       For checking file collocation. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="Filesystems" type="import" category="official"> | 
 |      <p> | 
 |       Used for many purposes. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="Nodes" type="import" category="official"> | 
 |      <p> | 
 |       Used to show the logical view. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |    <li> | 
 |     <api group="java" name="Wizards" type="import" category="official"> | 
 |      <p> | 
 |       For the new project wizards. | 
 |      </p> | 
 |     </api> | 
 |    </li> | 
 |   </ul> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="dep-non-nb"> | 
 |   <p> | 
 |    None. (Implicitly Apache Ant.) | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="dep-platform"> | 
 |   <p> | 
 |    Any. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 |  <answer id="deploy-dependencies"> | 
 | Nothing. | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="deploy-jar"> | 
 |   <p> | 
 |    Just a JAR. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="deploy-nbm" when="impl"> | 
 |             Can you deploy an NBM via the Update Center? | 
 |             <hint> | 
 |             If not why? | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="deploy-nbm"> | 
 |   <p> | 
 |    Yes. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="deploy-packages"> | 
 |   <p> | 
 |    Only official SPI packages are exported (and only to friend modules). | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="deploy-shared"> | 
 |   <p> | 
 |    Anywhere. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-classloader"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-component"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-introspection"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-privateaccess"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-process"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 |                 <api type="export" group="property" name="id" category="private" url="http://..."> | 
 |                     description of the property, where it is used, what it influence, etc. | 
 |                 </api>             | 
 |             </pre> | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="exec-property"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-reflection"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="exec-threading"> | 
 |   <p> | 
 |    Uses <code>ProjectManager.mutex()</code> in some cases. Mostly depends on | 
 |    threading model of queries. EQ for GUI things of course. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="format-clipboard"> | 
 |   <p> | 
 |    None. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="format-dnd" when="impl"> | 
 |             Which protocols (if any) does your code understand during Drag & 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> | 
 | --> | 
 |  <answer id="format-dnd"> | 
 |   <p> | 
 |    None. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="format-types"> | 
 |   <p> | 
 |    None. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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. For that use <api group=&lookup& /> tag. | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="lookup-lookup"> | 
 |   <p> | 
 |    Just usual <code>getDefault</code> methods. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="lookup-register"> | 
 |   <p> | 
 |    Implementation of <code>ProjectNature</code> is registered in <code>META-INF/services</code>. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="lookup-remove"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="perf-exit" when="final"> | 
 |             Does your module run any code on exit? | 
 |         </question> | 
 | --> | 
 |  <answer id="perf-exit"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="perf-huge_dialogs"> | 
 |   <p> | 
 |    No. There are two customizer panels which are provided by this  | 
 |    extension and which are part of Freeform project customizer, but they  | 
 |    are of reasonable size. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="perf-limit"> | 
 |   <p> | 
 |    None in particular. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="perf-mem" when="final"> | 
 |             How much memory does your component consume? Estimate | 
 |             with a relation to the number of windows, etc. | 
 |         </question> | 
 | --> | 
 |  <answer id="perf-mem"> | 
 |   <p> | 
 |    Unknown; probably small. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="perf-menus" when="final"> | 
 |             Does your module use dynamically updated context menus, or | 
 |             context-sensitive actions with complicated enablement logic? | 
 |         </question> | 
 | --> | 
 |  <answer id="perf-menus"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="perf-progress"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="perf-scale"> | 
 |   <p> | 
 |    Nothing known. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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 quickly and will not | 
 |             negatively influence the performance of your own module? | 
 |             </hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="perf-spi"> | 
 |   <p> | 
 |    N/A | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="perf-startup" when="final"> | 
 |             Does your module run any code on startup? | 
 |         </question> | 
 | --> | 
 |  <answer id="perf-startup"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="perf-wakeup"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="resources-file"> | 
 |   <p> | 
 |    Where needed to evaluate Ant properties or satisfy queries. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="resources-layer"> | 
 |   <p> | 
 |    Registers new project wizards. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="resources-mask"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <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> | 
 | --> | 
 |  <answer id="resources-read"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="security-grant" when="final"> | 
 |             Does your code grant addition rights to some code? | 
 |             <hint>Avoid using a classloder that adds some extra | 
 |             permissions to loaded code unless realy necessary. | 
 |             Also note that your API implementation | 
 |             can also expose unneeded permissions to enemy code by | 
 |             AccessController.doPrilileged() calls.</hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="security-grant"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 |  | 
 |  | 
 | <!-- | 
 |         <question id="security-policy" when="final"> | 
 |             Does your functionality require standard policy file modification? | 
 |             <hint>Your code may pass control to third party code not | 
 |             coming from trusted domain. It covers code downloaded over | 
 |             network or code coming from libraries that are not bundled | 
 |             with NetBeans. Which permissions it needs to grant to which domain?</hint> | 
 |         </question> | 
 | --> | 
 |  <answer id="security-policy"> | 
 |   <p> | 
 |    No. | 
 |   </p> | 
 |  </answer> | 
 |  | 
 | </api-answers> |