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

  &api-questions;


<!--

     <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">
Nodes API serves as the main aparatus for visualisation of objects
in NetBeans. Nodes augment objects with standard aspects used for
visualisation (e.g. name, displayName, icons, set of proerties, 
subnodes hierarchy, etc.) Once a Node is defined for given object
it can be visualised using diferent views e.g. trees, lists, tables etc.
Descripion of nodes can be found  
<a href="@TOP@/org/openide/nodes/doc-files/api.html">here</a>.
</answer>

<answer id="arch-usecases">
    
  <p>
     <a onclick="target='_blank'" href="https://leanpub.com/nbp4beginners">
     <img src="http://wiki.apidesign.org/images/0/03/NetBeansPlatformForBeginners.jpg"
        style="float: right"
          width="60" height="70" alt="Cover of NetBeans Platform for Beginners book"/>
     </a>
    For general overview of the concepts related to nodes and <a href="@org-openide-explorer@/overview-summary.html">explorers</a>, 
    together with code samples, see chapter 7, 
    of <a onclick="target='_blank'" href="https://leanpub.com/nbp4beginners">NetBeans Platform for Beginners</a> 
    by Jason Wexbridge and Walter Nyland.
  </p>
</answer>

<!--
        
     <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 id="compat-standards">
            Does the module implement or define any standards? Is the 
            implementation exact or does it deviate somehow?
        </question>
-->
<answer id="compat-standards">
Defines and implements NetBeans NodesAPI.
</answer>



<!--
        
     <question id="compat-version">
            Can your module coexist with earlier and future
            versions? Can you correctly read all old settings? Will future
            versions be able to read your current settings? Can you read
            or politely ignore settings stored by a future version?
            
            <hint>
            Very helpful for reading settings is to store version number
            there, so future versions can decide whether how to read/convert
            the settings and older versions can ignore the new ones.
            </hint>
        </question>
-->
<answer id="compat-version">
Nodes API itself does not use any kind of settings. Displayed nodes are 
persisted using serialization by default, but this can be changed
by developers by providing own persistence mechanism.
</answer>



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



<!--
        
     <question id="dep-jrejdk">
            Do you require the JDK or is the JRE enough?
        </question>
-->
<answer id="dep-jrejdk">
JRE
</answer>



<!--
        
     <question id="dep-nb">
            What other NetBeans projects does this one depend 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="UtilitiesAPI" group="java" type="import" category="official" url="@org-openide-util@/org/openide/util/doc-files/api.html"/>
</answer>



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



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



<!--
        
     <question id="deploy-jar">
            Do you deploy just module JAR file(s) or other files as well?
            <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">
The API portion is inside <samp>openide.jar</samp>
</answer>



<!--
        
     <question id="deploy-nbm">
            Can you deploy an NBM via the Update Center?
            <hint>
            If not why?
            </hint>
        </question>
-->
<answer id="deploy-nbm">
Yes (as part of <samp>openide.nbm</samp> and <samp>core.nbm</samp>).
</answer>



<!--
        
     <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">
<api name="NodesAPI" group="java" type="export" category="official" url="@TOP@/org/openide/nodes/doc-files/api.html"/>
is a public package.
</answer>



<!--
        
     <question id="deploy-shared">
            Do you need to be installed in the shared location only, or in the user directory only,
            or can your module be installed anywhere?
            <hint>
            Installation location shall not matter, if it does explain why.
            Consider also whether <code>InstalledFileLocator</code> can help.
            </hint>
        </question>
-->
<answer id="deploy-shared">
Must be installed in the shared location as it is part of the very core of NetBeans.
</answer>



<!--
        
     <question id="exec-classloader">
            Does your code create its own class loader(s)?
            <hint>
            A bit unusual. Please explain why and what for.
            </hint>
        </question>
-->
<answer id="exec-classloader">
No
</answer>



<!--
        
     <question id="exec-component">
            Is execution of your code influenced by any (string) property
            of any of your components?
            
            <hint>
            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
            a 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">
<a href="@TOP@/org/openide/nodes/BeanNode.html">BeanNode</a> 
which serves for default visualisation of JavaBeans uses the
"helpID", "propertiesHelpID" and "expertHelpID" form BeanDescriptor of given bean.
to link with help files.

<api type="import" group="property" name="helpID" category="official">For providing help sets for JavaBeans</api>
<api type="export" group="property" name="propertiesHelpID" category="stable">For providing help sets for JavaBeans proerties</api>
<api type="export" group="property" name="expertHelpID" category="stable">For providing help sets for JavaBeans properties</api>

</answer>



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



<!--
        
     <question id="exec-property">
            Is execution of your code influenced by any environment or
            Java system (<code>System.getProperty</code>) property?
            
            <hint>
            If there is a property that can change the 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 id="exec-reflection">
            Does your code use Java Reflection to execute 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">
<p><a href="@TOP@/org/openide/nodes/BeanNode.html">BeanNode</a>
obviously depends on reflection to get values of beans
properties, which shouldn't be considered lack of API. Same 
applyies to 
<a href="@TOP@/org/openide/nodes/PropertySupport.html">PropertySupport</a> and 
<a href="@TOP@/org/openide/nodes/IndexedPropertySupport.html">IndexedPropertySupport.</a></p>
<api name="ProjectManagerMutex" group="java" type="import" category="private">
<p>A test in <a href="@TOP@/org/openide/nodes/Children.html">Children</a> checks that
<code>org.netbeans.api.project.ProjectManager.mutex()</code> is not held by the current
thread when acquiring <a href="@TOP@/org/openide/nodes/Children.html#MUTEX">Children.MUTEX</a>.
Since this module cannot depend on the module providing <code>ProjectManager</code>,
the test uses reflection to retrieve the <code>ProjectManager.mutex()</code> instance.</p></api>
</answer>



<!--
        
     <question id="format-clipboard">
            Which data flavors (if any) does your code read from or insert to
            the clipboard?
        </question>
-->
<answer id="format-clipboard">
Nodes provide default implementation of clipboard operations on nodes. This
can be extendeded by specific implementation of nodes by overloading:
<a href="@TOP@/org/openide/nodes/Node.html#clipboardCopy--">Node.clipboardCopy()</a>, 
<a href="@TOP@/org/openide/nodes/Node.html#clipboardCut--">Node.cliboardCut()</a>, 
<a href="@TOP@/org/openide/nodes/Node.html#getPasteTypes-java.awt.datatransfer.Transferable-">Node.getPasteTypes()</a>
Default Transferables for nodes can be obtained using.
<a href="@TOP@/org/openide/nodes/NodeTransfer.html">NodeTransfer</a> class

<p>
<a href="@TOP@/org/openide/nodes/IndexedCustomizer.html">IndexedCustomizer</a> 
provides own DataFlavor transfering indices.
</p>
</answer>



<!--
        
     <question id="format-dnd">
            Which protocols (if any) does your code understand during Drag &amp; Drop?
        </question>
-->
<answer id="format-dnd">
Nodes provide default implementation of d'n'd operations on nodes. This
can be extendeded by specific implementation of nodes by overloading:
<a href="@TOP@/org/openide/nodes/Node.html#drag--">Node.drag()</a>
<a href="@TOP@/org/openide/nodes/Node.html#getDropType-java.awt.datatransfer.Transferable-int-int-">Node.getDropTye()</a>

Default Transferables for nodes can be obtained using.
<a href="@TOP@/org/openide/nodes/NodeTransfer.html">NodeTransfer</a> class
The 
<a href="@TOP@/org/openide/nodes/NodeTransfer.Paste.html">NodeTransfer.Paste</a> 
interface serves as an intelligent source of paste types for a target node. 
</answer>



<!--
        
     <question id="format-types">
            Which file formats (if any) does your code read or write on disk?
        </question>
-->
<answer id="format-types">
None
</answer>



<!--
        
     <question id="lookup-lookup">
            Does your module use <code>org.openide.util.Lookup</code>
            to find any components to communicate with? Which ones?
            
            <hint>
            Please describe the interfaces you are searching for, where 
            are defined, whether you are searching for just one or more of them,
            if the order is important, etc. Also clasify the stability of such
            API contract.
            </hint>
        </question>
-->
<answer id="lookup-lookup">
Nodes use lookup to communicate with other components. Each node
contains own lookup wich is used for augmenting nodes with extended
functionality and data. Nodes do not depend on content of other Lookups.
</answer>



<!--
        
     <question id="lookup-register">
            Do you register anything into lookup for other code to find?
            <hint>
            Do you register using layer file or using <code>META-INF/services</code>?
            Who is supposed to find your component?
            </hint>
        </question>
-->
<answer id="lookup-register">
No
</answer>



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



<!--
        
     <question id="perf-exit">
            Does your module run any code on exit?
        </question>
-->
<answer id="perf-exit">
Not directly. State of nodes can be serialized as result of 
window system serialization.
</answer>



<!--
        
     <question id="perf-huge_dialogs">
            Does your module contain any dialogs or wizards with a large number of
            GUI controls such as combo boxes, lists, trees, or text areas?
        </question>
-->
<answer id="perf-huge_dialogs">
No
</answer>



<!--
        
     <question id="perf-limit">
            Are there any hardcoded or practical limits in the number or size of
            elements your code can handle?
        </question>
-->
<answer id="perf-limit">
All nodes are held in memory during the IDE runtime, there is no
swap/cache mechanism for nodes.
</answer>



<!--
        
     <question id="perf-mem">
            How much memory does your component consume? Estimate
            with a relation to the number of windows, etc.
        </question>
-->
<answer id="perf-mem">
Fully initialized node can contain relatively big amount of 
other objects e.g. objects in lookups, properties, etc. Depending on
th Node's subclass.
</answer>



<!--
        
     <question id="perf-menus">
            Does your module use dynamically updated context menus, or
            context-sensitive actions with complicated enablement logic?
        </question>
-->
<answer id="perf-menus">
No
</answer>



<!--
        
     <question id="perf-progress">
            Does your module execute any long-running tasks?
            <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 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">
Number of visiualized objects and complexity of the visualised 
objects.
</answer>



<!--
        
     <question id="perf-startup">
            Does your module run any code on startup?
        </question>
-->
<answer id="perf-startup">
No
</answer>



<!--
        
     <question id="perf-wakeup">
            Does any piece of your code wake up periodically and do something
            even when the system is otherwise idle (no user interaction)?
        </question>
-->
<answer id="perf-wakeup">
No
</answer>



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



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



<!--
        
     <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>

<!--
        <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">
Yes. 
<ul>
<li>instanceof: 37 occurences</li>
<li>isAssgnableFrom: 5 occurences</li>
<li>isInstance: 3 occurences</li>
</ul>
</answer>



<!--
        <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>


</api-answers>



