<?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.25"
  author="jjancura@netbeans.org"
>

  &api-questions;


<!-- architecture ********************************************************************** -->


<!-- Question: arch-what

     <question id="arch-what">
            What is this project good for?
            <hint>
            Please provide here few lines describing the the project, 
            what problem it should solve, provide links to documentation, 
            specifications, etc.
            </hint>
        </question>
-->
<answer id="arch-what">
The debuggerjpda/api (Debugger JPDA API) defines API for NetBeans Java Debugger.
</answer>

<!--
        <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">
The JPDA Debugger API module defines common API for Java debuggers.
<br/>List of APIs:
<ul>
<li><api name="JPDADebuggerAPI" type="export" category="official" url="@org-netbeans-api-debugger-jpda@" group="java"/> JPDA Debugger API</li>
<li><api name="JPDADebuggerSPI" type="import" category="official" url="@org-netbeans-api-debugger-jpda@" group="java"/> JPDA Debugger SPI</li>

<li><api name="Meta-inf-debugger-netbeans-JPDASession-Java-org.netbeans.spi.debugger.jpda.JPDADebugger" group="lookup" type="import" category="official" url="@TOP@/@org-netbeans-spi-viewmodel@"/> Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-netbeans-JPDASession-org.netbeans.spi.debugger.jpda.JPDADebugger" group="lookup" type="import" category="official" url="@TOP@/@org-netbeans-spi-viewmodel@"/> Debugger View loads all model definitions.</li>
</ul>
</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 at
            what circumstances and what will be the typical code to write
            to use the module.
        </question>
-->
<answer id="arch-usecases">
<h2>UseCase I. - Install
and use CPP debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">CPP debugger plug-in installs support
for debugging of some new language to the NetBeans IDE, and some new
debugging engine. This implementation of debugger should share UI
components (actions, Debugger Views, ...) with default NB Java
Debugger. It should share basic debugger model too - notion of current
context, current session, thread, call stack line, ...</span><br/>
<br/>
CPP debugger plug-in installs:<br/>
<ul>
  <li>New set of breakpoint types - CPPLineBreakpointType,
CPPMethodBreakpointType...
  <ul>
    <li>This set of breakpoint types will have special cathegory in Add
Breakpoint Dialog called "CPP". Each breakpoint type will install a new
JPanel to Add Breakpoint Dialog.</li>
    <li>ToggleBreakpointAction on CPP files will create / remove a
instance of CPPLineBreakpointType.</li>
  </ul>
  </li>
  <li>Install some watches evaluator for CPP language.</li>
  <li>Some new View to Debugger Window</li>
  <li>Use Termilnal Emulator in Output Window as command line interface
to CPP debugger plug-in.</li>
  <li>Install / uninstall a columns to / from standard Debugger Window
Views.</li>
  <li>Redefine Nodes used for representation of CPP threads, watches,
variables, callstacks, sessions and breakpoints
  <ul>
    <li>Add / remove some properties<br/>
    </li>
    <li>Add / remove some actions</li>
    <li>change icons</li>
    <li>change display names</li>
  </ul>
  </li>
  <li>Register CPP Actions for:
  <ul>
    <li>Step Into, Over, Out, Continue, Pause, Start, Kill, Restart,
Finish</li>
  </ul>
  </li>
  <li>Some new CPP specific actions.</li>
</ul>
<br/>

<h2>UseCase II. -
Install and use JSP debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">JSP debugger plug-in installs support
for debugging of some new language to the NetBeans Java Debugger. It
does not contain a new debugger engine, but it delegates to standard NB
Java debugger. So it does not depends on Debugger Core API only, but it
depends on JavaDebugger API too.<br/>
<br/>
JSP debugger plug-in installs:<br/>
</span>
<ul>
  <li>New set of breakpoint types - JSPLineBreakpointType, ...
  <ul>
    <li>This set of breakpoint types will have special cathegory in Add
Breakpoint Dialog called "JSP". Each breakpoint type will install a new
JPanel to Add Breakpoint Dialog.</li>
    <li>ToggleBreakpointAction on JSP files will create / remove a
instance of JSPLineBreakpointType.</li>
    <li>JSPLineBreakpointType delegates all functionality to
JPDAClassBreakpoint and JPDALineBreakpoint<br/>
    </li>
  </ul>
  </li>
  <li>Some watches evaluator for JSP language expression. This
evaluator delegates evaluation of Java expressions to standard
JavaExpressionEvaluator.<br/>
  </li>
  <li>Redefine Nodes used for representation of JSP callstacks and
breakpoints
  <ul>
    <li>Add / remove some properties<br/>
    </li>
    <li>Add / remove some actions</li>
    <li>change icons</li>
    <li>change display names</li>
  </ul>
  </li>
  <li>Register JSP Actions for:
  <ul>
    <li>Step Into, Over, Out</li>
    <li>Implementation of this actions delegates to standard Java Step
actions - it redefines Java stepping functionality.</li>
  </ul>
  </li>
  <li>JSP debugger plug in adds support for new programming language
(JSP) to already running Java Session.<br/>
  </li>
</ul>
<br/>

<h2>UseCase III. -
Install and use J2EE debugger plug-in to NetBeans + Java Debugger.</h2>
<span style="font-style: italic;">J2EE debugger plug-in installs some
enhancements to the standard Java Debugger. It
does not contain a new debugger engine or language support. So it does
not depends on Debugger Core API only, but it
depends on JavaDebugger API too.<br/>
<br/>
J2EE debugger plug-in installs:<br/>
</span>
<ul>
  <li>New set of breakpoint types</li>
  <li>Filter for Threads and Callstack Views. This filter should allow
to:<br/>
  <ul>
    <li>Add / remove / modify nodes in this views.</li>
  </ul>
  </li>
  <li>Redefine Stepping (Smart Stepping) behaviour of default Java
Debugger.</li>
  <li>Some new View to Debugger Window</li>
</ul>
<br/>
<h2>UseCase IV. -
Install and use DBX debugger plug-in to NetBeans.</h2>
<span style="font-style: italic;">DBX debugger plug-in installs support
for debugging of some new language (CPP) to the NetBeans IDE, and some
new
debugging engine. But it contains debugger engine for Java debugging
too. DBX debugger engine has its own session management (or will have
in the next versions). One debugger engine can manage more than one
sessions. One engine supports debugging in more than one language.<br/>
<br/>
</span>

</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 the work should be 
            ready.
            </hint>
        </question>
-->
<answer id="arch-time">
10/26/2003 - Basic Debugger Core API ready for integration
04/01/2004 - Final review of Debugger Core &amp; Java Debugger API, merge to trunk.
</answer>
        
<!--
        <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>
-->

<answer id="arch-quality">
We plan to use standard unit testing to prevent future regressions.
We would like to test 100% of our APIs.
</answer>

<!-- dependencies ********************************************************************** -->


<!-- Question: dep-jre

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



<!-- Question: dep-jrejdk

     <question id="dep-jrejdk">
            Do you require JDK or is JRE enough?
        </question>
-->
<answer id="dep-jrejdk">
    Need JDK (dt.jar).
</answer>



<!-- Question: dep-nb

     <question id="dep-nb">
            What other NetBeans projects this one depends on?
            <hint>
            If you want, describe such projects as imported API using
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
            </hint>
        </question>
-->
<answer id="dep-nb">
    <api name="OpenAPIs" type="import" category="official" group="java"/>
    <api name="DebuggerCoreAPI" type="import" category="official" url="@TOP@/@org-netbeans-api-debugger@" group="java"/>
    <api name="ViewModelAPI" type="import" category="official" url="@TOP@/@org-netbeans-spi-viewmodel@" group="java"/>
</answer>



<!-- Question: dep-non-nb

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



<!-- Question: dep-platform

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



<!-- deploy ********************************************************************** -->



<!-- Question: deploy-jar

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



<!-- Question: deploy-nbm

     <question id="deploy-nbm">
            Can you deploy NBM via AutoUpdate center?
            <hint>
            If not why?
            </hint>
        </question>
-->
<answer id="deploy-nbm">
    Yes.
</answer>



<!-- Question: deploy-packages

     <question id="deploy-packages">
            Are packages of your module made inaccessible by not declaring them
            public?
            
            <hint>
            NetBeans module system allows restriction of access rights to
            public classes of your module from other modules. This prevents
            unwanted dependencies of others on your code and should be used
            whenever possible (<a href="http://www.netbeans.org/download/apis/org/openide/doc-files/upgrade.html#3.4-public-packages">
            public packages
            </a>). 
            </hint>
        </question>
-->
<answer id="deploy-packages">
    Yes.
</answer>



<!-- Question: deploy-shared

     <question id="deploy-shared">
            Do you need to be installed in shared location or only in user directory?
            <hint>
            Installation location shall not matter, if it does explain why.
            </hint>
        </question>
-->
<answer id="deploy-shared">
    Module can be installed anywhere.
</answer>


<answer id="deploy-dependencies">
Nothing.
</answer>



<!-- compatibility ********************************************************************** -->


<!-- Question: compat-i18n

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



<!-- Question: compat-standards

     <question id="compat-standards">
            Does the module implements or defines any standards? Is the 
            implementation exact or it deviates somehow?
        </question>
-->
<answer id="compat-standards">
    None defined or implemented.
</answer>



<!-- Question: compat-version

     <question id="compat-version">
            Does your module properly coexists with earlier and future
            versions? Can you correctly read settings? Will future
            versions be able to read settings?
            
            <hint>
            Very helpful for reading settings is to store version number
            there, so future versions can decide whether how to read/convert
            the settings and older versions can ignore the new ones.
            </hint>
        </question>
-->
<answer id="compat-version">
    Only one version of the module can be installed at a time. 
    The settings are shared across different versions, stored
    and read by Java serialization and will be read in future as well.
</answer>




<!-- resources ********************************************************************** -->


<!-- Question: resources-file

     <question id="resources-file">
            Does your module use <code>java.io.File</code> directly?
            
            <hint>
            NetBeans provide a logical wrapper over plain files called 
            <code>org.openide.filesystems.FileObject</code> that
            provides uniform access to such resources and is the prefered
            way that should be used. But of course there can be situations when
            this is not suitable.
            </hint>
        </question>
-->
<answer id="resources-file">
    No.
</answer>



<!-- Question: resources-layer

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



<!-- Question: resources-mask

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



<!-- Question: resources-read

     <question id="resources-read">
            Does your module read any resources from layers? For what purpose?
            
            <hint>
            As this is some kind of intermodule dependency, it is a kind of API.
            Please describe it and clasify according to 
            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
            common stability categories</a>.
            </hint>
        </question>
-->
<answer id="resources-read">
    No.
</answer>


<!-- lookup ********************************************************************** -->


<!-- Question: lookup-lookup

     <question id="lookup-lookup">
            Does your module uses <code>org.openide.util.Lookup</code>
            to find any components to communicate to? Which ones?
            
            <hint>
            Please describe the interfaces you are searching for, where 
            are defined, whether you are searching for just one or more of them,
            if the order is important, etc. Also clasify the stability of such
            API contract.
            </hint>
        </question>
-->
<answer id="lookup-lookup">
    No. But we use our own private implementation of lookup pattern.
    We are searching for instances of various servies defined in *.spi.* packages.
    The contract is described in JavaDoc.
</answer>



<!-- Question: lookup-register

     <question id="lookup-register">
            Do you register anything into the lookup for other to find? 
            <hint>
            Do you register using layer file or using <code>META-INF/services</code>?
            Who is supposed to find your component?
            </hint>
        </question>
-->
<answer id="lookup-register">
    We use our private namespace <code>META-INF/debugger</code> for registration. 
    The contract is described in JavaDoc.
</answer>



<!-- Question: lookup-remove

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



<!-- execution ********************************************************************** -->


<!-- Question: exec-property

     <question id="exec-property">
            Is execution of your code influenced by any environment of
            system (<code>System.getProperty</code>) property?
            
            <hint>
            If there is a property that can change the behaviour of your 
            code, somebody will likely use it. You should describe what it does 
            and the stability category of this API. You may use
            <PRE>
                &lt;property name="id" category="private" &gt;
                    description of the property, where it is used, what it influence, etc.
                &lt;/property&gt;            
            </PRE>
            </hint>
        </question>
-->
<answer id="exec-property">
    The default implementation of this API recognizes these properties:
    <!-- Update also debuggerjpda/arch.xml/exec-property when changing this -->
    <api name="SS_ACTION_STEPOUT" group="property" category="friend" type="export">
        When set to Boolean.TRUE, this option is causing step out during smart-stepping
        instead of step into. Thus it much faster skips code that is not selected
        for debugging, but it may also skip code that should be debugged if it's
        called from a source that has debugging disabled.
        This is advantageous when the speed is important (e.g. in J2ME).
        This property can be set through a map of properties that is passed to
        JPDADebugger.attach (), like J2ME_DEBUGGER property.
    </api>
    <api name="netbeans.debugger.show_hidden_breakpoints" group="systemproperty" category="private" type="export">
        This system property is causing the breakpoints view to show also hidden
        breakpoints.
    </api>
    <api name="org.netbeans.modules.debugger.jpda.breakpoints.level" group="systemproperty" category="private" type="export">
        Logging level for informational messages about breakpoint
        submission and hits. They use Level.FINE and Level.FINER levels and
        are printed into the NetBeans message log.
    </api>
    <api name="netbeans.debugger.start" group="systemproperty" category="private" type="export">
        When this system property is set, informational messages about start of
        JPDA debugger are printed into standard output (console).
    </api>
    <api name="netbeans.debugger.jditrace" group="systemproperty" category="private" type="export">
        This system property sets the debug mode of the debuggee virtual machine
        via <code>VirtualMachine.setDebugTraceMode()</code> method. See the javadoc
        of that method for the description and possible values.
    </api>
    <api name="org.netbeans.modules.debugger.jpda.jdievents.level" group="systemproperty" category="private" type="export">
        Logging level for informational messages about received JDI events.
        They use Level.FINE level and are printed into the NetBeans message log.
    </api>
    <api name="netbeans.debugger.smartstepping" group="systemproperty" category="private" type="export">
        When this system property is set, informational messages about the smart
        stepping process are printed into standard output (console).
    </api>
    <api name="netbeans.debugger.noInvokeMethods" group="systemproperty" category="private" type="export">
        When this system property is set, methods invocation in debuggee is disabled.
    </api>
    <api name="org.netbeans.modules.debugger.jpda.invokeMethod.level" group="systemproperty" category="private" type="export">
        Logging level for messages about method invocation.
        They use Level.FINE level and are printed into the NetBeans message log.
    </api>
    <api name="org.netbeans.modules.debugger.jpda.getValue.level" group="systemproperty" category="private" type="export">
        Logging level for messages about variables evaluation.
        They use Level.FINE level and are printed into the NetBeans message log.
    </api>
    <api name="netbeans.debugger.viewrefresh" group="systemproperty" category="private" type="export">
        When this system property is set, informational messages about the tasks
        that refresh debugger views are printed into standard output (console).
        The value of that property should contain 'w' for watches view, 'l' for
        local variables view, 'c' for call stack view, 's' for classes view and
        't' for threads view.
    </api>
</answer>


<!-- Question: exec-component

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


<!-- Question: exec-classloader

     <question id="exec-classloader">
            Does your code uses own classloader?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
<answer id="exec-classloader">
    No.
</answer>




<!-- Question: exec-reflection

     <question id="exec-reflection">
            Does your code uses java.lang.reflect to execute some other code?
            <hint>
            This usually indicates a missing or unsufficient API in the other
            part of the system. If the other side is not aware of your dependency
            this contract can be easily broken.
            </hint>
        </question>
-->
<answer id="exec-reflection">
    No.
</answer>




<!-- Question: exec-privateaccess

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


        
<!-- Question: exec-process
        <question id="exec-process">
            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">
    No.
</answer>
        
<!-- Question: exec-introspection
        <question id="exec-introspection">
            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">
    debuggerjpda/api does not use introspection.
    The cases when an object is tested on various types are quite common, but not documented.
</answer>




<!-- Question: exec-threading
        <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">
    We use standard Java features - synchronized blocks - to synchronize our code.
</answer>



<!-- format ********************************************************************** -->



<!-- Question: format-clipboard

     <question id="format-clipboard">
            Which protocols your code reads/inserts when communicating with
            clipboard?
        </question>
-->
<answer id="format-clipboard">
    No interaction with clipboard.
</answer>



<!-- Question: format-dnd

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



<!-- Question: format-types

     <question id="format-types">
            Which file formats your code reads or writes on disk?
        </question>
-->
<answer id="format-types">
    None.
</answer>



<!-- performance ********************************************************************** -->



<!-- Question: perf-startup

     <question id="perf-startup">
            Does your module executes anything on startup?
        </question>
-->
<answer id="perf-startup">
    No.
</answer>


<!-- Question: perf-exit

     <question id="perf-exit">
            Does your module executes anything on exit?
        </question>
-->
<answer id="perf-exit">
    No.
</answer>



<!-- Question: perf-scale

     <question id="perf-scale">
            Which external criteria influence the performance of your
            program (size of file in editor, number of files in menu, 
            in source directory, etc.) and how well your code scales?
            Please include some estimates.
        </question>
-->
<answer id="perf-scale">
    None.
</answer>


<!-- Question: perf-limit

     <question id="perf-limit">
            Are there any limits in number/size of elements your code
            can handle?
        </question>
-->
<answer id="perf-limit">
    No explicit limits. Technically, the available memory size is the limit...
</answer>



<!-- Question: perf-mem

     <question id="perf-mem">
            What is the amount of memory your component occupies? Estimate
            with a relaction to the number of windows, etc.
        </question>
-->
<answer id="perf-mem">
    Rough numbers:
    <ul>
    <li>debuggercore with Debugger Window opened: 2MB</li>
    </ul>
</answer>


<!-- Question: perf-wakeup

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



<!-- Question: perf-progress

     <question id="perf-progress">
            Does your module executes some long running task?
            <hint>Typically they are tasks like connecting over
            network, computing huge amount of data, compilation.
            Such communication should be done asynchronously (for example
            using <code>RequestProcessor</code>), definitively it should 
            not block AWT thread.
            </hint>
        </question>
-->
<answer id="perf-progress">
    No.
</answer>


<!-- Question: perf-huge_dialogs

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


<!-- Question: perf-menus

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


<!-- Question: perf-spi
        <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>
-->
<answer id="perf-spi">
    We are not able to enforce performance of plugged in code.
</answer>






<!--
        <question id="arch-where" when="init">
            Where one can find sources for your module?
            <hint>
                Please provide link to the CVS web client at
                http://www.netbeans.org/download/source_browse.html
                or just use tag defaultanswer generate='here'
            </hint>
        </question>
-->
 <answer id="arch-where">
  <defaultanswer generate='here' />
 </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">
  No.
 </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">
  No.
 </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">
  No.
 </answer>

</api-answers>
