<?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">
]>

<!-- XXX update for 4.1 format changes -->

<api-answers
  question-version="1.25"
  author="pbuzek@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>&lt;api type="export"/&gt;</code>
            to describe your general APIs.
            If possible please provide 
            simple diagrams. 
            </hint>
        </question>
-->
 <answer id="arch-overall">
  <p>
   Uses various project APIs to implement the project type. <a
   href="http://projects.netbeans.org/buildsys/design.html">Build system design
   document</a>. Implements web/webapi to provide project container for a web module.
  </p>
  <ol>
   <li>
    <api group="dtd" name="web-prj3.xsd" type="export" category="devel" url="http://www.netbeans.org/ns/web-project/3.xsd">
     <p>
      Definition of webproject-specific portions of <code>project.xml</code>.
     </p>
    </api>
   </li>
   <li>
    <api group="java.io.File" name="project.properties" type="export" category="devel">
     <p>
      Definition of recognized keys in <code>project.properties</code> and/or
      <code>private.properties</code>. XXX not yet formally specified.
     </p>
    </api>
   </li>
   <li>
    <api group="java.io.File" name="build-impl.xml" type="export" category="devel">
     <p>
      Definition of targets in <code>build-impl.xml</code> which may be called or
      overridden in <code>build.xml</code>. XXX not yet formally specified.
     </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>
   No unit tests at this point. IDE-wide functional testing covers
   some of the module&rsquo;s functionality.
  </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>
   Mostly done.
  </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>
   Covered by UI specification and design document.
  </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>
   Provides a project type for Web module projects. Web projects can be created
   from scratch, or you can import existing Web module source trees. Creates an Ant
   script letting you build the project (and subprojects), deploy it, debug it, run
   JUnit-format tests, and build Javadoc. Web Pages provide location for JSP and html
   content of the web module. Standard and server specific configuration files are
   displayed in project and can be edited. Provides code completion and other services 
   for editing Java sources and JSPs. Classpaths can include
   other projects, raw JARs, or configured libraries. Specific J2SE platforms may
   be configured. Target J2EE server can be selected and provides code completion
   for the J2EE APIs available on the server.
  </p>
 </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, although the project type does not yet internationalize messages coming
   from its (unedited) build scripts. This is possible but not yet implemented.
  </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>
   No.
  </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>
   The <code>project.xml</code> schema is versioned, current version 3 is compatible 
   with version 1 used in netbeans 4.0 and with version 2 used in EA and beta of 
   netbeans 4.1. There is a simple system option.
  </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>
   The JDK is needed for critical functionality such as compiling sources.
  </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>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
            </hint>
        </question>
-->
 <answer id="dep-nb">
  <ul>
   <li>
    <api group="java" name="AntModuleAPI" type="import" category="devel">
     <p>
      Used for running actions and for the <code>AntLogger</code> SPI.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="DebuggerCoreAPI" type="import" category="official">
     <p>
      Used for running debug action.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="DebuggerJPDAAPI" type="import" category="official">
     <p>
      Used for running debug action.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="J2EEServerAPI" type="import" category="friend">
     <p>
      Used for deployment and for some development time tasks (module verification,
      JSP-servlet mapping, server specific configuration editing). Classpath provided
      by j2ee platform used for compilation of project.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="EjbJarAPI" type="import" category="friend">
     <p>
      Used to add EJB references into web module.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="J2eeProjectSupportAPI" type="import" category="friend">
     <p>
      Server resources node.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JspParserAPI" type="import" category="friend">
     <p>
      Web/project implements the SPI part.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JspSyntaxAPI" type="import" category="friend">
     <p>
      Web/project implements the SPI part.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="J2EEDDAPI" type="import" category="friend">
     <p>
      Programatic access to web.xml structure.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JavaSupportAPIs" type="import" category="official">
     <p>
      Definition of classpaths and various queries implemented by the project type.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="nbdeploy" type="import" category="friend">
     <p>
      Used to deploy the project.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="JspC" type="export" category="friend">
     <p>
      Used to copile JSPs.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="JspCSingle" type="export" category="friend">
     <p>
      Used to copile a single JSP.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="nbbrowse" type="import" category="devel">
     <p>
      Used to browse generated Javadoc.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="nbjpdastart" type="import" category="devel">
     <p>
      Used to debug the project.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="nbjpdareload" type="import" category="devel">
     <p>
      Used to implement JPDA &ldquo;Hot Fix&rdquo; functionality.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JavaPlatformAPI" type="import" category="devel">
     <p>
      Used to select J2SE platforms (type <code>j2se</code>) to use as the target
      for a project.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JavaProjectAPI" type="import" category="devel">
     <p>
      Various purposes, such as multiplexing queries, and creating the package
      view.
     </p>
    </api>
   </li>
   <li>
    <api group="org.apache.tools.ant.Task" name="junit" type="import" category="devel">
     <p>
      Requires <code>junit.jar</code> to be in Ant&rsquo;s classpath so
      <code>&lt;junit&gt;</code> can be used to run unit tests.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="AntProjectAPI" type="import" category="devel">
     <p>
      Used to implement core project type functionality.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="ProjectAPI" type="import" category="devel">
     <p>
      Used for many reasons.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="ProjectLibrariesAPI" type="import" category="devel">
     <p>
      Used to add class libraries (type <code>j2se</code>) to the project
      classpath.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="ProjectUIAPI" type="import" category="devel">
     <p>
      Used to define UI of the project type.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="GeneralQueriesAPI" type="import" category="devel">
     <p>
      For various purposes both the API and SPI are used.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="JavaHierarchyAPI" type="import" category="deprecated">
     <p>
      Used to find potential main classes for the project.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="Datasystems" type="import" category="official">
     <p>
      Used for miscellaneous internal purposes.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="Filesystems" type="import" category="official">
     <p>
      Many uses.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="Nodes" type="import" category="official">
     <p>
      Used for logical view and perhaps in some dialogs and wizards.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="Wizards" type="import" category="official">
     <p>
      Used for project creation wizard and for customizer dialog.
     </p>
    </api>
   </li>
   <li>
    <api group="java" name="OptionsAPI" type="import" category="official">
     <p>
      Miscellaneous internal purposes (not exposed in the GUI).
     </p>
    </api>
   </li>
  </ul>
  <!-- XXX mdr for listening to project main class chg, etc. -->
 </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>
   Indirectly, Apache Ant and JUnit.
  </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">
  <p>
   N/A
  </p>
 </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>
   No public packages.
  </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>
   Uses property <code>platform.ant.name</code> returned by the <code>J2SEPlatformImpl.getProperties()</code>
   to determine the name of platform used in build scripts.
  </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>
                &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>
-->
 <answer id="exec-property">
  <p>
   <api type="export" group="systemproperty" name="jwebproject.transparentUpdate" category="private">
   If the property is set to true the j2seproject updates metadata of project.xml from 
   "http://www.netbeans.org/ns/web-project/1" or "http://www.netbeans.org/ns/web-project/2" 
   to "http://www.netbeans.org/ns/web-project/3" without any explicit user feedback.
   </api>
  </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>
   Mixture, according to particular functionality:
   <code>ProjectManager.mutex()</code>, EQ, etc.
  </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 &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>
-->
 <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>
   The usual Ant-based project metadata files and build scripts.
  </p>
  <p>
   Depends on the Javadoc structure. It tries to find the <code>overview-summary.html</code> in
   the api folder, and the <code>package-summary.html</code> and javadoc pages for classes in the
   package structure under the api folder.
  </p>
  <p>
   <!-- #58823 --> Writes XML-format JUnit results to <code>${build.test.results.dir}</code> for use by
   <code>org.netbeans.modules.junit</code>.
  </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 &lt;api group=&amp;lookup&amp; /&gt; tag.
            </hint>
        </question>
-->
 <answer id="lookup-lookup">
  <p>
   Nothing special.
  </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>
   Project type and various query implementations are registered. An
   <code>AntLogger</code> is registered which currently just tweaks the
   appearance of compiler errors.
  </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>
   Not usually, though modified project metadata is saved on close or exit.
   (Normally all GUI actions autosave immediately anyway.)
  </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>
   The customizer dialog is fairly large.
  </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 known.
  </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 not much.
  </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>
   Number of source files in the project will affect the time it takes to scan
   for a main class.
  </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>
   Only where necessary according to other components.
  </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>
   The new project wizard is registered in the layer.
  </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">
    <api group="layer" name="WebLookup" type="export" category="official">
     <p>
       "Projects/org-netbeans-modules-web-project/Lookup" folder's content is used to construct the project's additional lookup.
       It's content is expected to be <code>LookupProvider</code> instances. Web project provides <code>LookupMerger</code>s 
       for <code>Sources</code>, <code>PrivilegedTemplates</code> and <code>RecommendedTemplates</code>. Implementations added by 3rd parties 
       will be merged into a single instance in the project's lookup.
     </p>
    </api>
    <api group="layer" name="WebProjectCustomizer" type="export" category="official">
     <p>
       "Projects/org-netbeans-modules-web-project/Customizer" folder's content is used to construct the project's customizer.
       It's content is expected to be <code>ProjectCustomizer.CompositeCategoryProvider</code> instances.
       The lookup passed to the panels contains an instance of <code>Project</code> and <code>org.netbeans.modules.web.project.ui.customizer.WebProjectProperties</code>
       Please note that the latter is not part of any public APIs and you need implementation dependency to make use of it.
     </p>
    </api>
    <api group="layer" name="WebLogicalViewProvider" type="export" category="official">
     <p>
       "Projects/org-netbeans-modules-web-project/Nodes" folder's content is used to construct the project's child nodes.
       It's content is expected to be <code>NodeFactory</code> instances.
     </p>
    </api>
 </answer>



<!--
        <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>
-->
 <answer id="security-grant">
  <p>
   No.
  </p>
 </answer>



<!--
        <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>
-->
 <answer id="security-policy">
  <p>
   No.
  </p>
 </answer>

<!--
        <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>
-->
 <answer id="exec-ant-tasks">
  <p>
   JspC and JspCSingle are provided for JSP compilation. The tasks extend apache
   tasks for JSP compilation, giving more output (for navigation to source) and
   single jsp compilation.
  </p>
 </answer>


</api-answers>
