<?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 debuggercore/api module (Debugger Core API) allows to install different debugger implementation to one IDE. 
It allows to share some common UI components. 
</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 Debugger Core API module defines common structures for integration of debugger implementations into NetBeans IDE.
<br/>List of APIs:
<ul>
<li><api name="DebuggerCoreAPI" type="export" category="official" url="@org-netbeans-api-debugger@" group="java"/> Debugger Core APIs</li>
<li><api name="DebuggerCoreSPI" type="import" category="official" url="@org-netbeans-api-debugger@" group="java"/> Debugger Core SPIs</li>

<li><api name="Meta-inf-debugger-org.netbeans.api.debugger.Properties-Reader" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all property readers from given folder.</li>
<li><api name="Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.SessionProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all session providers for specific DebuggerInfo.</li>
<li><api name="Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DelegatingSessionProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all delegating session providers for specific DebuggerInfo.</li>
<li><api name="Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DebuggerEngineProvider" group="lookup" type="import" category="private" url="@org-netbeans-api-debugger@"/> Loads all debugger engine providers for specific DebuggerInfo.</li>
<li><api name="Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider" group="lookup" type="import" category="private" url="@org-netbeans-api-debugger@"/> Loads all delegating debugger engine providers for specific DebuggerInfo.</li>
<li><api name="Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.DebuggerEngineProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all debugger engine providers for specific Session.</li>
<li><api name="Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.DelegatingDebuggerEngineProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all delegating debugger engine providers for specific Session.</li>
<li><api name="Meta-inf-debugger-org.netbeans.api.debugger.LazyDebuggerManagerListener" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all debbugger manager listeners and adds them to DebuggerManager.getDebuggerManager () instance.</li>
<li><api name="Meta-inf-debugger-org.netbeans.spi.debugger.ActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all action providers for DebuggerManager context.</li>
<li><api name="Meta-inf-debugger-DebuggerEngine-ID-org.netbeans.spi.debugger.ActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all action providers for DebuggerEngine (language) context.</li>
<li><api name="Meta-inf-debugger-Session-ID-org.netbeans.spi.debugger.ActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all action providers for Session context.</li>
<li><api name="Meta-inf-debugger-DebuggerInfo-ID-org.netbeans.spi.debugger.ActionsProvider" group="lookup" type="import" category="private" url="@org-netbeans-api-debugger@"/> Loads all action providers for DebuggerInfo context.</li>
</ul>
Registrations in standard Lookup:
<ul>
<li><api name="org.netbeans.spi.debugger.ContextAwareService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all registered context-aware services from given folder.</li>
<li><api name="org.netbeans.spi.debugger.SessionProvider.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all session providers for specific DebuggerInfo.</li>
<li><api name="org.netbeans.spi.debugger.DebuggerEngineProvider.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all debugger engine providers for specific DebuggerInfo or Session.</li>
<li><api name="org.netbeans.api.debugger.LazyDebuggerManagerListener.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all debbugger manager listeners and adds them to DebuggerManager.getDebuggerManager () instance.</li>
<li><api name="org.netbeans.spi.debugger.ActionsProvider.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all action providers for context determined by it's path.</li>

<li><api name="netbeans.debugger.registration" group="property" type="import" category="private"/> Writes registration log to console.</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>
<h2>UseCase V. -
Implement Debugger Core UI module on top of Debugger Core API / SPI.</h2>
<span style="font-style: italic;">Debugger Core UI needs:<br/>
</span>
<ul>
  <li>List all breakpoint types and all breakpoint cathegories.</li>
  <li>Visually customize all breakpoints - some panel.</li>
  <li>Add / remove breakpoints.</li>
  <li>Add / remove watches.<br/>
  </li>
  <li>Represent breakpoints, threads, thread groups, watches, sessions,
call stack frames, locales, and fields as Nodes in NB Explorer View.</li>
  <li>List all threads, thread groups, locales, watches, breakpoints,
callstack frames, and fields.</li>
  <li>Listen on changes of hierarchy of threads, thread groups,
locales, watches, breakpoints, callstack frames, and fields.</li>
  <li>Some current context definition. Current contet should define
current session, language, thread, and call stack line.</li>
</ul>
<br/>

</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.4.
</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" url="http://openide.netbeans.org" 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 file.
</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">
    Yes. We search for debugger services registered on module layers
    (System FileSystem).
    In addition to that 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 services registered under <code>Debugger</code> folder in System FileSystem.
    In addition to that 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">
    No.
</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">
    Yes. We search for services registered through standard Lookup under
    <code>Debugger</code> folder or in our private namespace lookup
    under <code>META-INF/debugger</code>. The contract is described in Javadoc.
    In short: The registered file should contain a list of fully-qualified class
    names, one per line, of classes implementing the service interface and having
    default public constructor. It's also possible to append a name of
    a static method followed by paranthesis, which returns the implementation
    of the service. That method is then called instead of the default
    constructor. The method can not take any arguments.
    If there is a need to remove a service that is provided by some other
    module, append <code>'-hidden'</code> after the class or method name. Space
    and tab characters surrounding each name, as well as blank lines, are
    ignored. The comment character is <code>'#'</code>
</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">
    debuggercore/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 communication 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>
