<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
  <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
]>

<api-answers
  question-version="1.24"
  author="tpavek@netbeans.org"
>

  &api-questions;


<!-- 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 form module (Form Editor) lets developers visually create forms with AWT,
Swing, and JavaBeans support. See <a href="http://form.netbeans.org/">form.netbeans.org</a>
for more information.<p>List of the main features:</p>
<ul>
  <li>Support for design of visual and non-visual forms.</li>
  <li>WYSIWYG designer with &quot;Test Form&quot; and &quot;Zoom Design
    View&quot; features.</li>
  <li>Support for Accessibility.</li>
  <li>Undo/redo capability for all operations.</li>
  <li>Extensible Component Palette with pre-installed Swing and AWT components.</li>
  <li>Component Inspector showing a components tree and properties.</li>
  <li>Automatic one-way code generation, fully customizable.</li>
  <li>Support for all AWT/Swing layout managers, including drag&amp;drop operations.</li>
  <li>GridBagLayout visual customizer.</li>
  <li>Support for null layout.</li>
  <li>In-place editing of text labels of components (labels, buttons, textfields,
    etc) in the designer.</li>
  <li>Full JavaBeans support -- installing, using and customizing beans; support
    for using bean properties,
    property editors, custom property editors, events and event handlers, bean
    customizers, etc.</li>
  <li>Visual beans customization -- ability to create a form from any JavaBean class.</li>
  <li>Connection Wizard for generating &quot;connection&quot; code for beans.</li>
</ul>
</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" shape="rect">
                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">
There are five main architecture blocks: form model and metadata, form designer,
code generator, persistence manager, and layout design support. None of these part
is pluggable. There is no public API for extensions by 3rd parties.
</answer>



<!-- 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. Follows JavaBeans standard for components
    used in designed forms.
</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>



<!-- 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">
    Runs on 1.4.x and 1.5.x.
</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 file for Swing beaninfos).
</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" group="java" type="import" category="official" url="http://openide.netbeans.org/"/> 
    <api name="JavaHierarchyAPI" group="java" type="import" category="official" url="http://www.netbeans.org/download/dev/javadoc/JavaHierarchyAPI/index.html"/>
    <api name="java-module" group="java" type="import" category="friend" url="http://java.netbeans.org/"/> 
</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">
    <api name="org.jdesktop.layout" group="java" type="import" category="third">
    Layout extensions library from Swing Labs project (<a href="https://swing-layout.dev.java.net/">https://swing-layout.dev.java.net</a>).
    </api>
</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>



<!-- 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">
<ul>
    <li>org-netbeans-modules-form.jar - standard module jar file</li>
    <li>AbsoluteLayout.jar - library containing AbsoluteLayout classes
    (custom layout manager)</li>
    <li>swing-layout.jar - library with layout extension classes (bundled binary
        build of java.net project https://swing-layout.dev.java.net/)</li>
</ul>
The library jars are placed in modules/ext, added automatically to user projects
when used, need to be distributed with the created application.
</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">
    All public packages are accessible, no restriction applied.
</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>



<!-- 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">
    Special classloader is used to load classes of user components in the form.
    <code>FormClassLoader</code> loads the classes either:
    <ul>
    <li>from user project classpath the form belongs to (default),</li>
    <li>from the system classloader (module),</li>
    <li>from both (allowing component class loaded from module to access resources
    in user project).</li>
    </ul>
    <p>For loading from the user project classpath, special classloader is used
    <code>(ProjectClassLoader)</code> which uses execution classpath of the project
    to load classes, but the source classpath for resources (preferentially)
    so it is possible to access resources without the need to compile/build the project first.</p>
    <p>For loading a class using the second or third style, the class name must
    be registered via layer as described in <a href="#layer-ClassLoadingTypes">ClassLoadingTypes</a>.</p>
</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-introspection

     <question id="exec-introspection">
            Does your module use any kind of runtime type informations (instanceof,
            work with java.lang.Class, 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">
    Form editor uses runtime introspection heavily. It is mainly required by the fact
    that form editor manages complex meta data structures (representing components) that
    must be presented via limited JavaBeans infrastructure and properties support in the IDE.
    The cases when an object is tested on various types are quite common, but not documented.
</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-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">
    <api type="export" group="systemproperty" name="netbeans.form.no_undo" category="private">
        Set to true, turns off the undo/redo capability. For debugging purposes only.
    </api>
    <api type="export" group="systemproperty" name="netbeans.form.use_idelaf" category="private">
        Set to true, turns off the strict usage of standard Look And Feel defaults
        (so then the same LAF settings as in the IDE are used for designed forms).
        Can be useful when designing forms to be used in the IDE. Also for
        debugging purposes.
    </api>
</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">
    Reflection is used for:
    <ul>
    <li>accessing <api name="java.awt.peer" group="java" type="import" category="private"/> private API - for setting own &quot;fake&quot; peers
    of designed heavyweight components (to avoid using native component peers in the IDE)</li>
    <li>obtaining information about beans' properties, events, methods etc.</li>
    <li>creation of instances of beans; reading/writing of beans' properties</li>
    <li>mapping between key chars (e.g. 'a') and key codes (<code>KeyEvent.VK_A</code>). See <code>KeyStrokeEditor</code>.</li>
    <li>implementation of scrollable popup menu. See <code>PaletteMenuView</code> and <code>ScrollPopupMenu</code>.</li>
    </ul>
</answer>



<!-- Question: format-clipboard

     <question id="format-clipboard">
            Which protocols your code reads/inserts when communicating with
            clipboard?
        </question>
-->
<answer id="format-clipboard">
    <ul>
    <li>custom DataFlavor type referencing own structures (for copy/cut/paste)</li>
    <li>
    <api name="InstanceCookie-paste" group="java" type="export" category="private">
    standard Open API's NodeTransfer.cookie for InstanceCookie (just for pasting)
    </api>
    </li>
    </ul>
</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">
    Form GUI data files are stored in .form files of custom XML format
    (DTD in /cvs/form/src/org/netbeans/modules/form/resources/forms.dtd).
    There is a version number stored in the .form file allowing to extend
    the format, keeping backward compatibility and avoiding data corruption.
    Form Editor is able to read current and older format versions, refuses
    to read newer versions.
</answer>



<!-- 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">
    Lookup.getDefault().lookup(java.awt.datatransfer.Clipboard.class) - to get
    standard Clipboard instance
</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">
    No.
</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>



<!-- Question: perf-exit

     <question id="perf-exit">
            Does your module executes anything on exit?
        </question>
-->
<answer id="perf-exit">
    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">
    The dialog showing custom property editors for given component property can be quite
    huge (depends on property type and available customizers for it). Most of these
    dialogs are not defined in Form Editor; as for the Form Editor itself, it has no
    huge or time-expensive dialogs requiring some optimization on initialization.
</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>form editor without forms: 1MB</li>
    <li>one opened form without components: 500KB</li>
    <li>one component in the form: 50KB</li>
    </ul>
</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-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">
    Opening a form can be quite long task; done whole in AWT event queue
    thread, making the IDE unresponsive all the time.
</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">
    Size of the .form data file and number of components influence
    opening time and editing responsiveness. Roughly, 100 components add
    5 sec to open time and 1 sec to edit/update time.
</answer>



<!-- Question: perf-startup

     <question id="perf-startup">
            Does your module executes anything on startup?
        </question>
-->
<answer id="perf-startup">
    Modifies (extends) property editor search path.
</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: 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">
    Yes, but only for external JAR files when installing beans from them.
</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, AbsoluteLayout.jar automount - these are all in standard Open
    APIs. For its own purpose, form editor uses the layer to define:
  <ul>
     <li>content of component palette,</li>
     <li>list of component classes that need to be loaded from IDE internally
         (from module, i.e. not from user projects as by default).</li>
  </ul>
</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">
    <p><api name="Palette" group="layer" type="export" category="friend">
    Content of the component palette is read from the layer. It is located in <code>FormDesignerPalette</code>
    folder with one level of subfolders serving as categories, and <code>.palette_item</code> files
    in the subfolders as items. The palette item file is a xml file defining the class,
    display name, icon, and origin of one component in the palette. See form module's layer
    file for examples.
    </api></p>
    <p><api name="ClassLoadingTypes" group="layer" type="export" category="private">
    Form editor loads component classes from user project classpath by default. If some
    classes are provided by a module (like special BeanInfo or property editors)
    they might need to be loaded by IDE system classloader instead. Such classes should be
    registered in a file placed under <code>org-netbeans-modules-form/classloader/system</code>
    folder (or <code>system_with_project</code> if the class needs to be able to
    access resources also on the project classpath). The file should be a plain text file listing
    the class names (or package patterns using usual * and ** notation), one name per line.
    See form module's layer file and <code>SystemClasses.txt</code> file for examples.
    </api></p>
</answer>


<!--
        <question id="arch-quality" when="init">
            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html" shape="rect">quality</a>
            of your code be tested and 
            how are future regressions going to be prevented?
            <hint>
            What kind of testing do
            you want to use? How much functionality, in which areas,
            should be covered by the tests? 
            </hint>
        </question>
-->
<answer id="arch-quality">
There are unit tests for the layout design subsystem. There is also bunch of functional test written by QA.
</answer>



<!--
        <question id="arch-time" when="init">
            What are the time estimates of the work?
            <hint>
            Please express your estimates of how long the design, implementation,
            stabilization are likely to last. How many people will be needed to
            implement this and what is the expected milestone by which the work should be 
            ready?
            </hint>
        </question>
-->
<answer id="arch-time">
N/A
</answer>



<!--
        <question id="arch-usecases" when="init">
            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase" shape="rect">
            use cases</a> of the new API. Who will use it under
            what circumstances? What kind of code would typically need to be written
            to use the module?
        </question>
-->
<answer id="arch-usecases">
E.g. i18n module provides a specialized property editor for String that allows to enter
an internationalized string taken from a .properties file.
<api type="export" group="java" name="org.netbeans.modules.form.FormPropertyEditorManager" category="private">
        allows to register property editors for given types to be used only in form editor (not in
        the whole IDE which is managed by the <code>java.beans.PropertyEditorManager</code>)
    </api>
</answer>



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



<!--
        <question id="exec-threading" when="impl">
            What threading models, if any, does your module adhere to?
            <hint>
                If your module calls foreign APIs which have a specific threading model,
                indicate how you comply with the requirements for multithreaded access
                (synchronization, mutexes, etc.) applicable to those APIs.
                If your module defines any APIs, or has complex internal structures
                that might be used from multiple threads, declare how you protect
                data against concurrent access, race conditions, deadlocks, etc.,
                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
                Examples: a class might be non-thread-safe (like Java Collections); might
                be fully thread-safe (internal locking); might require access through a mutex
                (and may or may not automatically acquire that mutex on behalf of a client method);
                might be able to run only in the event queue; etc.
                Also describe when any events are fired: synchronously, asynchronously, etc.
                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations" shape="rect">Threading Recommendations</a> (in progress)
            </hint>
        </question>
-->
<answer id="exec-threading">
Form editor classes are not thread safe. Whole form editor is designed as single-threaded app.
It is supposed to run in AWT thread only. Known entry points (e.g. actions) are checked for this.
</answer>



<!--
        <question id="perf-spi" when="init">
            How the performance of the plugged in code will be enforced?
            <hint>
            If you allow foreign code to be plugged into your own module, how
            do you enforce that it will behave correctly and quickly and will not
            negatively influence the performance of your own module?
            </hint>
        </question>
-->
<answer id="perf-spi">
Form editor calls constructor and property getter/setter methods of edited beans.
There's in no way ensured these beans behaves correctly in performance point of view.
</answer>



<!--
        <question id="security-grant" when="final">
            Does your code grant addition rights to some code?
            <hint>Avoid using a classloder that adds some extra
            permissions to loaded code unless realy necessary.
            Also note that your API implementation
            can also expose unneeded permissions to enemy code by
            AccessController.doPrilileged() calls.</hint>
        </question>
-->
<answer id="security-grant">
Property change notification comming from (external) bean customizers are given privileged access.
</answer>



<!--
        <question id="security-policy" when="final">
            Does your functionality require standard policy file modification?
            <hint>Your code may pass control to third party code not
            coming from trusted domain. It covers code downloaded over
            network or code coming from libraries that are not bundled
            with NetBeans. Which permissions it needs to grant to which domain?</hint>
        </question>
-->
<answer id="security-policy">
No.
</answer>

</api-answers>
