<?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 module (Debugger Core UI) contains shared UI components for all debugger implementations, and defines some SPI
for sharing of them. 
</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">
List of APIs:
<ul>
<li><api name="DebuggerCoreUI-SPI" type="export" category="official" url="@org-netbeans-spi-debugger-ui@" group="java"/>Debugger core SPI.</li>

<li><api name="Meta-inf-debuggerorg.netbeans.spi.debugger.ui.BreakpointType" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/>New Breakpoint Dialog loads all breakpoint type definitions.</li>
<li><api name="Meta-inf-debuggerorg.netbeans.spi.debugger.ui.AttachType" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/>Attach to ... Dialog loads all attach type definitions.</li>

<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.ColumnModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>

<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debuggerDebuggerEngine-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProviderFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>

<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-Session-ID-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProviderFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>

<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.TreeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModel" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.TableModelFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProvider" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>
<li><api name="Meta-inf-debugger-DebuggerView-ID-org.netbeans.spi.viewmodel.NodeActionsProviderFilter" group="lookup" type="import" category="official" url="@org-netbeans-spi-viewmodel@"/>Debugger View loads all model definitions.</li>

<li><api name="netbeans.debugger.models" group="systemproperty" type="import" category="private"/>Writes information about loading of models to console.</li>
</ul>
Registrations in standard Lookup:
<ul>
<li><api name="org.netbeans.spi.debugger.ui.AttachType.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all attach type providers.</li>
<li><api name="org.netbeans.spi.debugger.ui.BreakpointType.ContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all breakpoint type providers.</li>
<li><api name="org.netbeans.modules.debugger.ui.registry.ColumnModelContextAware.createService" group="lookup" type="import" category="official" url="@org-netbeans-api-debugger@"/> Loads all column models registered for specific view (according to the path).</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"/> 
    <api name="ViewModel" type="import" category="official" group="java"/> 
    <api name="DebuggerCoreAPI" type="import" category="official" 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">
    Yes, files are created for menus, actions, shortcuts, templates, window system layout,
    settings storage - these are all in standard Open
    APIs.
</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">
    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">
    debuggercore 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 comunication 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. Context menu are rather stable once created. Enabling logic is simple.
</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>
