Files imported from main/misc/uml/arch as of bcb2d4252a6a.
authorJesse Glick <jglick@netbeans.org>
Wed, 28 Jul 2010 15:59:34 -0400
changeset 1f962920d7da3
parent 0 054eeee980fe
child 2 fb8cf3b4616b
Files imported from main/misc/uml/arch as of bcb2d4252a6a.
arch/arch-modeling-core.xml
arch/modeling-core.html
arch/modeling-wsarc-questionnaire.html
arch/uml-arc.png
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/arch/arch-modeling-core.xml	Wed Jul 28 15:59:34 2010 -0400
     1.3 @@ -0,0 +1,1189 @@
     1.4 +<?xml version="1.0" encoding="UTF-8"?>
     1.5 +
     1.6 +<!--
     1.7 +DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
     1.8 +
     1.9 +Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
    1.10 +
    1.11 +The contents of this file are subject to the terms of either the GNU
    1.12 +General Public License Version 2 only ("GPL") or the Common
    1.13 +Development and Distribution License("CDDL") (collectively, the
    1.14 +"License"). You may not use this file except in compliance with the
    1.15 +License. You can obtain a copy of the License at
    1.16 +http://www.netbeans.org/cddl-gplv2.html
    1.17 +or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
    1.18 +specific language governing permissions and limitations under the
    1.19 +License.  When distributing the software, include this License Header
    1.20 +Notice in each file and include the License file at
    1.21 +nbbuild/licenses/CDDL-GPL-2-CP.  Sun designates this
    1.22 +particular file as subject to the "Classpath" exception as provided
    1.23 +by Sun in the GPL Version 2 section of the License file that
    1.24 +accompanied this code. If applicable, add the following below the
    1.25 +License Header, with the fields enclosed by brackets [] replaced by
    1.26 +your own identifying information:
    1.27 +"Portions Copyrighted [year] [name of copyright owner]"
    1.28 +
    1.29 +Contributor(s):
    1.30 +
    1.31 +The Original Software is NetBeans. The Initial Developer of the Original
    1.32 +Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
    1.33 +Microsystems, Inc. All Rights Reserved.
    1.34 +
    1.35 +If you wish your version of this file to be governed by only the CDDL
    1.36 +or only the GPL Version 2, indicate your decision by adding
    1.37 +"[Contributor] elects to include this software in this distribution
    1.38 +under the [CDDL or GPL Version 2] license." If you do not indicate a
    1.39 +single choice of license, a recipient has the option to distribute
    1.40 +your version of this file under either the CDDL, the GPL Version 2 or
    1.41 +to extend the choice of license to its licensees as provided above.
    1.42 +However, if you add GPL Version 2 code and therefore, elected the GPL
    1.43 +Version 2 license, then the option applies only if the new code is
    1.44 +made subject to such option by the copyright holder.
    1.45 +-->
    1.46 +
    1.47 +<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
    1.48 +  <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
    1.49 +]>
    1.50 +
    1.51 +<api-answers
    1.52 +  question-version="1.25"
    1.53 +  module="UML Modeling Core"
    1.54 +  author="trey.spiva@sun.com"
    1.55 +>
    1.56 +
    1.57 +  &api-questions;
    1.58 +
    1.59 +
    1.60 +<!--
    1.61 +        <question id="arch-overall" when="init">
    1.62 +            Describe the overall architecture.
    1.63 +            <hint>
    1.64 +            What will be API for 
    1.65 +            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
    1.66 +                clients and what support API</a>? 
    1.67 +            What parts will be pluggable?
    1.68 +            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
    1.69 +            to describe your general APIs.
    1.70 +            If possible please provide 
    1.71 +            simple diagrams. 
    1.72 +            </hint>
    1.73 +        </question>
    1.74 +-->
    1.75 + <answer id="arch-overall">
    1.76 +   The UML project is really a modeling project.  One of the things (and currently the only thing) that we can model is UML.  The tool is broken up into three areas Core, Language Framework, and UI. <br/>
    1.77 +   <br/>
    1.78 +   <h3>Modeling Core</h3>The Core contains the meta data layer, workspace management, event framework, preference framework, type management, generative framework, and a add-in framework.  Below is a brief description to each of the components for the tool.  When reading the descriptions keep in mind that the UML tool was originally designed as an application that can be embedded into other application shells. So, some of the components listed are duplicates of NetBeans components. <br/>
    1.79 +   <ul><li><strong>Meta Data Layer</strong></li></ul>
    1.80 +   <blockquote><p>The meta data layer is based on the UML specification.  Our data for the most part follows the UML specification.  The interesting thing about UML 2.0 is that the architects of UML 2.0 also designed MOF 2.0.  So at this point UML 2.0 is a super set of MOF 2.0.  When ever a meta data element has a value changed the event framework is used to notify listeners of the change.  The only business rules that the meta data layer applies are to force the correct structure data structure.  The applications business rules are applied by other components in response to events sent out when a model element is about to be modified.  We call these events pre events.  For example when the name of a class model element is changed a name change event is sent and round trip listens for name change events and verify that the name is a valid identifier for the languages associated with the model element.</p></blockquote>
    1.81 +   <ul><li><strong>Workspace Management</strong></li></ul>
    1.82 +
    1.83 +   <blockquote><p>Describe was design be able to have multiple UML projects open at the same time.  The job of the workspace management component was to manage the projects that are open.  NetBeans 4.x  has its own workspace management facilities.  In Coke we will probably no longer have a dependency on this component.</p></blockquote><ul><li><strong>Event Framework</strong></li></ul>
    1.84 +   <blockquote><p>The event framework is a component that does not have any dependencies to the rest of the application.  However most of the rest of the tool has dependencies on the EventFramework  We did not use the Java Bean event mechanisms, instead we used more of an event bus mechanism.  The event mechanism is broken into event dispatchers, and event listeners.  The event dispatchers are used to register listeners for events and to send events to all registered listeners.  There is a number of different types of dispatchers in the tool (for example ElementChangeEventDispatcher, AddinEventDispatcher, ElementLifeTimeEventDispatcher etc)  and any component can create a new event dispatcher.  The component that would like to register for an event retrieves the dispatcher and registers for the event.  
    1.85 +
    1.86 +    The big difference between our event mechanism and the JavaBeans event mechanism is that you do not have to wait for a component to be created before registering for the events.  For example with the JavaBean event mechanism you have to have an instance of the bean that you wish to register with.  So, if you want to receive notification from all class elements in the system you have to first register for an event to notify you when a class comes into memory, register for the event with the class and then  you are able to receive events. 
    1.87 +
    1.88 +	 With the event bus concept the component retrieves the event dispatchers when the component is created, registers for the event and waits.  Whenever something any class changes the registered listener will be notified.</p></blockquote>
    1.89 +    <ul><li><strong>Preference Framework</strong></li></ul>
    1.90 +   <blockquote><p>Again Describe was designed to be an application that could be embedded into many shells.  As such we have our own preference framework.  We may want to start using the NetBeans preference mechanism in the future.</p></blockquote>
    1.91 +   
    1.92 +   <ul><li><strong>Type Management</strong></li></ul>
    1.93 +   <blockquote><p>Type management is used to quickly find type in the system.  Type management is also the component that makes version control possible.  When  model element is versioned we remove the model element information from the project and replace it with a stub.  The removed information is then gets stored into its own file (.ext) that can be version controlled.  When a versioned model element is referenced the Type Management component make sure that the information in the version controlled file is read in to memory and replaces the stub with the information in the version control  file.  In this way we are able to lazy load information.</p></blockquote>
    1.94 +   
    1.95 +   <ul><li><strong>Generative Framework</strong></li></ul>
    1.96 +   <blockquote><p>The generative framework is used to format data.  Basically we are able to use scripts to format information.  The scripts are used to format the information in the diagram, project tree,  and property editor.  In the C++ version of  Describe the generative framework was also used to generate code.</p></blockquote>
    1.97 +   
    1.98 +   <ul><li><strong>Add-In Framework</strong></li></ul>
    1.99 +   <blockquote><p>Again since Describe was designed to embed into different shell we also developed our own add in framework. </p></blockquote><br/>
   1.100 +
   1.101 +   <br/>
   1.102 +   <h3>Langauge Facility</h3>The language facility supplies the language processing of the modeling tool.  The modeling tool was design to maximize the reuse of the components across languages.  In the modeling domain when we use the term language we are talking about anything that can be generated.  It could be used to generate a source file, XML or a StarOffice document the framework does not care.  The language facility contains the parsers, reverse engineering, method body reverse engineering, round trip framework, and code generation.&lt;/blockquote&gt;[&lt;/html&gt;]
   1.103 +   <ul><li><strong>Language Parsers</strong></li></ul>
   1.104 +   <blockquote><p>The parsers that we use in the UML tool generate events.  The events are structured using UML syntax (actually they are XMI fragments).  Because we use UML as our event syntax all parser listeners are able to be language agnostic because the structure of the event will look the same if the language is Java, C++, C#, VB, JSP, etc.</p></blockquote><ul><li><strong>Reverse Engineering</strong></li></ul>
   1.105 +   <blockquote><p>Takes the parser information and integrates the information into a modeling project. The modeling project can be a new project or an existing project.  Note that there is only one Reverse Engineering component that can handle all of the languages.  Basically it is language agnostic. </p></blockquote> <ul><li><strong>Method Body Reverse Engineering</strong></li></ul>
   1.106 +   <blockquote><p>Takes the parser information and integrates the information into the modeling project by creating an interaction (Sequence Diagram, or Collaboration Diagram) that represents the parser information.  Note that there is only one Method Body Reverse Engineering component that supports all of the languages.</p></blockquote><ul><li><strong>Round Trip</strong></li></ul>
   1.107 +
   1.108 +   <blockquote><p>Round trip has two purposes in life: one enforce business rules that apply to languages, two notify the code generation that something changed that affect the associated source file artifacts.  Round trip registers for many of the events that can be issued from the meta data, validates the data and applies business rules.  After the data changes have been applied round trip sends an event via the RoundTripEventDispatcher to notify listeners that the source file artifact may need to be updated.  Round trip is not actually responsible for generating any code.  Code generation is the responsibility of the round trip listeners.
   1.109 +
   1.110 +   To apply the business rules for a language round trip uses a component called a request process to apply the rules.  Each supported language supplies a request processor.  So the request processor is not language agnostic, however round trip (which only manages the request processors) is language agnostic.  A configuration file is used to determine the request processor to use for a specific language.
   1.111 +
   1.112 +   Round trip was designed to allow multiple languages to be associated with one model element.  So a model element can be associated with Java, and WSDL and the code can be generated for each language.  When the model element is changed the code will be generated for both languages without any interaction by the user. </p></blockquote><ul><li><strong>Code Generation</strong></li></ul>
   1.113 +   <blockquote><p>Code generation (you guessed it) is used to generate code.  In Java Studio Enterprise the Java code generator uses the NetBeans API to generate code.  However, that does not have to be the case.  As mentioned earlier the C++ version of Describe the code generation module to use the generative framework to generate code.
   1.114 +
   1.115 +   The code generation component is registered as a round trip listener for a specific language.  Therefore the Java code generation component only recieves events when a Java source artifact is associated with a model element that has been modified.  When something occurs in the model that affects a source artifact the code generation component is notified via round trip events.  The code generation module then updates the source file. </p></blockquote><br/>
   1.116 +   <br/>
   1.117 +   <h3>Modeling User Interface</h3>The interfaces provides many visual components to allow the user to interact with a model.  Below is a description of the user interfaces components.<ul><li><strong>Drawing Area</strong></li></ul>
   1.118 +   <blockquote><p>The drawing area component is used to render the diagrams  The drawing area control wrapes the <a href="./Wiki?Tom+Sawyer+Libraries">Tom Sawyer</a> components. The drawing area control is a generic control that can be used to when developing any modeling diagram.  Even though the UML product has multiple diagram types there is only one drawing area control for all the diagrams. 
   1.119 +   <br/><br/>
   1.120 +   <i>INSERT A DIAGRAM HERE</i>
   1.121 +
   1.122 +   </p></blockquote><br/>
   1.123 +    <ul><li><strong>Property Elements/Property Definitions</strong></li></ul>
   1.124 +   The modeling tool has a concept of property elements and property definitions.  Property definitions a basically a meta language that can be used to describe the structure of properties.  The property definitions specify the details of a property.  The property definition fields are listed below.
   1.125 +   
   1.126 +   <br/><br/>
   1.127 +   Property elements is an instance of the property defintions. The property elements contain the properties data and a pointer to the property definitions that specifies the property elements rules.
   1.128 +
   1.129 +   The property elements and property definitions are defined as interfaces so there are unlimited posibilities of how to load up the property elements data and how to build the property defintion tree.
   1.130 +   <br/><br/>
   1.131 +   The modeling tool supplies one implementation of the property elements and property defintions that can be built a runtime based on an XML files.  The propety definition file specifies the structure of the property definitions and the property element file specifies all the informtion that is needed to set and retrieve the property data.  Reflection is used to set and retrieve the property data.
   1.132 +   
   1.133 +   
   1.134 +   <ul><li><strong>Propertery Editor</strong></li></ul>
   1.135 +   <blockquote><p>The property editor is a generic property editor that uses the property elements/property definitions mentioned above to build property data.  Since the property definitions can contain children the property editor was design to display properties in a tree structure.	</p></blockquote><ul><li><strong>Project Tree</strong></li></ul>
   1.136 +   <ul><li><strong>Preferences Editor</strong></li></ul>
   1.137 +   * <strong>Edit Control</strong><br/>
   1.138 +   <br/>
   1.139 +
   1.140 +   <ul><li><strong>Documentation Pane</strong></li></ul>
   1.141 +   <p/>
   1.142 + </answer>
   1.143 +
   1.144 +
   1.145 +
   1.146 +<!--
   1.147 +        <question id="arch-quality" when="init">
   1.148 +            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
   1.149 +            of your code be tested and 
   1.150 +            how are future regressions going to be prevented?
   1.151 +            <hint>
   1.152 +            What kind of testing do
   1.153 +            you want to use? How much functionality, in which areas,
   1.154 +            should be covered by the tests? 
   1.155 +            </hint>
   1.156 +        </question>
   1.157 +-->
   1.158 + <answer id="arch-quality">
   1.159 +  <p>
   1.160 +   We have a few hundred JUnit test that we currently run during our release 
   1.161 +   engineering process.  As we move forward we will be building more JUNIT test
   1.162 +   that will be executed.  
   1.163 +   
   1.164 +   Our quality assurance team is in the process of building suite of automated 
   1.165 +   test modules to test the UI components.  We have also instructed the quality 
   1.166 +   assurance team that once the UI test are completed that when a new is written 
   1.167 +   we also want a automated test that engineering can run to replicate the problem.
   1.168 +   By having our quality assurance team assist in the automated test genreation 
   1.169 +   we will be able to have a high rate of successfully replicating issues as
   1.170 +   well as have a higher number of automated test.
   1.171 +  </p>
   1.172 + </answer>
   1.173 +
   1.174 +
   1.175 +
   1.176 +<!--
   1.177 +        <question id="arch-time" when="init">
   1.178 +            What are the time estimates of the work?
   1.179 +            <hint>
   1.180 +            Please express your estimates of how long the design, implementation,
   1.181 +            stabilization are likely to last. How many people will be needed to
   1.182 +            implement this and what is the expected milestone by which the work should be 
   1.183 +            ready?
   1.184 +            </hint>
   1.185 +        </question>
   1.186 +-->
   1.187 + <answer id="arch-time">
   1.188 +  <p>
   1.189 +   The modeling module will be released in the BUZZ time frame.
   1.190 +  </p>
   1.191 + </answer>
   1.192 +
   1.193 +
   1.194 +
   1.195 +<!--
   1.196 +        <question id="arch-usecases" when="init">
   1.197 +            <hint>
   1.198 +                Content of this answer will be displayed as part of page at
   1.199 +                http://www.netbeans.org/download/dev/javadoc/usecases.html 
   1.200 +                You can use tags &lt;usecase name="name&gt; regular html description &lt;/usecase&gt;
   1.201 +                and if you want to use an URL you can prefix if with @TOP@ to begin
   1.202 +                at the root of your javadoc
   1.203 +            </hint>
   1.204 +        
   1.205 +            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
   1.206 +            use cases</a> of the new API. Who will use it under
   1.207 +            what circumstances? What kind of code would typically need to be written
   1.208 +            to use the module?
   1.209 +        </question>
   1.210 +-->
   1.211 + <answer id="arch-usecases">
   1.212 +  <p>
   1.213 +   Fill in at a later time.  
   1.214 +  </p>
   1.215 + </answer>
   1.216 +
   1.217 +
   1.218 +
   1.219 +<!--
   1.220 +        <question id="arch-what" when="init">
   1.221 +            What is this project good for?
   1.222 +            <hint>
   1.223 +            Please provide here a few lines describing the project, 
   1.224 +            what problem it should solve, provide links to documentation, 
   1.225 +            specifications, etc.
   1.226 +            </hint>
   1.227 +        </question>
   1.228 +-->
   1.229 + <answer id="arch-what">
   1.230 +  <p>
   1.231 +   This project is a core module for the modeling tool.
   1.232 +  </p>
   1.233 + </answer>
   1.234 +
   1.235 +
   1.236 +
   1.237 +<!--
   1.238 +        <question id="compat-i18n" when="impl">
   1.239 +            Is your module correctly internationalized?
   1.240 +            <hint>
   1.241 +            Correct internationalization means that it obeys instructions 
   1.242 +            at <a href="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/i18n-branding.html">
   1.243 +            NetBeans I18N pages</a>.
   1.244 +            </hint>
   1.245 +        </question>
   1.246 +-->
   1.247 + <answer id="compat-i18n">
   1.248 +  <p>
   1.249 +   Yes
   1.250 +  </p>
   1.251 + </answer>
   1.252 +
   1.253 +
   1.254 +
   1.255 +<!--
   1.256 +        <question id="compat-standards" when="init">
   1.257 +            Does the module implement or define any standards? Is the 
   1.258 +            implementation exact or does it deviate somehow?
   1.259 +        </question>
   1.260 +-->
   1.261 + <answer id="compat-standards">
   1.262 +  <p>
   1.263 +   The module implements the MOF 2.0/UML 2.0 as of the Jan 2003 version of the 
   1.264 +   OMG specification.
   1.265 +  </p>
   1.266 + </answer>
   1.267 +
   1.268 +
   1.269 +
   1.270 +<!--
   1.271 +        <question id="compat-version" when="impl">
   1.272 +            Can your module coexist with earlier and future
   1.273 +            versions of itself? Can you correctly read all old settings? Will future
   1.274 +            versions be able to read your current settings? Can you read
   1.275 +            or politely ignore settings stored by a future version?
   1.276 +            
   1.277 +            <hint>
   1.278 +            Very helpful for reading settings is to store version number
   1.279 +            there, so future versions can decide whether how to read/convert
   1.280 +            the settings and older versions can ignore the new ones.
   1.281 +            </hint>
   1.282 +        </question>
   1.283 +-->
   1.284 + <answer id="compat-version">
   1.285 +  <p>
   1.286 +   This version will be compatable with the previous version of the modeling
   1.287 +   product.  In the future we will be moving our configration file into the 
   1.288 +   NetBeans layer mechanism.
   1.289 +  </p>
   1.290 + </answer>
   1.291 +
   1.292 +
   1.293 +
   1.294 +<!--
   1.295 +        <question id="dep-jre" when="final">
   1.296 +            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
   1.297 +            <hint>
   1.298 +            It is expected that if your module runs on 1.x that it will run 
   1.299 +            on 1.x+1 if no, state that please. Also describe here cases where
   1.300 +            you run different code on different versions of JRE and why.
   1.301 +            </hint>
   1.302 +        </question>
   1.303 +-->
   1.304 + <answer id="dep-jre">
   1.305 +  <p>
   1.306 +   JRE 1.5
   1.307 +  </p>
   1.308 + </answer>
   1.309 +
   1.310 +
   1.311 +
   1.312 +<!--
   1.313 +        <question id="dep-jrejdk" when="final">
   1.314 +            Do you require the JDK or is the JRE enough?
   1.315 +        </question>
   1.316 +-->
   1.317 + <answer id="dep-jrejdk">
   1.318 +  <p>
   1.319 +   The JRE is enough.
   1.320 +  </p>
   1.321 + </answer>
   1.322 +
   1.323 +
   1.324 +
   1.325 +<!--
   1.326 +        <question id="dep-nb" when="init">
   1.327 +            What other NetBeans projects and modules does this one depend on?
   1.328 +            <hint>
   1.329 +            If you want, describe such projects as imported APIs using
   1.330 +            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
   1.331 +            </hint>
   1.332 +        </question>
   1.333 +-->
   1.334 + <answer id="dep-nb">
   1.335 +   It uses various kinds of API's:
   1.336 +   <ul>
   1.337 +   <li>
   1.338 +       <api 
   1.339 +           name="OpenIDE"
   1.340 +           group="java"
   1.341 +           type="import"
   1.342 +           category="official"
   1.343 +           url="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/index.html"
   1.344 +       />
   1.345 +       The support class various NetBeans classes.
   1.346 +   </li>
   1.347 +   <li>
   1.348 +       <api 
   1.349 +           name="Loaders"
   1.350 +           group="java"
   1.351 +           type="import"
   1.352 +           category="official"
   1.353 +           url="http://www.netbeans.org/download/dev/javadoc/LoadersAPI/index.html"
   1.354 +       />
   1.355 +       Provides the <code>DataObject</code> implementation
   1.356 +   </li>
   1.357 +   <li>
   1.358 +       <api 
   1.359 +           name="projectapi"
   1.360 +           group="java"
   1.361 +           type="import"
   1.362 +           category="official"
   1.363 +           url="http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html"
   1.364 +       />
   1.365 +       Provides the NetBeans project API.
   1.366 +   </li>
   1.367 +   <li>
   1.368 +       <api 
   1.369 +           name="ant-project"
   1.370 +           group="java"
   1.371 +           type="import"
   1.372 +           category="official"
   1.373 +           url="http://www.netbeans.org/download/dev/javadoc/AntProjectAPI/index.html"
   1.374 +       />
   1.375 +       Provides the Ant project suppport.
   1.376 +   </li>
   1.377 +   <li>
   1.378 +       <api 
   1.379 +           name="projectapi"
   1.380 +           group="java"
   1.381 +           type="import"
   1.382 +           category="official"
   1.383 +           url="http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html"
   1.384 +       />
   1.385 +       Provides the project chooser, and customizer support.
   1.386 +   </li>
   1.387 +   <li>
   1.388 +       <api 
   1.389 +           name="projectuiapi"
   1.390 +           group="java"
   1.391 +           type="import"
   1.392 +           category="official"
   1.393 +           url="http://www.netbeans.org/download/dev/javadoc/ProjectUIAPI/index.html"
   1.394 +       />
   1.395 +       E.g. <code>Debug</code> uses <code>InputOutput</code>.
   1.396 +   </li>
   1.397 +   </ul>
   1.398 + </answer>
   1.399 +
   1.400 +
   1.401 +
   1.402 +<!--
   1.403 +        <question id="dep-non-nb" when="init">
   1.404 +            What other projects outside NetBeans does this one depend on?
   1.405 +            
   1.406 +            <hint>
   1.407 +            Some non-NetBeans projects are packaged as NetBeans modules
   1.408 +            (see <a href="http://libs.netbeans.org/">libraries</a>) and
   1.409 +            it is preferred to use this approach when more modules may
   1.410 +            depend on such third-party library.
   1.411 +            </hint>
   1.412 +        </question>
   1.413 +-->
   1.414 + <answer id="dep-non-nb">
   1.415 +  <p>
   1.416 +   Antlr 2.7.2 <br/>
   1.417 +   Tom Sawyer version 6.0
   1.418 +  </p>
   1.419 + </answer>
   1.420 +
   1.421 +
   1.422 +
   1.423 +<!--
   1.424 +        <question id="dep-platform" when="init">
   1.425 +            On which platforms does your module run? Does it run in the same
   1.426 +            way on each?
   1.427 +            <hint>
   1.428 +            If your module is using JNI or deals with special differences of
   1.429 +            OSes like filesystems, etc. please describe here what they are.
   1.430 +            </hint>
   1.431 +        </question>
   1.432 +-->
   1.433 + <answer id="dep-platform">
   1.434 +  <p>
   1.435 +   100% pure Java. It should run anywhere.
   1.436 +  </p>
   1.437 + </answer>
   1.438 +
   1.439 +
   1.440 +
   1.441 +<!--
   1.442 +        <question id="deploy-dependencies" when="final">
   1.443 +            What do other modules need to do to declare a dependency on this one?
   1.444 +            <hint>
   1.445 +                Provide a sample of the actual lines you would add to a module manifest
   1.446 +                to declare a dependency, for example using OpenIDE-Module-Module-Dependencies
   1.447 +                or OpenIDE-Module-Requires. You may use the magic token @SPECIFICATION-VERSION@
   1.448 +                to represent the current specification version of the module.
   1.449 +            </hint>
   1.450 +        </question>
   1.451 +-->
   1.452 + <answer id="deploy-dependencies">
   1.453 +   <ul>
   1.454 +   <li>UML Projects - org.netbeans.modules.uml.project </li>
   1.455 +   <li>Associate Model Elements - org.netbeans.modules.uml.associatewith</li>
   1.456 +   <li>Rose Import - org.netbeans.modules.uml.roseimport</li>
   1.457 +   <li>Web Report - org.netbeans.modules.uml.webreport</li>
   1.458 +   <!--<li>Dependency Analyzer - org.netbeans.modules.uml.dependencyanalyzer</li>
   1.459 +   <li>Design Center - org.netbeans.modules.uml.designpattern<</li>
   1.460 +   -->
   1.461 +   <li>Diagram Creator - org.netbeans.modules.uml.diagramcreator</li>
   1.462 +   <li>Documentation Pane - org.netbeans.modules.uml.documentation</li>
   1.463 +   <li>Modeling Drawing Area Control - org.netbeans.modules.uml.drawingarea</li>
   1.464 +   <li>Modeling Source Control - org.netbeans.modules.uml.sourcecontrol</li>
   1.465 +   <li>Requiremetns Framework - org.netbeans.modules.uml.requirements</li>
   1.466 +   <li>Reverse Engineering GUI - org.netbeans.modules.uml.regui</li>
   1.467 +   </ul>
   1.468 + </answer>
   1.469 +
   1.470 +
   1.471 +
   1.472 +<!--
   1.473 +        <question id="deploy-jar" when="impl">
   1.474 +            Do you deploy just module JAR file(s) or other files as well?
   1.475 +            <hint>
   1.476 +            Usually a module consist of one JAR file (perhaps with Class-Path
   1.477 +            extensions) and also a configuration file that enables it. If you
   1.478 +            have any other files, use
   1.479 +            &lt;api group="java.io.File" name="yourname" type="export" category="friend"&gt;...&lt;/api&gt;
   1.480 +            to define the location, name and stability of your files (of course
   1.481 +            changing "yourname" and "friend" to suit your needs).
   1.482 +            
   1.483 +            If it uses more than one JAR, describe where they are located, how
   1.484 +            they refer to each other. 
   1.485 +            If it consist of module JAR(s) and other files, please describe
   1.486 +            what is their purpose, why other files are necessary. Please 
   1.487 +            make sure that installation/uninstallation leaves the system 
   1.488 +            in state as it was before installation.
   1.489 +            </hint>
   1.490 +        </question>
   1.491 +-->
   1.492 + <answer id="deploy-jar">
   1.493 +   The module deploys the following jar files into lib/ folder:
   1.494 +   <ul>
   1.495 +   <li>lib/dom4j/jaxen.jar</li> 
   1.496 +	<li>lib/dom4j/msv.jar: </li>
   1.497 +	<li>lib/dom4j/PullParser2.jar: </li>
   1.498 +	<li>lib/dom4j/relaxngDatatype.jar: </li> 
   1.499 +	<li>lib/dom4j/saxpath.jar: </li> 
   1.500 +	<li>lib/dom4j/Tidy.jar: </li>
   1.501 +	<li>lib/dom4j/xsdlib.jar: </li>
   1.502 +	<li>lib/junit/junit.jar</li>
   1.503 +   </ul>
   1.504 + </answer>
   1.505 +
   1.506 +
   1.507 +
   1.508 +<!--
   1.509 +        <question id="deploy-nbm" when="impl">
   1.510 +            Can you deploy an NBM via the Update Center?
   1.511 +            <hint>
   1.512 +            If not why?
   1.513 +            </hint>
   1.514 +        </question>
   1.515 +-->
   1.516 + <answer id="deploy-nbm">
   1.517 +  <p>
   1.518 +   XXX no answer for deploy-nbm
   1.519 +  </p>
   1.520 + </answer>
   1.521 +
   1.522 +
   1.523 +
   1.524 +<!--
   1.525 +        <question id="deploy-packages" when="init">
   1.526 +            Are packages of your module made inaccessible by not declaring them
   1.527 +            public?
   1.528 +            
   1.529 +            <hint>
   1.530 +            NetBeans module system allows restriction of access rights to
   1.531 +            public classes of your module from other modules. This prevents
   1.532 +            unwanted dependencies of others on your code and should be used
   1.533 +            whenever possible (<a href="http://www.netbeans.org/download/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages">
   1.534 +            public packages
   1.535 +            </a>). If you do not restrict access to your classes you are
   1.536 +            making it too easy for other people to misuse your implementation
   1.537 +            details, that is why you should have good reason for not 
   1.538 +            restricting package access.
   1.539 +            </hint>
   1.540 +        </question>
   1.541 +-->
   1.542 + <answer id="deploy-packages">
   1.543 +  <p>
   1.544 +  Yes. Public packages of J2EE Server API module are specified in module manifest file :
   1.545 +
   1.546 +  <b>org.netbeans.modules.uml.** </b>
   1.547 +  </p>
   1.548 + </answer>
   1.549 +
   1.550 +
   1.551 +
   1.552 +<!--
   1.553 +        <question id="deploy-shared" when="final">
   1.554 +            Do you need to be installed in the shared location only, or in the user directory only,
   1.555 +            or can your module be installed anywhere?
   1.556 +            <hint>
   1.557 +            Installation location shall not matter, if it does explain why.
   1.558 +            Consider also whether <code>InstalledFileLocator</code> can help.
   1.559 +            </hint>
   1.560 +        </question>
   1.561 +-->
   1.562 + <answer id="deploy-shared">
   1.563 +  <p>
   1.564 +   Module can be installed any where.
   1.565 +  </p>
   1.566 + </answer>
   1.567 +
   1.568 +
   1.569 +
   1.570 +<!--
   1.571 +        <question id="exec-ant-tasks" when="impl">
   1.572 +            Do you define or register any ant tasks that other can use?
   1.573 +            
   1.574 +            <hint>
   1.575 +            If you provide an ant task that users can use, you need to be very
   1.576 +            careful about its syntax and behaviour, as it most likely forms an
   1.577 +	          API for end users and as there is a lot of end users, their reaction
   1.578 +            when such API gets broken can be pretty strong.
   1.579 +            </hint>
   1.580 +        </question>
   1.581 +-->
   1.582 + <answer id="exec-ant-tasks">
   1.583 +  <p>
   1.584 +   We use the Antlr ant task that ships as an optional task in the Ant distribution.
   1.585 +  </p>
   1.586 + </answer>
   1.587 +
   1.588 +
   1.589 +
   1.590 +<!--
   1.591 +        <question id="exec-classloader" when="impl">
   1.592 +            Does your code create its own class loader(s)?
   1.593 +            <hint>
   1.594 +            A bit unusual. Please explain why and what for.
   1.595 +            </hint>
   1.596 +        </question>
   1.597 +-->
   1.598 + <answer id="exec-classloader">
   1.599 +  <p>
   1.600 +   No
   1.601 +  </p>
   1.602 + </answer>
   1.603 +
   1.604 +
   1.605 +
   1.606 +<!--
   1.607 +        <question id="exec-component" when="impl">
   1.608 +            Is execution of your code influenced by any (string) property
   1.609 +            of any of your components?
   1.610 +            
   1.611 +            <hint>
   1.612 +            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
   1.613 +            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
   1.614 +            a behavior of some code. This of course forms an interface that should
   1.615 +            be documented. Also if one depends on some interface that an object
   1.616 +            implements (<code>component instanceof Runnable</code>) that forms an
   1.617 +            API as well.
   1.618 +            </hint>
   1.619 +        </question>
   1.620 +-->
   1.621 + <answer id="exec-component">
   1.622 +  <p>
   1.623 +   No
   1.624 +  </p>
   1.625 + </answer>
   1.626 +
   1.627 +
   1.628 +
   1.629 +<!--
   1.630 +        <question id="exec-introspection" when="impl">
   1.631 +            Does your module use any kind of runtime type information (<code>instanceof</code>,
   1.632 +            work with <code>java.lang.Class</code>, etc.)?
   1.633 +            <hint>
   1.634 +            Check for cases when you have an object of type A and you also
   1.635 +            expect it to (possibly) be of type B and do some special action. That
   1.636 +            should be documented. The same applies on operations in meta-level
   1.637 +            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
   1.638 +            </hint>
   1.639 +        </question>
   1.640 +-->
   1.641 + <answer id="exec-introspection">
   1.642 +  <p>
   1.643 +   No
   1.644 +  </p>
   1.645 + </answer>
   1.646 +
   1.647 +
   1.648 +
   1.649 +<!--
   1.650 +        <question id="exec-privateaccess" when="final">
   1.651 +            Are you aware of any other parts of the system calling some of 
   1.652 +            your methods by reflection?
   1.653 +            <hint>
   1.654 +            If so, describe the "contract" as an API. Likely private or friend one, but
   1.655 +            still API and consider rewrite of it.
   1.656 +            </hint>
   1.657 +        </question>
   1.658 +-->
   1.659 + <answer id="exec-privateaccess">
   1.660 +  <p>
   1.661 +   No
   1.662 +  </p>
   1.663 + </answer>
   1.664 +
   1.665 +
   1.666 +
   1.667 +<!--
   1.668 +        <question id="exec-process" when="impl">
   1.669 +            Do you execute an external process from your module? How do you ensure
   1.670 +            that the result is the same on different platforms? Do you parse output?
   1.671 +            Do you depend on result code?
   1.672 +            <hint>
   1.673 +            If you feed an input, parse the output please declare that as an API.
   1.674 +            </hint>
   1.675 +        </question>
   1.676 +-->
   1.677 + <answer id="exec-process">
   1.678 +  <p>
   1.679 +   No
   1.680 +  </p>
   1.681 + </answer>
   1.682 +
   1.683 +
   1.684 +
   1.685 +<!--
   1.686 +        <question id="exec-property" when="impl">
   1.687 +            Is execution of your code influenced by any environment or
   1.688 +            Java system (<code>System.getProperty</code>) property?
   1.689 +            
   1.690 +            <hint>
   1.691 +            If there is a property that can change the behavior of your 
   1.692 +            code, somebody will likely use it. You should describe what it does 
   1.693 +            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
   1.694 +            of this API. You may use
   1.695 +            <pre>
   1.696 +                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
   1.697 +                    description of the property, where it is used, what it influence, etc.
   1.698 +                &lt;/api&gt;            
   1.699 +            </pre>
   1.700 +            </hint>
   1.701 +        </question>
   1.702 +-->
   1.703 + <answer id="exec-property">
   1.704 + <ul>
   1.705 +            <li>
   1.706 +                <api type="export" group="property" name="embarcadero.home-dir" category="private">
   1.707 +                    Sets the directory that will contain the .uml configuration files.
   1.708 +                </api>
   1.709 +            </li>
   1.710 +        </ul>
   1.711 +
   1.712 +  <p>
   1.713 +  </p>
   1.714 + </answer>
   1.715 +
   1.716 +
   1.717 +
   1.718 +<!--
   1.719 +        <question id="exec-reflection" when="impl">
   1.720 +            Does your code use Java Reflection to execute other code?
   1.721 +            <hint>
   1.722 +            This usually indicates a missing or insufficient API in the other
   1.723 +            part of the system. If the other side is not aware of your dependency
   1.724 +            this contract can be easily broken.
   1.725 +            </hint>
   1.726 +        </question>
   1.727 +-->
   1.728 + <answer id="exec-reflection">
   1.729 +  <p>
   1.730 +   The UML code is very dynamic.  We use configuration files to determine how to populate our tree,
   1.731 +   property editor, edit control, and preferences.  The configuration file specifies that methods that should
   1.732 +   be used to retrieve, modify, and remove items from a given object.
   1.733 +  </p>
   1.734 + </answer>
   1.735 +
   1.736 +
   1.737 +
   1.738 +<!--
   1.739 +        <question id="exec-threading" when="impl">
   1.740 +            What threading models, if any, does your module adhere to?
   1.741 +            <hint>
   1.742 +                If your module calls foreign APIs which have a specific threading model,
   1.743 +                indicate how you comply with the requirements for multithreaded access
   1.744 +                (synchronization, mutexes, etc.) applicable to those APIs.
   1.745 +                If your module defines any APIs, or has complex internal structures
   1.746 +                that might be used from multiple threads, declare how you protect
   1.747 +                data against concurrent access, race conditions, deadlocks, etc.,
   1.748 +                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
   1.749 +                Examples: a class might be non-thread-safe (like Java Collections); might
   1.750 +                be fully thread-safe (internal locking); might require access through a mutex
   1.751 +                (and may or may not automatically acquire that mutex on behalf of a client method);
   1.752 +                might be able to run only in the event queue; etc.
   1.753 +                Also describe when any events are fired: synchronously, asynchronously, etc.
   1.754 +                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
   1.755 +            </hint>
   1.756 +        </question>
   1.757 +-->
   1.758 + <answer id="exec-threading">
   1.759 +  <p>
   1.760 +   We call the VCS API that is not able to run on the UI thread with out locking up the application.  
   1.761 +   To solve this problem our VCS module has started a thread and executes all VCS API commands
   1.762 +   on the thread.
   1.763 +  </p>
   1.764 + </answer>
   1.765 +
   1.766 +
   1.767 +
   1.768 +<!--
   1.769 +        <question id="format-clipboard" when="impl">
   1.770 +            Which data flavors (if any) does your code read from or insert to
   1.771 +            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
   1.772 +            
   1.773 +            <hint>
   1.774 +            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
   1.775 +            Check your code for overriding these methods.
   1.776 +            </hint>
   1.777 +        </question>
   1.778 +-->
   1.779 + <answer id="format-clipboard">
   1.780 +  <p>
   1.781 +   To perform DnD between the project tree and the diagrams we use a transferable that 
   1.782 +   keeps track of the model elements that are selected.  We provide our own data flavor
   1.783 +   that can be used to retrieve the model elements that are the target of the operation.
   1.784 +   <br/><br/>
   1.785 +   The transferable also implements the string flavor that can be used to pass the 
   1.786 +   model element information.  The string format is a XML string.
   1.787 +   <br/><br/>
   1.788 +   We use the same transferable when performing the copy and paste operations.   
   1.789 +  </p>
   1.790 + </answer>
   1.791 +
   1.792 +
   1.793 +
   1.794 +<!--
   1.795 +        <question id="format-dnd" when="impl">
   1.796 +            Which protocols (if any) does your code understand during Drag &amp; Drop?
   1.797 +            <hint>
   1.798 +            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>. 
   1.799 +            Check your code for overriding these methods. Btw. if they are not overridden, they
   1.800 +            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
   1.801 +            </hint>
   1.802 +        </question>
   1.803 +-->
   1.804 + <answer id="format-dnd">
   1.805 +  <p>
   1.806 +   DnDConstants.ACTION_COPY, DnDConstants.ACTION_MOVE
   1.807 +  </p>
   1.808 + </answer>
   1.809 +
   1.810 +
   1.811 +
   1.812 +<!--
   1.813 +        <question id="format-types" when="impl">
   1.814 +            Which protocols and file formats (if any) does your module read or write on disk,
   1.815 +            or transmit or receive over the network? Do you generate an ant build script?
   1.816 +            Can it be edited and modified? 
   1.817 +            
   1.818 +            <hint>
   1.819 +            <p>
   1.820 +            Files can be read and written by other programs, modules and users. If they influence
   1.821 +            your behaviour, make sure you either document the format or claim that it is a private
   1.822 +            api (using the &lt;api&gt; tag). 
   1.823 +            </p>
   1.824 +            
   1.825 +            <p>
   1.826 +            If you generate an ant build file, this is very likely going to be seen by end users and
   1.827 +            they will be attempted to edit it. You should be ready for that and provide here a link
   1.828 +            to documentation that you have for such purposes and also describe how you are going to
   1.829 +            understand such files during next release, when you (very likely) slightly change the 
   1.830 +            format.
   1.831 +            </p>
   1.832 +            </hint>
   1.833 +        </question>
   1.834 +-->
   1.835 + <answer id="format-types">
   1.836 +  <p>
   1.837 +   We store our meta model information in files that have an etd extension.  We store our diagrams in
   1.838 +   that end with the extensions etlp, and etld.  Also when we version control model elements we 
   1.839 +   store the metamodel information in a files with the extension etx.
   1.840 +  </p>
   1.841 + </answer>
   1.842 +
   1.843 +
   1.844 +
   1.845 +<!--
   1.846 +        <question id="lookup-lookup" when="init">
   1.847 +            Does your module use <code>org.openide.util.Lookup</code>
   1.848 +            or any similar technology to find any components to communicate with? Which ones?
   1.849 +            
   1.850 +            <hint>
   1.851 +            Please describe the interfaces you are searching for, where 
   1.852 +            are defined, whether you are searching for just one or more of them,
   1.853 +            if the order is important, etc. Also classify the stability of such
   1.854 +            API contract. For that use &lt;api group=&amp;lookup&amp; /&gt; tag.
   1.855 +            </hint>
   1.856 +        </question>
   1.857 +-->
   1.858 + <answer id="lookup-lookup">
   1.859 +  <p>
   1.860 +   We have added IElement instances to lookup of our nodes.  Our UML project type also creates a lookup and adds 
   1.861 +   the standard project classes to the lookup.  We also add a UMLHelper to the lookup to allow modules writers to
   1.862 +   interact with tha model.
   1.863 +  </p>
   1.864 + </answer>
   1.865 +
   1.866 +
   1.867 +
   1.868 +<!--
   1.869 +        <question id="lookup-register" when="final">
   1.870 +            Do you register anything into lookup for other code to find?
   1.871 +            <hint>
   1.872 +            Do you register using layer file or using <code>META-INF/services</code>?
   1.873 +            Who is supposed to find your component?
   1.874 +            </hint>
   1.875 +        </question>
   1.876 +-->
   1.877 + <answer id="lookup-register">
   1.878 +  <p>
   1.879 +   We have added IElement instances to lookup of our nodes.  Our UML project type also creates a lookup and adds 
   1.880 +   the standard project classes to the lookup.  We also add a UMLHelper to the lookup to allow modules writers to
   1.881 +   interact with tha model.
   1.882 +  </p>
   1.883 + </answer>
   1.884 +
   1.885 +
   1.886 +
   1.887 +<!--
   1.888 +        <question id="lookup-remove" when="final">
   1.889 +            Do you remove entries of other modules from lookup?
   1.890 +            <hint>
   1.891 +            Why? Of course, that is possible, but it can be dangerous. Is the module
   1.892 +            your are masking resource from aware of what you are doing?
   1.893 +            </hint>
   1.894 +        </question>
   1.895 +-->
   1.896 + <answer id="lookup-remove">
   1.897 +  <p>
   1.898 +   No
   1.899 +  </p>
   1.900 + </answer>
   1.901 +
   1.902 +
   1.903 +
   1.904 +<!--
   1.905 +        <question id="perf-exit" when="final">
   1.906 +            Does your module run any code on exit?
   1.907 +        </question>
   1.908 +-->
   1.909 + <answer id="perf-exit">
   1.910 +  <p>
   1.911 +   No
   1.912 +  </p>
   1.913 + </answer>
   1.914 +
   1.915 +
   1.916 +
   1.917 +<!--
   1.918 +        <question id="perf-huge_dialogs" when="final">
   1.919 +            Does your module contain any dialogs or wizards with a large number of
   1.920 +            GUI controls such as combo boxes, lists, trees, or text areas?
   1.921 +        </question>
   1.922 +-->
   1.923 + <answer id="perf-huge_dialogs">
   1.924 +  <p>
   1.925 +   No
   1.926 +  </p>
   1.927 + </answer>
   1.928 +
   1.929 +
   1.930 +
   1.931 +<!--
   1.932 +        <question id="perf-limit" when="init">
   1.933 +            Are there any hard-coded or practical limits in the number or size of
   1.934 +            elements your code can handle?
   1.935 +        </question>
   1.936 +-->
   1.937 + <answer id="perf-limit">
   1.938 +  <p>
   1.939 +   No
   1.940 +  </p>
   1.941 + </answer>
   1.942 +
   1.943 +
   1.944 +
   1.945 +<!--
   1.946 +        <question id="perf-mem" when="final">
   1.947 +            How much memory does your component consume? Estimate
   1.948 +            with a relation to the number of windows, etc.
   1.949 +        </question>
   1.950 +-->
   1.951 + <answer id="perf-mem">
   1.952 +  <p>
   1.953 +   The size of memory that our module consumes depends on the size of the model.  The bigger the
   1.954 +   model the bigger the XML repository.
   1.955 +  </p>
   1.956 + </answer>
   1.957 +
   1.958 +
   1.959 +
   1.960 +<!--
   1.961 +        <question id="perf-menus" when="final">
   1.962 +            Does your module use dynamically updated context menus, or
   1.963 +            context-sensitive actions with complicated and slow enablement logic?
   1.964 +            <hint>
   1.965 +                If you do a lot of tricks when adding actions to regular or context menus, you can significantly
   1.966 +                slow down display of the menu, even when the user is not using your action. Pay attention to
   1.967 +                actions you add to the main menu bar, and to context menus of foreign nodes or components. If
   1.968 +                the action is conditionally enabled, or changes its display dynamically, you need to check the
   1.969 +                impact on performance. In some cases it may be more appropriate to make a simple action that is
   1.970 +                always enabled but does more detailed checks in a dialog if it is actually run.
   1.971 +            </hint>
   1.972 +        </question>
   1.973 +-->
   1.974 + <answer id="perf-menus">
   1.975 +  <p>
   1.976 +   No
   1.977 +  </p>
   1.978 + </answer>
   1.979 +
   1.980 +
   1.981 +
   1.982 +<!--
   1.983 +        <question id="perf-progress" when="final">
   1.984 +            Does your module execute any long-running tasks?
   1.985 +            
   1.986 +            <hint>Long running tasks should never block 
   1.987 +            AWT thread as it badly hurts the UI
   1.988 +            <a href="http://performance.netbeans.org/responsiveness/issues.html">
   1.989 +            responsiveness</a>.
   1.990 +            Tasks like connecting over
   1.991 +            network, computing huge amount of data, compilation
   1.992 +            be done asynchronously (for example
   1.993 +            using <code>RequestProcessor</code>), definitively it should 
   1.994 +            not block AWT thread.
   1.995 +            </hint>
   1.996 +        </question>
   1.997 +-->
   1.998 + <answer id="perf-progress">
   1.999 +  <p>
  1.1000 +   Create Diagram form selected, and Sequence Diagram Reverse Engineering can take a while to 
  1.1001 +   complete.
  1.1002 +  </p>
  1.1003 + </answer>
  1.1004 +
  1.1005 +
  1.1006 +
  1.1007 +<!--
  1.1008 +        <question id="perf-scale" when="init">
  1.1009 +            Which external criteria influence the performance of your
  1.1010 +            program (size of file in editor, number of files in menu, 
  1.1011 +            in source directory, etc.) and how well your code scales?
  1.1012 +            <hint>
  1.1013 +            Please include some estimates, there are other more detailed 
  1.1014 +            questions to answer in later phases of implementation. 
  1.1015 +            </hint>
  1.1016 +        </question>
  1.1017 +-->
  1.1018 + <answer id="perf-scale">
  1.1019 +  <p>
  1.1020 +   No
  1.1021 +  </p>
  1.1022 + </answer>
  1.1023 +
  1.1024 +
  1.1025 +
  1.1026 +<!--
  1.1027 +        <question id="perf-spi" when="init">
  1.1028 +            How the performance of the plugged in code will be enforced?
  1.1029 +            <hint>
  1.1030 +            If you allow foreign code to be plugged into your own module, how
  1.1031 +            do you enforce that it will behave correctly and quickly and will not
  1.1032 +            negatively influence the performance of your own module?
  1.1033 +            </hint>
  1.1034 +        </question>
  1.1035 +-->
  1.1036 + <answer id="perf-spi">
  1.1037 +  <p>
  1.1038 +   Currently we do not have any enforcement.
  1.1039 +  </p>
  1.1040 + </answer>
  1.1041 +
  1.1042 +
  1.1043 +
  1.1044 +<!--
  1.1045 +        <question id="perf-startup" when="final">
  1.1046 +            Does your module run any code on startup?
  1.1047 +        </question>
  1.1048 +-->
  1.1049 + <answer id="perf-startup">
  1.1050 +  <p>
  1.1051 +   UML initializes the UML product durning the module startup.
  1.1052 +  </p>
  1.1053 + </answer>
  1.1054 +
  1.1055 +
  1.1056 +
  1.1057 +<!--
  1.1058 +        <question id="perf-wakeup" when="final">
  1.1059 +            Does any piece of your code wake up periodically and do something
  1.1060 +            even when the system is otherwise idle (no user interaction)?
  1.1061 +        </question>
  1.1062 +-->
  1.1063 + <answer id="perf-wakeup">
  1.1064 +  <p>
  1.1065 +   No
  1.1066 +  </p>
  1.1067 + </answer>
  1.1068 +
  1.1069 +
  1.1070 +
  1.1071 +<!--
  1.1072 +        <question id="resources-file" when="final">
  1.1073 +            Does your module use <code>java.io.File</code> directly?
  1.1074 +            
  1.1075 +            <hint>
  1.1076 +            NetBeans provide a logical wrapper over plain files called 
  1.1077 +            <code>org.openide.filesystems.FileObject</code> that
  1.1078 +            provides uniform access to such resources and is the preferred
  1.1079 +            way that should be used. But of course there can be situations when
  1.1080 +            this is not suitable.
  1.1081 +            </hint>
  1.1082 +        </question>
  1.1083 +-->
  1.1084 + <answer id="resources-file">
  1.1085 +  <p>
  1.1086 +   We use Files when ever reading in configuration files.  We also use the 
  1.1087 +   File class when reading in metadata and diagram files.
  1.1088 +  </p>
  1.1089 + </answer>
  1.1090 +
  1.1091 +
  1.1092 +
  1.1093 +<!--
  1.1094 +        <question id="resources-layer" when="final">
  1.1095 +            Does your module provide own layer? Does it create any files or
  1.1096 +            folders in it? What it is trying to communicate by that and with which 
  1.1097 +            components?
  1.1098 +            
  1.1099 +            <hint>
  1.1100 +            NetBeans allows automatic and declarative installation of resources 
  1.1101 +            by module layers. Module register files into appropriate places
  1.1102 +            and other components use that information to perform their task
  1.1103 +            (build menu, toolbar, window layout, list of templates, set of
  1.1104 +            options, etc.). 
  1.1105 +            </hint>
  1.1106 +        </question>
  1.1107 +-->
  1.1108 + <answer id="resources-layer">
  1.1109 +  <p>
  1.1110 +   Yes.  We use the configuration files and folders to allow modules writers add context menus, 
  1.1111 +   to extend the Modeling components.
  1.1112 +  </p>
  1.1113 + </answer>
  1.1114 +
  1.1115 +
  1.1116 +
  1.1117 +<!--
  1.1118 +        <question id="resources-mask" when="final">
  1.1119 +            Does your module mask/hide/override any resources provided by other modules in
  1.1120 +            their layers?
  1.1121 +            
  1.1122 +            <hint>
  1.1123 +            If you mask a file provided by another module, you probably depend
  1.1124 +            on that and do not want the other module to (for example) change
  1.1125 +            the file's name. That module shall thus make that file available as an API
  1.1126 +            of some stability category.
  1.1127 +            </hint>
  1.1128 +        </question>
  1.1129 +-->
  1.1130 + <answer id="resources-mask">
  1.1131 +  <p>
  1.1132 +   No
  1.1133 +  </p>
  1.1134 + </answer>
  1.1135 +
  1.1136 +
  1.1137 +
  1.1138 +<!--
  1.1139 +        <question id="resources-read" when="final">
  1.1140 +            Does your module read any resources from layers? For what purpose?
  1.1141 +            
  1.1142 +            <hint>
  1.1143 +            As this is some kind of intermodule dependency, it is a kind of API.
  1.1144 +            Please describe it and classify according to 
  1.1145 +            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
  1.1146 +            common stability categories</a>.
  1.1147 +            </hint>
  1.1148 +        </question>
  1.1149 +-->
  1.1150 + <answer id="resources-read">
  1.1151 +  <p>
  1.1152 +   Yes.  We use the configuration files and folders to allow modules writers add context menus, 
  1.1153 +   to extend the Modeling components.
  1.1154 +  </p>
  1.1155 + </answer>
  1.1156 +
  1.1157 +
  1.1158 +
  1.1159 +<!--
  1.1160 +        <question id="security-grant" when="final">
  1.1161 +            Does your code grant additional rights to some other code?
  1.1162 +            <hint>Avoid using a class loader that adds extra
  1.1163 +            permissions to loaded code unless really necessary.
  1.1164 +            Also note that your API implementation
  1.1165 +            can also expose unneeded permissions to enemy code by
  1.1166 +            calling AccessController.doPrivileged().</hint>
  1.1167 +        </question>
  1.1168 +-->
  1.1169 + <answer id="security-grant">
  1.1170 +  <p>
  1.1171 +   No
  1.1172 +  </p>
  1.1173 + </answer>
  1.1174 +
  1.1175 +
  1.1176 +
  1.1177 +<!--
  1.1178 +        <question id="security-policy" when="final">
  1.1179 +            Does your functionality require modifications to the standard policy file?
  1.1180 +            <hint>Your code might pass control to third-party code not
  1.1181 +            coming from trusted domains. This could be code downloaded over the
  1.1182 +            network or code coming from libraries that are not bundled
  1.1183 +            with NetBeans. Which permissions need to be granted to which domains?</hint>
  1.1184 +        </question>
  1.1185 +-->
  1.1186 + <answer id="security-policy">
  1.1187 +  <p>
  1.1188 +   No
  1.1189 +  </p>
  1.1190 + </answer>
  1.1191 +
  1.1192 +</api-answers>
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/arch/modeling-core.html	Wed Jul 28 15:59:34 2010 -0400
     2.3 @@ -0,0 +1,1933 @@
     2.4 +<html>
     2.5 +<head>
     2.6 +<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
     2.7 +<title>UML Modeling Core - NetBeans Architecture Questions</title>
     2.8 +</head>
     2.9 +<body>
    2.10 +<h1>NetBeans Architecture Answers for UML Modeling Core module</h1>
    2.11 +<ul>
    2.12 +<li>
    2.13 +<b>Author:</b> trey.spiva@sun.com</li>
    2.14 +<li>
    2.15 +<b>Answers as of:</b> Apr 26, 2005</li>
    2.16 +<li>
    2.17 +<b>Answers for questions version:</b> 1.25</li>
    2.18 +<li>
    2.19 +<b>Latest available version of questions:</b> 1.25</li>
    2.20 +</ul>
    2.21 +<hr>
    2.22 +<h2>Interfaces table</h2>
    2.23 +<a name="group-java">
    2.24 +<h5>Group of java interfaces</h5>
    2.25 +</a>
    2.26 +<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
    2.27 +<tr>
    2.28 +<td>
    2.29 +<table border="0" cellpadding="3" cellspacing="1" width="100%">
    2.30 +<tr class="tablersh">
    2.31 +<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
    2.32 +</tr>
    2.33 +<tr class="tabler">
    2.34 +<td><a name="java-OpenIDE">OpenIDE</a></td><td>Imported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official">Official</a></td><td><a href="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/index.html">http://www.netbeans.org/download/dev/javadoc/OpenAPIs/index.html</a>
    2.35 +<p></p>
    2.36 +</td>
    2.37 +</tr>
    2.38 +<tr class="tabler">
    2.39 +<td><a name="java-Loaders">Loaders</a></td><td>Imported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official">Official</a></td><td><a href="http://www.netbeans.org/download/dev/javadoc/LoadersAPI/index.html">http://www.netbeans.org/download/dev/javadoc/LoadersAPI/index.html</a>
    2.40 +<p></p>
    2.41 +</td>
    2.42 +</tr>
    2.43 +<tr class="tabler">
    2.44 +<td><a name="java-projectapi">projectapi</a></td><td>Imported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official">Official</a></td><td><a href="http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html">http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html</a>
    2.45 +<p></p>
    2.46 +<a href="http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html">http://www.netbeans.org/download/dev/javadoc/ProjectAPI/index.html</a>
    2.47 +<p></p>
    2.48 +</td>
    2.49 +</tr>
    2.50 +<tr class="tabler">
    2.51 +<td><a name="java-ant-project">ant-project</a></td><td>Imported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official">Official</a></td><td><a href="http://www.netbeans.org/download/dev/javadoc/AntProjectAPI/index.html">http://www.netbeans.org/download/dev/javadoc/AntProjectAPI/index.html</a>
    2.52 +<p></p>
    2.53 +</td>
    2.54 +</tr>
    2.55 +<tr class="tabler">
    2.56 +<td><a name="java-projectuiapi">projectuiapi</a></td><td>Imported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official">Official</a></td><td><a href="http://www.netbeans.org/download/dev/javadoc/ProjectUIAPI/index.html">http://www.netbeans.org/download/dev/javadoc/ProjectUIAPI/index.html</a>
    2.57 +<p></p>
    2.58 +</td>
    2.59 +</tr>
    2.60 +</table>
    2.61 +</td>
    2.62 +</tr>
    2.63 +</table>
    2.64 +<p></p>
    2.65 +<a name="group-property">
    2.66 +<h5>Group of property interfaces</h5>
    2.67 +</a>
    2.68 +<table cellpadding="1" cellspacing="0" border="0" class="tablebg" width="100%">
    2.69 +<tr>
    2.70 +<td>
    2.71 +<table border="0" cellpadding="3" cellspacing="1" width="100%">
    2.72 +<tr class="tablersh">
    2.73 +<td align="CENTER" width="25%"><span class="titlectable">Interface Name</span></td><td align="CENTER" width="10%"><span class="titlectable">In/Out</span></td><td align="CENTER" width="10%"><span class="titlectable">Stability</span></td><td align="CENTER"><span class="titlectable">Specified in What Document?</span></td>
    2.74 +</tr>
    2.75 +<tr class="tabler">
    2.76 +<td><a name="property-embarcadero.home-dir">embarcadero.home-dir</a></td><td>Exported</td><td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-private">Private</a></td><td>
    2.77 +<p></p>
    2.78 +                    Sets the directory that will contain the .uml configuration files.
    2.79 +                <p></p>
    2.80 +</td>
    2.81 +</tr>
    2.82 +</table>
    2.83 +</td>
    2.84 +</tr>
    2.85 +</table>
    2.86 +<p></p>
    2.87 +<!-- -*- sgml-indent-step: 1 -*- -->
    2.88 +<!--
    2.89 +The contents of this file are subject to the terms of the Common Development
    2.90 +and Distribution License (the License). You may not use this file except in
    2.91 +compliance with the License.
    2.92 +
    2.93 +You can obtain a copy of the License at http://www.netbeans.org/cddl.html
    2.94 +or http://www.netbeans.org/cddl.txt.
    2.95 +
    2.96 +When distributing Covered Code, include this CDDL Header Notice in each file
    2.97 +and include the License file at http://www.netbeans.org/cddl.txt.
    2.98 +If applicable, add the following below the CDDL Header, with the fields
    2.99 +enclosed by brackets [] replaced by your own identifying information:
   2.100 +"Portions Copyrighted [year] [name of copyright owner]"
   2.101 +
   2.102 +The Original Software is Netbeans Localization project (aka translatedfiles).
   2.103 +The Initial Developer of the Original Software is Maxym Mykhalchuk.
   2.104 +Portions Copyright 2003 Maxym Mykhalchuk.
   2.105 +All Rights Reserved.
   2.106 +-->
   2.107 +<api-answers question-version="1.25" module="UML Modeling Core" author="trey.spiva@sun.com">
   2.108 +
   2.109 +  
   2.110 +<!--
   2.111 +The contents of this file are subject to the terms of the Common Development
   2.112 +and Distribution License (the License). You may not use this file except in
   2.113 +compliance with the License.
   2.114 +
   2.115 +You can obtain a copy of the License at http://www.netbeans.org/cddl.html
   2.116 +or http://www.netbeans.org/cddl.txt.
   2.117 +
   2.118 +When distributing Covered Code, include this CDDL Header Notice in each file
   2.119 +and include the License file at http://www.netbeans.org/cddl.txt.
   2.120 +If applicable, add the following below the CDDL Header, with the fields
   2.121 +enclosed by brackets [] replaced by your own identifying information:
   2.122 +"Portions Copyrighted [year] [name of copyright owner]"
   2.123 +
   2.124 +The Original Software is Netbeans Localization project (aka translatedfiles).
   2.125 +The Initial Developer of the Original Software is Maxym Mykhalchuk.
   2.126 +Portions Copyright 2003 Maxym Mykhalchuk.
   2.127 +All Rights Reserved.
   2.128 +-->
   2.129 +
   2.130 +<!--
   2.131 +    Author     : Jaroslav Tulach
   2.132 +    Description: Questions that should be answered in order to make better API
   2.133 +
   2.134 +    No PUBLIC or SYSTEM IDs defined currently.
   2.135 +-->
   2.136 +
   2.137 +
   2.138 +<!--
   2.139 +                        *** ATTENTION EDITORS ***
   2.140 +Please increment the 'version' field of <api-questions> whenever you make a
   2.141 +semantic change: adding a new question or significantly changing the meaning of
   2.142 +an old one. Changing this field ensures that arch pages answering the old version
   2.143 +print a warning during Javadoc generation. If you only change hints or make small
   2.144 +edits in the text of a question, you need not change the version number.
   2.145 +
   2.146 +Also rerun openide/www/tutorial/build.xml#question when you are done and commit
   2.147 +openide/www/tutorial/questions.html.
   2.148 +-->
   2.149 +
   2.150 +<api-questions version="1.25">
   2.151 +    
   2.152 +<hr>
   2.153 +<h2>General Information</h2>
   2.154 +<ul>
   2.155 +<p></p>
   2.156 +<font color="gray"><b><a name="answer-arch-what">Question (arch-what)</a>:</b><em>
   2.157 +            What is this project good for?
   2.158 +            
   2.159 +        </em></font>
   2.160 +<p></p>
   2.161 +<b>Answer:</b>
   2.162 +  
   2.163 +<p>
   2.164 +   This project is a core module for the modeling tool.
   2.165 +  </p>
   2.166 + 
   2.167 +<p></p>
   2.168 +<font color="gray"><b><a name="answer-arch-overall">Question (arch-overall)</a>:</b><em>
   2.169 +            Describe the overall architecture. 
   2.170 +            
   2.171 +        </em></font>
   2.172 +<p></p>
   2.173 +<b>Answer:</b>
   2.174 +   The UML project is really a modeling project.  One of the things (and currently the only thing) that we can model is UML.  The tool is broken up into three areas Core, Language Framework, and UI. <br>
   2.175 +   
   2.176 +<br>
   2.177 +   
   2.178 +<h3>Modeling Core</h3>The Core contains the meta data layer, workspace management, event framework, preference framework, type management, generative framework, and a add-in framework.  Below is a brief description to each of the components for the tool.  When reading the descriptions keep in mind that the UML tool was originally designed as an application that can be embedded into other application shells. So, some of the components listed are duplicates of NetBeans components. <br>
   2.179 +   
   2.180 +<ul>
   2.181 +<li>
   2.182 +<strong>Meta Data Layer</strong>
   2.183 +</li>
   2.184 +</ul>
   2.185 +   
   2.186 +<blockquote>
   2.187 +<p>The meta data layer is based on the UML specification.  Our data for the most part follows the UML specification.  The interesting thing about UML 2.0 is that the architects of UML 2.0 also designed MOF 2.0.  So at this point UML 2.0 is a super set of MOF 2.0.  When ever a meta data element has a value changed the event framework is used to notify listeners of the change.  The only business rules that the meta data layer applies are to force the correct structure data structure.  The applications business rules are applied by other components in response to events sent out when a model element is about to be modified.  We call these events pre events.  For example when the name of a class model element is changed a name change event is sent and round trip listens for name change events and verify that the name is a valid identifier for the languages associated with the model element.</p>
   2.188 +</blockquote>
   2.189 +   
   2.190 +<ul>
   2.191 +<li>
   2.192 +<strong>Workspace Management</strong>
   2.193 +</li>
   2.194 +</ul>
   2.195 +
   2.196 +   
   2.197 +<blockquote>
   2.198 +<p>Describe was design be able to have multiple UML projects open at the same time.  The job of the workspace management component was to manage the projects that are open.  NetBeans 4.x  has its own workspace management facilities.  In Coke we will probably no longer have a dependency on this component.</p>
   2.199 +</blockquote>
   2.200 +<ul>
   2.201 +<li>
   2.202 +<strong>Event Framework</strong>
   2.203 +</li>
   2.204 +</ul>
   2.205 +   
   2.206 +<blockquote>
   2.207 +<p>The event framework is a component that does not have any dependencies to the rest of the application.  However most of the rest of the tool has dependencies on the EventFramework  We did not use the Java Bean event mechanisms, instead we used more of an event bus mechanism.  The event mechanism is broken into event dispatchers, and event listeners.  The event dispatchers are used to register listeners for events and to send events to all registered listeners.  There is a number of different types of dispatchers in the tool (for example ElementChangeEventDispatcher, AddinEventDispatcher, ElementLifeTimeEventDispatcher etc)  and any component can create a new event dispatcher.  The component that would like to register for an event retrieves the dispatcher and registers for the event.  
   2.208 +
   2.209 +    The big difference between our event mechanism and the JavaBeans event mechanism is that you do not have to wait for a component to be created before registering for the events.  For example with the JavaBean event mechanism you have to have an instance of the bean that you wish to register with.  So, if you want to receive notification from all class elements in the system you have to first register for an event to notify you when a class comes into memory, register for the event with the class and then  you are able to receive events. 
   2.210 +
   2.211 +	 With the event bus concept the component retrieves the event dispatchers when the component is created, registers for the event and waits.  Whenever something any class changes the registered listener will be notified.</p>
   2.212 +</blockquote>
   2.213 +    
   2.214 +<ul>
   2.215 +<li>
   2.216 +<strong>Preference Framework</strong>
   2.217 +</li>
   2.218 +</ul>
   2.219 +   
   2.220 +<blockquote>
   2.221 +<p>Again Describe was designed to be an application that could be embedded into many shells.  As such we have our own preference framework.  We may want to start using the NetBeans preference mechanism in the future.</p>
   2.222 +</blockquote>
   2.223 +   
   2.224 +   
   2.225 +<ul>
   2.226 +<li>
   2.227 +<strong>Type Management</strong>
   2.228 +</li>
   2.229 +</ul>
   2.230 +   
   2.231 +<blockquote>
   2.232 +<p>Type management is used to quickly find type in the system.  Type management is also the component that makes version control possible.  When  model element is versioned we remove the model element information from the project and replace it with a stub.  The removed information is then gets stored into its own file (.ext) that can be version controlled.  When a versioned model element is referenced the Type Management component make sure that the information in the version controlled file is read in to memory and replaces the stub with the information in the version control  file.  In this way we are able to lazy load information.</p>
   2.233 +</blockquote>
   2.234 +   
   2.235 +   
   2.236 +<ul>
   2.237 +<li>
   2.238 +<strong>Generative Framework</strong>
   2.239 +</li>
   2.240 +</ul>
   2.241 +   
   2.242 +<blockquote>
   2.243 +<p>The generative framework is used to format data.  Basically we are able to use scripts to format information.  The scripts are used to format the information in the diagram, project tree,  and property editor.  In the C++ version of  Describe the generative framework was also used to generate code.</p>
   2.244 +</blockquote>
   2.245 +   
   2.246 +   
   2.247 +<ul>
   2.248 +<li>
   2.249 +<strong>Add-In Framework</strong>
   2.250 +</li>
   2.251 +</ul>
   2.252 +   
   2.253 +<blockquote>
   2.254 +<p>Again since Describe was designed to embed into different shell we also developed our own add in framework. </p>
   2.255 +</blockquote>
   2.256 +<br>
   2.257 +
   2.258 +   
   2.259 +<br>
   2.260 +   
   2.261 +<h3>Langauge Facility</h3>The language facility supplies the language processing of the modeling tool.  The modeling tool was design to maximize the reuse of the components across languages.  In the modeling domain when we use the term language we are talking about anything that can be generated.  It could be used to generate a source file, XML or a StarOffice document the framework does not care.  The language facility contains the parsers, reverse engineering, method body reverse engineering, round trip framework, and code generation.&lt;/blockquote&gt;[&lt;/html&gt;]
   2.262 +   <ul>
   2.263 +<li>
   2.264 +<strong>Language Parsers</strong>
   2.265 +</li>
   2.266 +</ul>
   2.267 +   
   2.268 +<blockquote>
   2.269 +<p>The parsers that we use in the UML tool generate events.  The events are structured using UML syntax (actually they are XMI fragments).  Because we use UML as our event syntax all parser listeners are able to be language agnostic because the structure of the event will look the same if the language is Java, C++, C#, VB, JSP, etc.</p>
   2.270 +</blockquote>
   2.271 +<ul>
   2.272 +<li>
   2.273 +<strong>Reverse Engineering</strong>
   2.274 +</li>
   2.275 +</ul>
   2.276 +   
   2.277 +<blockquote>
   2.278 +<p>Takes the parser information and integrates the information into a modeling project. The modeling project can be a new project or an existing project.  Note that there is only one Reverse Engineering component that can handle all of the languages.  Basically it is language agnostic. </p>
   2.279 +</blockquote> 
   2.280 +<ul>
   2.281 +<li>
   2.282 +<strong>Method Body Reverse Engineering</strong>
   2.283 +</li>
   2.284 +</ul>
   2.285 +   
   2.286 +<blockquote>
   2.287 +<p>Takes the parser information and integrates the information into the modeling project by creating an interaction (Sequence Diagram, or Collaboration Diagram) that represents the parser information.  Note that there is only one Method Body Reverse Engineering component that supports all of the languages.</p>
   2.288 +</blockquote>
   2.289 +<ul>
   2.290 +<li>
   2.291 +<strong>Round Trip</strong>
   2.292 +</li>
   2.293 +</ul>
   2.294 +
   2.295 +   
   2.296 +<blockquote>
   2.297 +<p>Round trip has two purposes in life: one enforce business rules that apply to languages, two notify the code generation that something changed that affect the associated source file artifacts.  Round trip registers for many of the events that can be issued from the meta data, validates the data and applies business rules.  After the data changes have been applied round trip sends an event via the RoundTripEventDispatcher to notify listeners that the source file artifact may need to be updated.  Round trip is not actually responsible for generating any code.  Code generation is the responsibility of the round trip listeners.
   2.298 +
   2.299 +   To apply the business rules for a language round trip uses a component called a request process to apply the rules.  Each supported language supplies a request processor.  So the request processor is not language agnostic, however round trip (which only manages the request processors) is language agnostic.  A configuration file is used to determine the request processor to use for a specific language.
   2.300 +
   2.301 +   Round trip was designed to allow multiple languages to be associated with one model element.  So a model element can be associated with Java, and WSDL and the code can be generated for each language.  When the model element is changed the code will be generated for both languages without any interaction by the user. </p>
   2.302 +</blockquote>
   2.303 +<ul>
   2.304 +<li>
   2.305 +<strong>Code Generation</strong>
   2.306 +</li>
   2.307 +</ul>
   2.308 +   
   2.309 +<blockquote>
   2.310 +<p>Code generation (you guessed it) is used to generate code.  In Java Studio Enterprise the Java code generator uses the NetBeans API to generate code.  However, that does not have to be the case.  As mentioned earlier the C++ version of Describe the code generation module to use the generative framework to generate code.
   2.311 +
   2.312 +   The code generation component is registered as a round trip listener for a specific language.  Therefore the Java code generation component only recieves events when a Java source artifact is associated with a model element that has been modified.  When something occurs in the model that affects a source artifact the code generation component is notified via round trip events.  The code generation module then updates the source file. </p>
   2.313 +</blockquote>
   2.314 +<br>
   2.315 +   
   2.316 +<br>
   2.317 +   
   2.318 +<h3>Modeling User Interface</h3>The interfaces provides many visual components to allow the user to interact with a model.  Below is a description of the user interfaces components.<ul>
   2.319 +<li>
   2.320 +<strong>Drawing Area</strong>
   2.321 +</li>
   2.322 +</ul>
   2.323 +   
   2.324 +<blockquote>
   2.325 +<p>The drawing area component is used to render the diagrams  The drawing area control wrapes the <a href="./Wiki?Tom+Sawyer+Libraries" shape="rect">Tom Sawyer</a> components. The drawing area control is a generic control that can be used to when developing any modeling diagram.  Even though the UML product has multiple diagram types there is only one drawing area control for all the diagrams. 
   2.326 +   <br>
   2.327 +<br>
   2.328 +   
   2.329 +<i>INSERT A DIAGRAM HERE</i>
   2.330 +
   2.331 +   
   2.332 +</p>
   2.333 +</blockquote>
   2.334 +<br>
   2.335 +    
   2.336 +<ul>
   2.337 +<li>
   2.338 +<strong>Property Elements/Property Definitions</strong>
   2.339 +</li>
   2.340 +</ul>
   2.341 +   The modeling tool has a concept of property elements and property definitions.  Property definitions a basically a meta language that can be used to describe the structure of properties.  The property definitions specify the details of a property.  The property definition fields are listed below.
   2.342 +   
   2.343 +   <br>
   2.344 +<br>
   2.345 +   Property elements is an instance of the property defintions. The property elements contain the properties data and a pointer to the property definitions that specifies the property elements rules.
   2.346 +
   2.347 +   The property elements and property definitions are defined as interfaces so there are unlimited posibilities of how to load up the property elements data and how to build the property defintion tree.
   2.348 +   <br>
   2.349 +<br>
   2.350 +   The modeling tool supplies one implementation of the property elements and property defintions that can be built a runtime based on an XML files.  The propety definition file specifies the structure of the property definitions and the property element file specifies all the informtion that is needed to set and retrieve the property data.  Reflection is used to set and retrieve the property data.
   2.351 +   
   2.352 +   
   2.353 +   <ul>
   2.354 +<li>
   2.355 +<strong>Propertery Editor</strong>
   2.356 +</li>
   2.357 +</ul>
   2.358 +   
   2.359 +<blockquote>
   2.360 +<p>The property editor is a generic property editor that uses the property elements/property definitions mentioned above to build property data.  Since the property definitions can contain children the property editor was design to display properties in a tree structure.	</p>
   2.361 +</blockquote>
   2.362 +<ul>
   2.363 +<li>
   2.364 +<strong>Project Tree</strong>
   2.365 +</li>
   2.366 +</ul>
   2.367 +   
   2.368 +<ul>
   2.369 +<li>
   2.370 +<strong>Preferences Editor</strong>
   2.371 +</li>
   2.372 +</ul>
   2.373 +   * <strong>Edit Control</strong>
   2.374 +<br>
   2.375 +   
   2.376 +<br>
   2.377 +
   2.378 +   
   2.379 +<ul>
   2.380 +<li>
   2.381 +<strong>Documentation Pane</strong>
   2.382 +</li>
   2.383 +</ul>
   2.384 +   
   2.385 +<p></p>
   2.386 + 
   2.387 +<p></p>
   2.388 +<font color="gray"><b><a name="answer-arch-usecases">Question (arch-usecases)</a>:</b><em>
   2.389 +            
   2.390 +        
   2.391 +            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase" shape="rect">
   2.392 +            use cases</a> of the new API. Who will use it under
   2.393 +            what circumstances? What kind of code would typically need to be written
   2.394 +            to use the module?
   2.395 +        </em></font>
   2.396 +<p></p>
   2.397 +<b>Answer:</b>
   2.398 +  
   2.399 +<p>
   2.400 +   Fill in at a later time.  
   2.401 +  </p>
   2.402 + 
   2.403 +<p></p>
   2.404 +<font color="gray"><b><a name="answer-arch-time">Question (arch-time)</a>:</b><em>
   2.405 +            What are the time estimates of the work?
   2.406 +            
   2.407 +        </em></font>
   2.408 +<p></p>
   2.409 +<b>Answer:</b>
   2.410 +  
   2.411 +<p>
   2.412 +   The modeling module will be released in the BUZZ time frame.
   2.413 +  </p>
   2.414 + 
   2.415 +<p></p>
   2.416 +<font color="gray"><b><a name="answer-arch-quality">Question (arch-quality)</a>:</b><em>
   2.417 +            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html" shape="rect">quality</a>
   2.418 +            of your code be tested and 
   2.419 +            how are future regressions going to be prevented?
   2.420 +            
   2.421 +        </em></font>
   2.422 +<p></p>
   2.423 +<b>Answer:</b>
   2.424 +  
   2.425 +<p>
   2.426 +   We have a few hundred JUnit test that we currently run during our release 
   2.427 +   engineering process.  As we move forward we will be building more JUNIT test
   2.428 +   that will be executed.  
   2.429 +   
   2.430 +   Our quality assurance team is in the process of building suite of automated 
   2.431 +   test modules to test the UI components.  We have also instructed the quality 
   2.432 +   assurance team that once the UI test are completed that when a new is written 
   2.433 +   we also want a automated test that engineering can run to replicate the problem.
   2.434 +   By having our quality assurance team assist in the automated test genreation 
   2.435 +   we will be able to have a high rate of successfully replicating issues as
   2.436 +   well as have a higher number of automated test.
   2.437 +  </p>
   2.438 + 
   2.439 +</ul>
   2.440 +    
   2.441 +<hr>
   2.442 +<h2>Project and platform dependencies</h2>
   2.443 +<ul>
   2.444 +<p></p>
   2.445 +<font color="gray"><b><a name="answer-dep-nb">Question (dep-nb)</a>:</b><em>
   2.446 +            What other NetBeans projects and modules does this one depend on?
   2.447 +            
   2.448 +        </em></font>
   2.449 +<p></p>
   2.450 +<b>Answer:</b>
   2.451 +   It uses various kinds of API's:
   2.452 +   <ul>
   2.453 +   
   2.454 +<li>
   2.455 +       
   2.456 +<a href="#java-OpenIDE">OpenIDE</a>
   2.457 +       The support class various NetBeans classes.
   2.458 +   </li>
   2.459 +   
   2.460 +<li>
   2.461 +       
   2.462 +<a href="#java-Loaders">Loaders</a>
   2.463 +       Provides the <code>DataObject</code> implementation
   2.464 +   </li>
   2.465 +   
   2.466 +<li>
   2.467 +       
   2.468 +<a href="#java-projectapi">projectapi</a>
   2.469 +       Provides the NetBeans project API.
   2.470 +   </li>
   2.471 +   
   2.472 +<li>
   2.473 +       
   2.474 +<a href="#java-ant-project">ant-project</a>
   2.475 +       Provides the Ant project suppport.
   2.476 +   </li>
   2.477 +   
   2.478 +<li>
   2.479 +       
   2.480 +<a href="#java-projectapi">projectapi</a>
   2.481 +       Provides the project chooser, and customizer support.
   2.482 +   </li>
   2.483 +   
   2.484 +<li>
   2.485 +       
   2.486 +<a href="#java-projectuiapi">projectuiapi</a>
   2.487 +       E.g. <code>Debug</code> uses <code>InputOutput</code>.
   2.488 +   </li>
   2.489 +   
   2.490 +</ul>
   2.491 + 
   2.492 +<p></p>
   2.493 +<font color="gray"><b><a name="answer-dep-non-nb">Question (dep-non-nb)</a>:</b><em>
   2.494 +            What other projects outside NetBeans does this one depend on?
   2.495 +            
   2.496 +            
   2.497 +        </em></font>
   2.498 +<p></p>
   2.499 +<b>Answer:</b>
   2.500 +  
   2.501 +<p>
   2.502 +   Antlr 2.7.2 <br>
   2.503 +   Tom Sawyer version 6.0
   2.504 +  </p>
   2.505 + 
   2.506 +<p></p>
   2.507 +<font color="gray"><b><a name="answer-dep-platform">Question (dep-platform)</a>:</b><em>
   2.508 +            On which platforms does your module run? Does it run in the same
   2.509 +            way on each?
   2.510 +            
   2.511 +        </em></font>
   2.512 +<p></p>
   2.513 +<b>Answer:</b>
   2.514 +  
   2.515 +<p>
   2.516 +   100% pure Java. It should run anywhere.
   2.517 +  </p>
   2.518 + 
   2.519 +<p></p>
   2.520 +<font color="gray"><b><a name="answer-dep-jre">Question (dep-jre)</a>:</b><em>
   2.521 +            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
   2.522 +            
   2.523 +        </em></font>
   2.524 +<p></p>
   2.525 +<b>Answer:</b>
   2.526 +  
   2.527 +<p>
   2.528 +   JRE 1.5
   2.529 +  </p>
   2.530 + 
   2.531 +<p></p>
   2.532 +<font color="gray"><b><a name="answer-dep-jrejdk">Question (dep-jrejdk)</a>:</b><em>
   2.533 +            Do you require the JDK or is the JRE enough?
   2.534 +        </em></font>
   2.535 +<p></p>
   2.536 +<b>Answer:</b>
   2.537 +  
   2.538 +<p>
   2.539 +   The JRE is enough.
   2.540 +  </p>
   2.541 + 
   2.542 +</ul>
   2.543 +
   2.544 +    
   2.545 +<hr>
   2.546 +<h2>Deployment</h2>
   2.547 +<ul>
   2.548 +<p></p>
   2.549 +<font color="gray"><b><a name="answer-deploy-jar">Question (deploy-jar)</a>:</b><em>
   2.550 +            Do you deploy just module JAR file(s) or other files as well?
   2.551 +            
   2.552 +        </em></font>
   2.553 +<p></p>
   2.554 +<b>Answer:</b>
   2.555 +   The module deploys the following jar files into lib/ folder:
   2.556 +   <ul>
   2.557 +   
   2.558 +<li>lib/dom4j/jaxen.jar</li> 
   2.559 +	
   2.560 +<li>lib/dom4j/msv.jar: </li>
   2.561 +	
   2.562 +<li>lib/dom4j/PullParser2.jar: </li>
   2.563 +	
   2.564 +<li>lib/dom4j/relaxngDatatype.jar: </li> 
   2.565 +	
   2.566 +<li>lib/dom4j/saxpath.jar: </li> 
   2.567 +	
   2.568 +<li>lib/dom4j/Tidy.jar: </li>
   2.569 +	
   2.570 +<li>lib/dom4j/xsdlib.jar: </li>
   2.571 +	
   2.572 +<li>lib/junit/junit.jar</li>
   2.573 +   
   2.574 +</ul>
   2.575 + 
   2.576 +<p></p>
   2.577 +<font color="gray"><b><a name="answer-deploy-nbm">Question (deploy-nbm)</a>:</b><em>
   2.578 +            Can you deploy an NBM via the Update Center?
   2.579 +            
   2.580 +        </em></font>
   2.581 +<p></p>
   2.582 +<b>Answer:</b>
   2.583 +  
   2.584 +<p>
   2.585 +   XXX no answer for deploy-nbm
   2.586 +  </p>
   2.587 + 
   2.588 +<p></p>
   2.589 +<font color="gray"><b><a name="answer-deploy-shared">Question (deploy-shared)</a>:</b><em>
   2.590 +            Do you need to be installed in the shared location only, or in the user directory only,
   2.591 +            or can your module be installed anywhere?
   2.592 +            
   2.593 +        </em></font>
   2.594 +<p></p>
   2.595 +<b>Answer:</b>
   2.596 +  
   2.597 +<p>
   2.598 +   Module can be installed any where.
   2.599 +  </p>
   2.600 + 
   2.601 +<p></p>
   2.602 +<font color="gray"><b><a name="answer-deploy-packages">Question (deploy-packages)</a>:</b><em>
   2.603 +            Are packages of your module made inaccessible by not declaring them
   2.604 +            public?
   2.605 +            
   2.606 +            
   2.607 +        </em></font>
   2.608 +<p></p>
   2.609 +<b>Answer:</b>
   2.610 +  
   2.611 +<p>
   2.612 +  Yes. Public packages of J2EE Server API module are specified in module manifest file :
   2.613 +
   2.614 +  <b>com.embarcadero.uml.** </b>
   2.615 +  
   2.616 +</p>
   2.617 + 
   2.618 +<p></p>
   2.619 +<font color="gray"><b><a name="answer-deploy-dependencies">Question (deploy-dependencies)</a>:</b><em>
   2.620 +            What do other modules need to do to declare a dependency on this one?
   2.621 +            
   2.622 +        </em></font>
   2.623 +<p></p>
   2.624 +<b>Answer:</b>
   2.625 +   
   2.626 +<ul>
   2.627 +   
   2.628 +<li>UML Projects - com.sun.tools.ide.uml.project </li>
   2.629 +   
   2.630 +<li>Associate Model Elements - com.sun.tools.ide.modeling.associatewith</li>
   2.631 +   
   2.632 +<li>Rose Import - com.sun.tools.ide.modeling.roseimport</li>
   2.633 +   
   2.634 +<li>Web Report - com.sun.tools.ide.modeling.webreport</li>
   2.635 +   <!--<li>Dependency Analyzer - com.sun.tools.ide.modeling.dependencyanalyzer</li>
   2.636 +   <li>Design Center - com.sun.tools.ide.modeling.designpattern<</li>
   2.637 +   -->
   2.638 +   
   2.639 +<li>Diagram Creator - com.sun.tools.ide.modeling.diagramcreator</li>
   2.640 +   
   2.641 +<li>Documentation Pane - com.sun.tools.ide.modeling.documentation</li>
   2.642 +   
   2.643 +<li>Modeling Drawing Area Control - com.sun.tools.ide.modeling.drawingarea</li>
   2.644 +   
   2.645 +<li>Modeling Source Control - com.sun.tools.ide.modeling.sourcecontrol</li>
   2.646 +   
   2.647 +<li>Requiremetns Framework - com.sun.tools.ide.modeling.requirements</li>
   2.648 +   
   2.649 +<li>Reverse Engineering GUI - com.sun.tools.ide.modeling.regui</li>
   2.650 +   
   2.651 +</ul>
   2.652 + 
   2.653 +</ul>
   2.654 +    
   2.655 +    
   2.656 +<hr>
   2.657 +<h2>Compatibility with environment</h2>
   2.658 +<ul>
   2.659 +<p></p>
   2.660 +<font color="gray"><b><a name="answer-compat-i18n">Question (compat-i18n)</a>:</b><em>
   2.661 +            Is your module correctly internationalized?
   2.662 +            
   2.663 +        </em></font>
   2.664 +<p></p>
   2.665 +<b>Answer:</b>
   2.666 +  
   2.667 +<p>
   2.668 +   Yes
   2.669 +  </p>
   2.670 + 
   2.671 +<p></p>
   2.672 +<font color="gray"><b><a name="answer-compat-standards">Question (compat-standards)</a>:</b><em>
   2.673 +            Does the module implement or define any standards? Is the 
   2.674 +            implementation exact or does it deviate somehow?
   2.675 +        </em></font>
   2.676 +<p></p>
   2.677 +<b>Answer:</b>
   2.678 +  
   2.679 +<p>
   2.680 +   The module implements the MOF 2.0/UML 2.0 as of the Jan 2003 version of the 
   2.681 +   OMG specification.
   2.682 +  </p>
   2.683 + 
   2.684 +<p></p>
   2.685 +<font color="gray"><b><a name="answer-compat-version">Question (compat-version)</a>:</b><em>
   2.686 +            Can your module coexist with earlier and future
   2.687 +            versions of itself? Can you correctly read all old settings? Will future
   2.688 +            versions be able to read your current settings? Can you read
   2.689 +            or politely ignore settings stored by a future version?
   2.690 +            
   2.691 +            
   2.692 +        </em></font>
   2.693 +<p></p>
   2.694 +<b>Answer:</b>
   2.695 +  
   2.696 +<p>
   2.697 +   This version will be compatable with the previous version of the modeling
   2.698 +   product.  In the future we will be moving our configration file into the 
   2.699 +   NetBeans layer mechanism.
   2.700 +  </p>
   2.701 + 
   2.702 +</ul>
   2.703 +    
   2.704 +    
   2.705 +<hr>
   2.706 +<h2>Access to resources</h2>
   2.707 +<ul>
   2.708 +<p></p>
   2.709 +<font color="gray"><b><a name="answer-resources-file">Question (resources-file)</a>:</b><em>
   2.710 +            Does your module use <code>java.io.File</code> directly?
   2.711 +            
   2.712 +            
   2.713 +        </em></font>
   2.714 +<p></p>
   2.715 +<b>Answer:</b>
   2.716 +  
   2.717 +<p>
   2.718 +   We use Files when ever reading in configuration files.  We also use the 
   2.719 +   File class when reading in metadata and diagram files.
   2.720 +  </p>
   2.721 + 
   2.722 +<p></p>
   2.723 +<font color="gray"><b><a name="answer-resources-layer">Question (resources-layer)</a>:</b><em>
   2.724 +            Does your module provide own layer? Does it create any files or
   2.725 +            folders in it? What it is trying to communicate by that and with which 
   2.726 +            components?
   2.727 +            
   2.728 +            
   2.729 +        </em></font>
   2.730 +<p></p>
   2.731 +<b>Answer:</b>
   2.732 +  
   2.733 +<p>
   2.734 +   Yes.  We use the configuration files and folders to allow modules writers add context menus, 
   2.735 +   to extend the Modeling components.
   2.736 +  </p>
   2.737 + 
   2.738 +<p></p>
   2.739 +<font color="gray"><b><a name="answer-resources-read">Question (resources-read)</a>:</b><em>
   2.740 +            Does your module read any resources from layers? For what purpose?
   2.741 +            
   2.742 +            
   2.743 +        </em></font>
   2.744 +<p></p>
   2.745 +<b>Answer:</b>
   2.746 +  
   2.747 +<p>
   2.748 +   Yes.  We use the configuration files and folders to allow modules writers add context menus, 
   2.749 +   to extend the Modeling components.
   2.750 +  </p>
   2.751 + 
   2.752 +<p></p>
   2.753 +<font color="gray"><b><a name="answer-resources-mask">Question (resources-mask)</a>:</b><em>
   2.754 +            Does your module mask/hide/override any resources provided by other modules in
   2.755 +            their layers?
   2.756 +            
   2.757 +            
   2.758 +        </em></font>
   2.759 +<p></p>
   2.760 +<b>Answer:</b>
   2.761 +  
   2.762 +<p>
   2.763 +   No
   2.764 +  </p>
   2.765 + 
   2.766 +</ul>
   2.767 +
   2.768 +    
   2.769 +    
   2.770 +<hr>
   2.771 +<h2>Lookup of components</h2>
   2.772 +<ul>
   2.773 +<p></p>
   2.774 +<font color="gray"><b><a name="answer-lookup-lookup">Question (lookup-lookup)</a>:</b><em>
   2.775 +            Does your module use <code>org.openide.util.Lookup</code>
   2.776 +            or any similar technology to find any components to communicate with? Which ones?
   2.777 +            
   2.778 +            
   2.779 +        </em></font>
   2.780 +<p></p>
   2.781 +<b>Answer:</b>
   2.782 +  
   2.783 +<p>
   2.784 +   We have added IElement instances to lookup of our nodes.  Our UML project type also creates a lookup and adds 
   2.785 +   the standard project classes to the lookup.  We also add a UMLHelper to the lookup to allow modules writers to
   2.786 +   interact with tha model.
   2.787 +  </p>
   2.788 + 
   2.789 +<p></p>
   2.790 +<font color="gray"><b><a name="answer-lookup-register">Question (lookup-register)</a>:</b><em>
   2.791 +            Do you register anything into lookup for other code to find?
   2.792 +            
   2.793 +        </em></font>
   2.794 +<p></p>
   2.795 +<b>Answer:</b>
   2.796 +  
   2.797 +<p>
   2.798 +   We have added IElement instances to lookup of our nodes.  Our UML project type also creates a lookup and adds 
   2.799 +   the standard project classes to the lookup.  We also add a UMLHelper to the lookup to allow modules writers to
   2.800 +   interact with tha model.
   2.801 +  </p>
   2.802 + 
   2.803 +<p></p>
   2.804 +<font color="gray"><b><a name="answer-lookup-remove">Question (lookup-remove)</a>:</b><em>
   2.805 +            Do you remove entries of other modules from lookup?
   2.806 +            
   2.807 +        </em></font>
   2.808 +<p></p>
   2.809 +<b>Answer:</b>
   2.810 +  
   2.811 +<p>
   2.812 +   No
   2.813 +  </p>
   2.814 + 
   2.815 +</ul>
   2.816 +
   2.817 +    
   2.818 +    <!-- classification of interfaces -->
   2.819 +    
   2.820 +    <!-- package names -->
   2.821 +    
   2.822 +    
   2.823 +    
   2.824 +<hr>
   2.825 +<h2>Execution Environment</h2>
   2.826 +<ul>
   2.827 +<p></p>
   2.828 +<font color="gray"><b><a name="answer-exec-property">Question (exec-property)</a>:</b><em>
   2.829 +            Is execution of your code influenced by any environment or
   2.830 +            Java system (<code>System.getProperty</code>) property?
   2.831 +            
   2.832 +            
   2.833 +        </em></font>
   2.834 +<p></p>
   2.835 +<b>Answer:</b>
   2.836 + 
   2.837 +<ul>
   2.838 +            
   2.839 +<li>
   2.840 +                
   2.841 +<a href="#property-embarcadero.home-dir">embarcadero.home-dir</a>
   2.842 +            - 
   2.843 +                    Sets the directory that will contain the .uml configuration files.
   2.844 +                
   2.845 +            </li>
   2.846 +        
   2.847 +</ul>
   2.848 +
   2.849 +  
   2.850 +<p>
   2.851 +  
   2.852 +</p>
   2.853 + 
   2.854 +<p></p>
   2.855 +<font color="gray"><b><a name="answer-exec-component">Question (exec-component)</a>:</b><em>
   2.856 +            Is execution of your code influenced by any (string) property
   2.857 +            of any of your components?
   2.858 +            
   2.859 +            
   2.860 +        </em></font>
   2.861 +<p></p>
   2.862 +<b>Answer:</b>
   2.863 +  
   2.864 +<p>
   2.865 +   No
   2.866 +  </p>
   2.867 + 
   2.868 +<p></p>
   2.869 +<font color="gray"><b><a name="answer-exec-ant-tasks">Question (exec-ant-tasks)</a>:</b><em>
   2.870 +            Do you define or register any ant tasks that other can use?
   2.871 +            
   2.872 +            
   2.873 +        </em></font>
   2.874 +<p></p>
   2.875 +<b>Answer:</b>
   2.876 +  
   2.877 +<p>
   2.878 +   We use the Antlr ant task that ships as an optional task in the Ant distribution.
   2.879 +  </p>
   2.880 + 
   2.881 +<p></p>
   2.882 +<font color="gray"><b><a name="answer-exec-classloader">Question (exec-classloader)</a>:</b><em>
   2.883 +            Does your code create its own class loader(s)?
   2.884 +            
   2.885 +        </em></font>
   2.886 +<p></p>
   2.887 +<b>Answer:</b>
   2.888 +  
   2.889 +<p>
   2.890 +   No
   2.891 +  </p>
   2.892 + 
   2.893 +<p></p>
   2.894 +<font color="gray"><b><a name="answer-exec-reflection">Question (exec-reflection)</a>:</b><em>
   2.895 +            Does your code use Java Reflection to execute other code?
   2.896 +            
   2.897 +        </em></font>
   2.898 +<p></p>
   2.899 +<b>Answer:</b>
   2.900 +  
   2.901 +<p>
   2.902 +   The UML code is very dynamic.  We use configuration files to determine how to populate our tree,
   2.903 +   property editor, edit control, and preferences.  The configuration file specifies that methods that should
   2.904 +   be used to retrieve, modify, and remove items from a given object.
   2.905 +  </p>
   2.906 + 
   2.907 +<p></p>
   2.908 +<font color="gray"><b><a name="answer-exec-privateaccess">Question (exec-privateaccess)</a>:</b><em>
   2.909 +            Are you aware of any other parts of the system calling some of 
   2.910 +            your methods by reflection?
   2.911 +            
   2.912 +        </em></font>
   2.913 +<p></p>
   2.914 +<b>Answer:</b>
   2.915 +  
   2.916 +<p>
   2.917 +   No
   2.918 +  </p>
   2.919 + 
   2.920 +<p></p>
   2.921 +<font color="gray"><b><a name="answer-exec-process">Question (exec-process)</a>:</b><em>
   2.922 +            Do you execute an external process from your module? How do you ensure
   2.923 +            that the result is the same on different platforms? Do you parse output?
   2.924 +            Do you depend on result code?
   2.925 +            
   2.926 +        </em></font>
   2.927 +<p></p>
   2.928 +<b>Answer:</b>
   2.929 +  
   2.930 +<p>
   2.931 +   No
   2.932 +  </p>
   2.933 + 
   2.934 +<p></p>
   2.935 +<font color="gray"><b><a name="answer-exec-introspection">Question (exec-introspection)</a>:</b><em>
   2.936 +            Does your module use any kind of runtime type information (<code>instanceof</code>,
   2.937 +            work with <code>java.lang.Class</code>, etc.)?
   2.938 +            
   2.939 +        </em></font>
   2.940 +<p></p>
   2.941 +<b>Answer:</b>
   2.942 +  
   2.943 +<p>
   2.944 +   No
   2.945 +  </p>
   2.946 + 
   2.947 +<p></p>
   2.948 +<font color="gray"><b><a name="answer-exec-threading">Question (exec-threading)</a>:</b><em>
   2.949 +            What threading models, if any, does your module adhere to?
   2.950 +            
   2.951 +        </em></font>
   2.952 +<p></p>
   2.953 +<b>Answer:</b>
   2.954 +  
   2.955 +<p>
   2.956 +   We call the VCS API that is not able to run on the UI thread with out locking up the application.  
   2.957 +   To solve this problem our VCS module has started a thread and executes all VCS API commands
   2.958 +   on the thread.
   2.959 +  </p>
   2.960 + 
   2.961 +<p></p>
   2.962 +<font color="gray"><b><a name="answer-security-policy">Question (security-policy)</a>:</b><em>
   2.963 +            Does your functionality require modifications to the standard policy file?
   2.964 +            
   2.965 +        </em></font>
   2.966 +<p></p>
   2.967 +<b>Answer:</b>
   2.968 +  
   2.969 +<p>
   2.970 +   No
   2.971 +  </p>
   2.972 + 
   2.973 +<p></p>
   2.974 +<font color="gray"><b><a name="answer-security-grant">Question (security-grant)</a>:</b><em>
   2.975 +            Does your code grant additional rights to some other code?
   2.976 +            
   2.977 +        </em></font>
   2.978 +<p></p>
   2.979 +<b>Answer:</b>
   2.980 +  
   2.981 +<p>
   2.982 +   No
   2.983 +  </p>
   2.984 + 
   2.985 +</ul>
   2.986 +    
   2.987 +    
   2.988 +<hr>
   2.989 +<h2>Format of files and protocols</h2>
   2.990 +<ul>
   2.991 +<p></p>
   2.992 +<font color="gray"><b><a name="answer-format-types">Question (format-types)</a>:</b><em>
   2.993 +            Which protocols and file formats (if any) does your module read or write on disk,
   2.994 +            or transmit or receive over the network? Do you generate an ant build script?
   2.995 +            Can it be edited and modified? 
   2.996 +            
   2.997 +            
   2.998 +        </em></font>
   2.999 +<p></p>
  2.1000 +<b>Answer:</b>
  2.1001 +  
  2.1002 +<p>
  2.1003 +   We store our meta model information in files that have an etd extension.  We store our diagrams in
  2.1004 +   that end with the extensions etlp, and etld.  Also when we version control model elements we 
  2.1005 +   store the metamodel information in a files with the extension etx.
  2.1006 +  </p>
  2.1007 + 
  2.1008 +<p></p>
  2.1009 +<font color="gray"><b><a name="answer-format-dnd">Question (format-dnd)</a>:</b><em>
  2.1010 +            Which protocols (if any) does your code understand during Drag &amp; Drop?
  2.1011 +            
  2.1012 +        </em></font>
  2.1013 +<p></p>
  2.1014 +<b>Answer:</b>
  2.1015 +  
  2.1016 +<p>
  2.1017 +   DnDConstants.ACTION_COPY, DnDConstants.ACTION_MOVE
  2.1018 +  </p>
  2.1019 + 
  2.1020 +<p></p>
  2.1021 +<font color="gray"><b><a name="answer-format-clipboard">Question (format-clipboard)</a>:</b><em>
  2.1022 +            Which data flavors (if any) does your code read from or insert to
  2.1023 +            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
  2.1024 +            
  2.1025 +            
  2.1026 +        </em></font>
  2.1027 +<p></p>
  2.1028 +<b>Answer:</b>
  2.1029 +  
  2.1030 +<p>
  2.1031 +   To perform DnD between the project tree and the diagrams we use a transferable that 
  2.1032 +   keeps track of the model elements that are selected.  We provide our own data flavor
  2.1033 +   that can be used to retrieve the model elements that are the target of the operation.
  2.1034 +   <br>
  2.1035 +<br>
  2.1036 +   The transferable also implements the string flavor that can be used to pass the 
  2.1037 +   model element information.  The string format is a XML string.
  2.1038 +   <br>
  2.1039 +<br>
  2.1040 +   We use the same transferable when performing the copy and paste operations.   
  2.1041 +  </p>
  2.1042 + 
  2.1043 +</ul>
  2.1044 +
  2.1045 +    
  2.1046 +    
  2.1047 +<hr>
  2.1048 +<h2>Performance and Scalability</h2>
  2.1049 +<ul>
  2.1050 +<p></p>
  2.1051 +<font color="gray"><b><a name="answer-perf-startup">Question (perf-startup)</a>:</b><em>
  2.1052 +            Does your module run any code on startup?
  2.1053 +        </em></font>
  2.1054 +<p></p>
  2.1055 +<b>Answer:</b>
  2.1056 +  
  2.1057 +<p>
  2.1058 +   UML initializes the UML product durning the module startup.
  2.1059 +  </p>
  2.1060 + 
  2.1061 +<p></p>
  2.1062 +<font color="gray"><b><a name="answer-perf-exit">Question (perf-exit)</a>:</b><em>
  2.1063 +            Does your module run any code on exit?
  2.1064 +        </em></font>
  2.1065 +<p></p>
  2.1066 +<b>Answer:</b>
  2.1067 +  
  2.1068 +<p>
  2.1069 +   No
  2.1070 +  </p>
  2.1071 + 
  2.1072 +<p></p>
  2.1073 +<font color="gray"><b><a name="answer-perf-scale">Question (perf-scale)</a>:</b><em>
  2.1074 +            Which external criteria influence the performance of your
  2.1075 +            program (size of file in editor, number of files in menu, 
  2.1076 +            in source directory, etc.) and how well your code scales?
  2.1077 +            
  2.1078 +        </em></font>
  2.1079 +<p></p>
  2.1080 +<b>Answer:</b>
  2.1081 +  
  2.1082 +<p>
  2.1083 +   No
  2.1084 +  </p>
  2.1085 + 
  2.1086 +<p></p>
  2.1087 +<font color="gray"><b><a name="answer-perf-limit">Question (perf-limit)</a>:</b><em>
  2.1088 +            Are there any hard-coded or practical limits in the number or size of
  2.1089 +            elements your code can handle?
  2.1090 +        </em></font>
  2.1091 +<p></p>
  2.1092 +<b>Answer:</b>
  2.1093 +  
  2.1094 +<p>
  2.1095 +   No
  2.1096 +  </p>
  2.1097 + 
  2.1098 +<p></p>
  2.1099 +<font color="gray"><b><a name="answer-perf-mem">Question (perf-mem)</a>:</b><em>
  2.1100 +            How much memory does your component consume? Estimate
  2.1101 +            with a relation to the number of windows, etc.
  2.1102 +        </em></font>
  2.1103 +<p></p>
  2.1104 +<b>Answer:</b>
  2.1105 +  
  2.1106 +<p>
  2.1107 +   The size of memory that our module consumes depends on the size of the model.  The bigger the
  2.1108 +   model the bigger the XML repository.
  2.1109 +  </p>
  2.1110 + 
  2.1111 +<p></p>
  2.1112 +<font color="gray"><b><a name="answer-perf-wakeup">Question (perf-wakeup)</a>:</b><em>
  2.1113 +            Does any piece of your code wake up periodically and do something
  2.1114 +            even when the system is otherwise idle (no user interaction)?
  2.1115 +        </em></font>
  2.1116 +<p></p>
  2.1117 +<b>Answer:</b>
  2.1118 +  
  2.1119 +<p>
  2.1120 +   No
  2.1121 +  </p>
  2.1122 + 
  2.1123 +<p></p>
  2.1124 +<font color="gray"><b><a name="answer-perf-progress">Question (perf-progress)</a>:</b><em>
  2.1125 +            Does your module execute any long-running tasks?
  2.1126 +            
  2.1127 +            
  2.1128 +        </em></font>
  2.1129 +<p></p>
  2.1130 +<b>Answer:</b>
  2.1131 +  
  2.1132 +<p>
  2.1133 +   Create Diagram form selected, and Sequence Diagram Reverse Engineering can take a while to 
  2.1134 +   complete.
  2.1135 +  </p>
  2.1136 + 
  2.1137 +<p></p>
  2.1138 +<font color="gray"><b><a name="answer-perf-huge_dialogs">Question (perf-huge_dialogs)</a>:</b><em>
  2.1139 +            Does your module contain any dialogs or wizards with a large number of
  2.1140 +            GUI controls such as combo boxes, lists, trees, or text areas?
  2.1141 +        </em></font>
  2.1142 +<p></p>
  2.1143 +<b>Answer:</b>
  2.1144 +  
  2.1145 +<p>
  2.1146 +   No
  2.1147 +  </p>
  2.1148 + 
  2.1149 +<p></p>
  2.1150 +<font color="gray"><b><a name="answer-perf-menus">Question (perf-menus)</a>:</b><em>
  2.1151 +            Does your module use dynamically updated context menus, or
  2.1152 +            context-sensitive actions with complicated and slow enablement logic?
  2.1153 +            
  2.1154 +        </em></font>
  2.1155 +<p></p>
  2.1156 +<b>Answer:</b>
  2.1157 +  
  2.1158 +<p>
  2.1159 +   No
  2.1160 +  </p>
  2.1161 + 
  2.1162 +<p></p>
  2.1163 +<font color="gray"><b><a name="answer-perf-spi">Question (perf-spi)</a>:</b><em>
  2.1164 +            How the performance of the plugged in code will be enforced?
  2.1165 +            
  2.1166 +        </em></font>
  2.1167 +<p></p>
  2.1168 +<b>Answer:</b>
  2.1169 +  
  2.1170 +<p>
  2.1171 +   Currently we do not have any enforcement.
  2.1172 +  </p>
  2.1173 + 
  2.1174 +</ul>
  2.1175 +    
  2.1176 +    
  2.1177 +    <!-- security -->
  2.1178 +    <!-- recovery -->
  2.1179 +    
  2.1180 +
  2.1181 +</api-questions>
  2.1182 +
  2.1183 +
  2.1184 +
  2.1185 +<!--
  2.1186 +        <question id="arch-overall" when="init">
  2.1187 +            Describe the overall architecture. 
  2.1188 +            <hint>
  2.1189 +            What will be API for 
  2.1190 +            <a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
  2.1191 +                clients and what support API</a>? 
  2.1192 +            What parts will be pluggable?
  2.1193 +            How will plug-ins be registered? Please use <code>&lt;api type="export"/&gt;</code>
  2.1194 +            to describe your general APIs.
  2.1195 +            If possible please provide 
  2.1196 +            simple diagrams. 
  2.1197 +            </hint>
  2.1198 +        </question>
  2.1199 +-->
  2.1200 + 
  2.1201 +
  2.1202 +
  2.1203 +
  2.1204 +<!--
  2.1205 +        <question id="arch-quality" when="init">
  2.1206 +            How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
  2.1207 +            of your code be tested and 
  2.1208 +            how are future regressions going to be prevented?
  2.1209 +            <hint>
  2.1210 +            What kind of testing do
  2.1211 +            you want to use? How much functionality, in which areas,
  2.1212 +            should be covered by the tests? 
  2.1213 +            </hint>
  2.1214 +        </question>
  2.1215 +-->
  2.1216 + 
  2.1217 +
  2.1218 +
  2.1219 +
  2.1220 +<!--
  2.1221 +        <question id="arch-time" when="init">
  2.1222 +            What are the time estimates of the work?
  2.1223 +            <hint>
  2.1224 +            Please express your estimates of how long the design, implementation,
  2.1225 +            stabilization are likely to last. How many people will be needed to
  2.1226 +            implement this and what is the expected milestone by which the work should be 
  2.1227 +            ready?
  2.1228 +            </hint>
  2.1229 +        </question>
  2.1230 +-->
  2.1231 + 
  2.1232 +
  2.1233 +
  2.1234 +
  2.1235 +<!--
  2.1236 +        <question id="arch-usecases" when="init">
  2.1237 +            <hint>
  2.1238 +                Content of this answer will be displayed as part of page at
  2.1239 +                http://www.netbeans.org/download/dev/javadoc/usecases.html 
  2.1240 +                You can use tags &lt;usecase name="name&gt; regular html description &lt;/usecase&gt;
  2.1241 +                and if you want to use an URL you can prefix if with @TOP@ to begin
  2.1242 +                at the root of your javadoc
  2.1243 +            </hint>
  2.1244 +        
  2.1245 +            Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
  2.1246 +            use cases</a> of the new API. Who will use it under
  2.1247 +            what circumstances? What kind of code would typically need to be written
  2.1248 +            to use the module?
  2.1249 +        </question>
  2.1250 +-->
  2.1251 + 
  2.1252 +
  2.1253 +
  2.1254 +
  2.1255 +<!--
  2.1256 +        <question id="arch-what" when="init">
  2.1257 +            What is this project good for?
  2.1258 +            <hint>
  2.1259 +            Please provide here a few lines describing the project, 
  2.1260 +            what problem it should solve, provide links to documentation, 
  2.1261 +            specifications, etc.
  2.1262 +            </hint>
  2.1263 +        </question>
  2.1264 +-->
  2.1265 + 
  2.1266 +
  2.1267 +
  2.1268 +
  2.1269 +<!--
  2.1270 +        <question id="compat-i18n" when="impl">
  2.1271 +            Is your module correctly internationalized?
  2.1272 +            <hint>
  2.1273 +            Correct internationalization means that it obeys instructions 
  2.1274 +            at <a href="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/i18n-branding.html">
  2.1275 +            NetBeans I18N pages</a>.
  2.1276 +            </hint>
  2.1277 +        </question>
  2.1278 +-->
  2.1279 + 
  2.1280 +
  2.1281 +
  2.1282 +
  2.1283 +<!--
  2.1284 +        <question id="compat-standards" when="init">
  2.1285 +            Does the module implement or define any standards? Is the 
  2.1286 +            implementation exact or does it deviate somehow?
  2.1287 +        </question>
  2.1288 +-->
  2.1289 + 
  2.1290 +
  2.1291 +
  2.1292 +
  2.1293 +<!--
  2.1294 +        <question id="compat-version" when="impl">
  2.1295 +            Can your module coexist with earlier and future
  2.1296 +            versions of itself? Can you correctly read all old settings? Will future
  2.1297 +            versions be able to read your current settings? Can you read
  2.1298 +            or politely ignore settings stored by a future version?
  2.1299 +            
  2.1300 +            <hint>
  2.1301 +            Very helpful for reading settings is to store version number
  2.1302 +            there, so future versions can decide whether how to read/convert
  2.1303 +            the settings and older versions can ignore the new ones.
  2.1304 +            </hint>
  2.1305 +        </question>
  2.1306 +-->
  2.1307 + 
  2.1308 +
  2.1309 +
  2.1310 +
  2.1311 +<!--
  2.1312 +        <question id="dep-jre" when="final">
  2.1313 +            Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
  2.1314 +            <hint>
  2.1315 +            It is expected that if your module runs on 1.x that it will run 
  2.1316 +            on 1.x+1 if no, state that please. Also describe here cases where
  2.1317 +            you run different code on different versions of JRE and why.
  2.1318 +            </hint>
  2.1319 +        </question>
  2.1320 +-->
  2.1321 + 
  2.1322 +
  2.1323 +
  2.1324 +
  2.1325 +<!--
  2.1326 +        <question id="dep-jrejdk" when="final">
  2.1327 +            Do you require the JDK or is the JRE enough?
  2.1328 +        </question>
  2.1329 +-->
  2.1330 + 
  2.1331 +
  2.1332 +
  2.1333 +
  2.1334 +<!--
  2.1335 +        <question id="dep-nb" when="init">
  2.1336 +            What other NetBeans projects and modules does this one depend on?
  2.1337 +            <hint>
  2.1338 +            If you want, describe such projects as imported APIs using
  2.1339 +            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</code>
  2.1340 +            </hint>
  2.1341 +        </question>
  2.1342 +-->
  2.1343 + 
  2.1344 +
  2.1345 +
  2.1346 +
  2.1347 +<!--
  2.1348 +        <question id="dep-non-nb" when="init">
  2.1349 +            What other projects outside NetBeans does this one depend on?
  2.1350 +            
  2.1351 +            <hint>
  2.1352 +            Some non-NetBeans projects are packaged as NetBeans modules
  2.1353 +            (see <a href="http://libs.netbeans.org/">libraries</a>) and
  2.1354 +            it is preferred to use this approach when more modules may
  2.1355 +            depend on such third-party library.
  2.1356 +            </hint>
  2.1357 +        </question>
  2.1358 +-->
  2.1359 + 
  2.1360 +
  2.1361 +
  2.1362 +
  2.1363 +<!--
  2.1364 +        <question id="dep-platform" when="init">
  2.1365 +            On which platforms does your module run? Does it run in the same
  2.1366 +            way on each?
  2.1367 +            <hint>
  2.1368 +            If your module is using JNI or deals with special differences of
  2.1369 +            OSes like filesystems, etc. please describe here what they are.
  2.1370 +            </hint>
  2.1371 +        </question>
  2.1372 +-->
  2.1373 + 
  2.1374 +
  2.1375 +
  2.1376 +
  2.1377 +<!--
  2.1378 +        <question id="deploy-dependencies" when="final">
  2.1379 +            What do other modules need to do to declare a dependency on this one?
  2.1380 +            <hint>
  2.1381 +                Provide a sample of the actual lines you would add to a module manifest
  2.1382 +                to declare a dependency, for example using OpenIDE-Module-Module-Dependencies
  2.1383 +                or OpenIDE-Module-Requires. You may use the magic token @SPECIFICATION-VERSION@
  2.1384 +                to represent the current specification version of the module.
  2.1385 +            </hint>
  2.1386 +        </question>
  2.1387 +-->
  2.1388 + 
  2.1389 +
  2.1390 +
  2.1391 +
  2.1392 +<!--
  2.1393 +        <question id="deploy-jar" when="impl">
  2.1394 +            Do you deploy just module JAR file(s) or other files as well?
  2.1395 +            <hint>
  2.1396 +            Usually a module consist of one JAR file (perhaps with Class-Path
  2.1397 +            extensions) and also a configuration file that enables it. If you
  2.1398 +            have any other files, use
  2.1399 +            &lt;api group="java.io.File" name="yourname" type="export" category="friend"&gt;...&lt;/api&gt;
  2.1400 +            to define the location, name and stability of your files (of course
  2.1401 +            changing "yourname" and "friend" to suit your needs).
  2.1402 +            
  2.1403 +            If it uses more than one JAR, describe where they are located, how
  2.1404 +            they refer to each other. 
  2.1405 +            If it consist of module JAR(s) and other files, please describe
  2.1406 +            what is their purpose, why other files are necessary. Please 
  2.1407 +            make sure that installation/uninstallation leaves the system 
  2.1408 +            in state as it was before installation.
  2.1409 +            </hint>
  2.1410 +        </question>
  2.1411 +-->
  2.1412 + 
  2.1413 +
  2.1414 +
  2.1415 +
  2.1416 +<!--
  2.1417 +        <question id="deploy-nbm" when="impl">
  2.1418 +            Can you deploy an NBM via the Update Center?
  2.1419 +            <hint>
  2.1420 +            If not why?
  2.1421 +            </hint>
  2.1422 +        </question>
  2.1423 +-->
  2.1424 + 
  2.1425 +
  2.1426 +
  2.1427 +
  2.1428 +<!--
  2.1429 +        <question id="deploy-packages" when="init">
  2.1430 +            Are packages of your module made inaccessible by not declaring them
  2.1431 +            public?
  2.1432 +            
  2.1433 +            <hint>
  2.1434 +            NetBeans module system allows restriction of access rights to
  2.1435 +            public classes of your module from other modules. This prevents
  2.1436 +            unwanted dependencies of others on your code and should be used
  2.1437 +            whenever possible (<a href="http://www.netbeans.org/download/javadoc/OpenAPIs/org/openide/doc-files/upgrade.html#3.4-public-packages">
  2.1438 +            public packages
  2.1439 +            </a>). If you do not restrict access to your classes you are
  2.1440 +            making it too easy for other people to misuse your implementation
  2.1441 +            details, that is why you should have good reason for not 
  2.1442 +            restricting package access.
  2.1443 +            </hint>
  2.1444 +        </question>
  2.1445 +-->
  2.1446 + 
  2.1447 +
  2.1448 +
  2.1449 +
  2.1450 +<!--
  2.1451 +        <question id="deploy-shared" when="final">
  2.1452 +            Do you need to be installed in the shared location only, or in the user directory only,
  2.1453 +            or can your module be installed anywhere?
  2.1454 +            <hint>
  2.1455 +            Installation location shall not matter, if it does explain why.
  2.1456 +            Consider also whether <code>InstalledFileLocator</code> can help.
  2.1457 +            </hint>
  2.1458 +        </question>
  2.1459 +-->
  2.1460 + 
  2.1461 +
  2.1462 +
  2.1463 +
  2.1464 +<!--
  2.1465 +        <question id="exec-ant-tasks" when="impl">
  2.1466 +            Do you define or register any ant tasks that other can use?
  2.1467 +            
  2.1468 +            <hint>
  2.1469 +            If you provide an ant task that users can use, you need to be very
  2.1470 +            careful about its syntax and behaviour, as it most likely forms an
  2.1471 +	          API for end users and as there is a lot of end users, their reaction
  2.1472 +            when such API gets broken can be pretty strong.
  2.1473 +            </hint>
  2.1474 +        </question>
  2.1475 +-->
  2.1476 + 
  2.1477 +
  2.1478 +
  2.1479 +
  2.1480 +<!--
  2.1481 +        <question id="exec-classloader" when="impl">
  2.1482 +            Does your code create its own class loader(s)?
  2.1483 +            <hint>
  2.1484 +            A bit unusual. Please explain why and what for.
  2.1485 +            </hint>
  2.1486 +        </question>
  2.1487 +-->
  2.1488 + 
  2.1489 +
  2.1490 +
  2.1491 +
  2.1492 +<!--
  2.1493 +        <question id="exec-component" when="impl">
  2.1494 +            Is execution of your code influenced by any (string) property
  2.1495 +            of any of your components?
  2.1496 +            
  2.1497 +            <hint>
  2.1498 +            Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
  2.1499 +            or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
  2.1500 +            a behavior of some code. This of course forms an interface that should
  2.1501 +            be documented. Also if one depends on some interface that an object
  2.1502 +            implements (<code>component instanceof Runnable</code>) that forms an
  2.1503 +            API as well.
  2.1504 +            </hint>
  2.1505 +        </question>
  2.1506 +-->
  2.1507 + 
  2.1508 +
  2.1509 +
  2.1510 +
  2.1511 +<!--
  2.1512 +        <question id="exec-introspection" when="impl">
  2.1513 +            Does your module use any kind of runtime type information (<code>instanceof</code>,
  2.1514 +            work with <code>java.lang.Class</code>, etc.)?
  2.1515 +            <hint>
  2.1516 +            Check for cases when you have an object of type A and you also
  2.1517 +            expect it to (possibly) be of type B and do some special action. That
  2.1518 +            should be documented. The same applies on operations in meta-level
  2.1519 +            (Class.isInstance(...), Class.isAssignableFrom(...), etc.).
  2.1520 +            </hint>
  2.1521 +        </question>
  2.1522 +-->
  2.1523 + 
  2.1524 +
  2.1525 +
  2.1526 +
  2.1527 +<!--
  2.1528 +        <question id="exec-privateaccess" when="final">
  2.1529 +            Are you aware of any other parts of the system calling some of 
  2.1530 +            your methods by reflection?
  2.1531 +            <hint>
  2.1532 +            If so, describe the "contract" as an API. Likely private or friend one, but
  2.1533 +            still API and consider rewrite of it.
  2.1534 +            </hint>
  2.1535 +        </question>
  2.1536 +-->
  2.1537 + 
  2.1538 +
  2.1539 +
  2.1540 +
  2.1541 +<!--
  2.1542 +        <question id="exec-process" when="impl">
  2.1543 +            Do you execute an external process from your module? How do you ensure
  2.1544 +            that the result is the same on different platforms? Do you parse output?
  2.1545 +            Do you depend on result code?
  2.1546 +            <hint>
  2.1547 +            If you feed an input, parse the output please declare that as an API.
  2.1548 +            </hint>
  2.1549 +        </question>
  2.1550 +-->
  2.1551 + 
  2.1552 +
  2.1553 +
  2.1554 +
  2.1555 +<!--
  2.1556 +        <question id="exec-property" when="impl">
  2.1557 +            Is execution of your code influenced by any environment or
  2.1558 +            Java system (<code>System.getProperty</code>) property?
  2.1559 +            
  2.1560 +            <hint>
  2.1561 +            If there is a property that can change the behavior of your 
  2.1562 +            code, somebody will likely use it. You should describe what it does 
  2.1563 +            and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
  2.1564 +            of this API. You may use
  2.1565 +            <pre>
  2.1566 +                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
  2.1567 +                    description of the property, where it is used, what it influence, etc.
  2.1568 +                &lt;/api&gt;            
  2.1569 +            </pre>
  2.1570 +            </hint>
  2.1571 +        </question>
  2.1572 +-->
  2.1573 + 
  2.1574 +
  2.1575 +
  2.1576 +
  2.1577 +<!--
  2.1578 +        <question id="exec-reflection" when="impl">
  2.1579 +            Does your code use Java Reflection to execute other code?
  2.1580 +            <hint>
  2.1581 +            This usually indicates a missing or insufficient API in the other
  2.1582 +            part of the system. If the other side is not aware of your dependency
  2.1583 +            this contract can be easily broken.
  2.1584 +            </hint>
  2.1585 +        </question>
  2.1586 +-->
  2.1587 + 
  2.1588 +
  2.1589 +
  2.1590 +
  2.1591 +<!--
  2.1592 +        <question id="exec-threading" when="impl">
  2.1593 +            What threading models, if any, does your module adhere to?
  2.1594 +            <hint>
  2.1595 +                If your module calls foreign APIs which have a specific threading model,
  2.1596 +                indicate how you comply with the requirements for multithreaded access
  2.1597 +                (synchronization, mutexes, etc.) applicable to those APIs.
  2.1598 +                If your module defines any APIs, or has complex internal structures
  2.1599 +                that might be used from multiple threads, declare how you protect
  2.1600 +                data against concurrent access, race conditions, deadlocks, etc.,
  2.1601 +                and whether such rules are enforced by runtime warnings, errors, assertions, etc.
  2.1602 +                Examples: a class might be non-thread-safe (like Java Collections); might
  2.1603 +                be fully thread-safe (internal locking); might require access through a mutex
  2.1604 +                (and may or may not automatically acquire that mutex on behalf of a client method);
  2.1605 +                might be able to run only in the event queue; etc.
  2.1606 +                Also describe when any events are fired: synchronously, asynchronously, etc.
  2.1607 +                Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
  2.1608 +            </hint>
  2.1609 +        </question>
  2.1610 +-->
  2.1611 + 
  2.1612 +
  2.1613 +
  2.1614 +
  2.1615 +<!--
  2.1616 +        <question id="format-clipboard" when="impl">
  2.1617 +            Which data flavors (if any) does your code read from or insert to
  2.1618 +            the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
  2.1619 +            
  2.1620 +            <hint>
  2.1621 +            Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
  2.1622 +            Check your code for overriding these methods.
  2.1623 +            </hint>
  2.1624 +        </question>
  2.1625 +-->
  2.1626 + 
  2.1627 +
  2.1628 +
  2.1629 +
  2.1630 +<!--
  2.1631 +        <question id="format-dnd" when="impl">
  2.1632 +            Which protocols (if any) does your code understand during Drag &amp; Drop?
  2.1633 +            <hint>
  2.1634 +            Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>. 
  2.1635 +            Check your code for overriding these methods. Btw. if they are not overridden, they
  2.1636 +            by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
  2.1637 +            </hint>
  2.1638 +        </question>
  2.1639 +-->
  2.1640 + 
  2.1641 +
  2.1642 +
  2.1643 +
  2.1644 +<!--
  2.1645 +        <question id="format-types" when="impl">
  2.1646 +            Which protocols and file formats (if any) does your module read or write on disk,
  2.1647 +            or transmit or receive over the network? Do you generate an ant build script?
  2.1648 +            Can it be edited and modified? 
  2.1649 +            
  2.1650 +            <hint>
  2.1651 +            <p>
  2.1652 +            Files can be read and written by other programs, modules and users. If they influence
  2.1653 +            your behaviour, make sure you either document the format or claim that it is a private
  2.1654 +            api (using the &lt;api&gt; tag). 
  2.1655 +            </p>
  2.1656 +            
  2.1657 +            <p>
  2.1658 +            If you generate an ant build file, this is very likely going to be seen by end users and
  2.1659 +            they will be attempted to edit it. You should be ready for that and provide here a link
  2.1660 +            to documentation that you have for such purposes and also describe how you are going to
  2.1661 +            understand such files during next release, when you (very likely) slightly change the 
  2.1662 +            format.
  2.1663 +            </p>
  2.1664 +            </hint>
  2.1665 +        </question>
  2.1666 +-->
  2.1667 + 
  2.1668 +
  2.1669 +
  2.1670 +
  2.1671 +<!--
  2.1672 +        <question id="lookup-lookup" when="init">
  2.1673 +            Does your module use <code>org.openide.util.Lookup</code>
  2.1674 +            or any similar technology to find any components to communicate with? Which ones?
  2.1675 +            
  2.1676 +            <hint>
  2.1677 +            Please describe the interfaces you are searching for, where 
  2.1678 +            are defined, whether you are searching for just one or more of them,
  2.1679 +            if the order is important, etc. Also classify the stability of such
  2.1680 +            API contract. For that use &lt;api group=&amp;lookup&amp; /&gt; tag.
  2.1681 +            </hint>
  2.1682 +        </question>
  2.1683 +-->
  2.1684 + 
  2.1685 +
  2.1686 +
  2.1687 +
  2.1688 +<!--
  2.1689 +        <question id="lookup-register" when="final">
  2.1690 +            Do you register anything into lookup for other code to find?
  2.1691 +            <hint>
  2.1692 +            Do you register using layer file or using <code>META-INF/services</code>?
  2.1693 +            Who is supposed to find your component?
  2.1694 +            </hint>
  2.1695 +        </question>
  2.1696 +-->
  2.1697 + 
  2.1698 +
  2.1699 +
  2.1700 +
  2.1701 +<!--
  2.1702 +        <question id="lookup-remove" when="final">
  2.1703 +            Do you remove entries of other modules from lookup?
  2.1704 +            <hint>
  2.1705 +            Why? Of course, that is possible, but it can be dangerous. Is the module
  2.1706 +            your are masking resource from aware of what you are doing?
  2.1707 +            </hint>
  2.1708 +        </question>
  2.1709 +-->
  2.1710 + 
  2.1711 +
  2.1712 +
  2.1713 +
  2.1714 +<!--
  2.1715 +        <question id="perf-exit" when="final">
  2.1716 +            Does your module run any code on exit?
  2.1717 +        </question>
  2.1718 +-->
  2.1719 + 
  2.1720 +
  2.1721 +
  2.1722 +
  2.1723 +<!--
  2.1724 +        <question id="perf-huge_dialogs" when="final">
  2.1725 +            Does your module contain any dialogs or wizards with a large number of
  2.1726 +            GUI controls such as combo boxes, lists, trees, or text areas?
  2.1727 +        </question>
  2.1728 +-->
  2.1729 + 
  2.1730 +
  2.1731 +
  2.1732 +
  2.1733 +<!--
  2.1734 +        <question id="perf-limit" when="init">
  2.1735 +            Are there any hard-coded or practical limits in the number or size of
  2.1736 +            elements your code can handle?
  2.1737 +        </question>
  2.1738 +-->
  2.1739 + 
  2.1740 +
  2.1741 +
  2.1742 +
  2.1743 +<!--
  2.1744 +        <question id="perf-mem" when="final">
  2.1745 +            How much memory does your component consume? Estimate
  2.1746 +            with a relation to the number of windows, etc.
  2.1747 +        </question>
  2.1748 +-->
  2.1749 + 
  2.1750 +
  2.1751 +
  2.1752 +
  2.1753 +<!--
  2.1754 +        <question id="perf-menus" when="final">
  2.1755 +            Does your module use dynamically updated context menus, or
  2.1756 +            context-sensitive actions with complicated and slow enablement logic?
  2.1757 +            <hint>
  2.1758 +                If you do a lot of tricks when adding actions to regular or context menus, you can significantly
  2.1759 +                slow down display of the menu, even when the user is not using your action. Pay attention to
  2.1760 +                actions you add to the main menu bar, and to context menus of foreign nodes or components. If
  2.1761 +                the action is conditionally enabled, or changes its display dynamically, you need to check the
  2.1762 +                impact on performance. In some cases it may be more appropriate to make a simple action that is
  2.1763 +                always enabled but does more detailed checks in a dialog if it is actually run.
  2.1764 +            </hint>
  2.1765 +        </question>
  2.1766 +-->
  2.1767 + 
  2.1768 +
  2.1769 +
  2.1770 +
  2.1771 +<!--
  2.1772 +        <question id="perf-progress" when="final">
  2.1773 +            Does your module execute any long-running tasks?
  2.1774 +            
  2.1775 +            <hint>Long running tasks should never block 
  2.1776 +            AWT thread as it badly hurts the UI
  2.1777 +            <a href="http://performance.netbeans.org/responsiveness/issues.html">
  2.1778 +            responsiveness</a>.
  2.1779 +            Tasks like connecting over
  2.1780 +            network, computing huge amount of data, compilation
  2.1781 +            be done asynchronously (for example
  2.1782 +            using <code>RequestProcessor</code>), definitively it should 
  2.1783 +            not block AWT thread.
  2.1784 +            </hint>
  2.1785 +        </question>
  2.1786 +-->
  2.1787 + 
  2.1788 +
  2.1789 +
  2.1790 +
  2.1791 +<!--
  2.1792 +        <question id="perf-scale" when="init">
  2.1793 +            Which external criteria influence the performance of your
  2.1794 +            program (size of file in editor, number of files in menu, 
  2.1795 +            in source directory, etc.) and how well your code scales?
  2.1796 +            <hint>
  2.1797 +            Please include some estimates, there are other more detailed 
  2.1798 +            questions to answer in later phases of implementation. 
  2.1799 +            </hint>
  2.1800 +        </question>
  2.1801 +-->
  2.1802 + 
  2.1803 +
  2.1804 +
  2.1805 +
  2.1806 +<!--
  2.1807 +        <question id="perf-spi" when="init">
  2.1808 +            How the performance of the plugged in code will be enforced?
  2.1809 +            <hint>
  2.1810 +            If you allow foreign code to be plugged into your own module, how
  2.1811 +            do you enforce that it will behave correctly and quickly and will not
  2.1812 +            negatively influence the performance of your own module?
  2.1813 +            </hint>
  2.1814 +        </question>
  2.1815 +-->
  2.1816 + 
  2.1817 +
  2.1818 +
  2.1819 +
  2.1820 +<!--
  2.1821 +        <question id="perf-startup" when="final">
  2.1822 +            Does your module run any code on startup?
  2.1823 +        </question>
  2.1824 +-->
  2.1825 + 
  2.1826 +
  2.1827 +
  2.1828 +
  2.1829 +<!--
  2.1830 +        <question id="perf-wakeup" when="final">
  2.1831 +            Does any piece of your code wake up periodically and do something
  2.1832 +            even when the system is otherwise idle (no user interaction)?
  2.1833 +        </question>
  2.1834 +-->
  2.1835 + 
  2.1836 +
  2.1837 +
  2.1838 +
  2.1839 +<!--
  2.1840 +        <question id="resources-file" when="final">
  2.1841 +            Does your module use <code>java.io.File</code> directly?
  2.1842 +            
  2.1843 +            <hint>
  2.1844 +            NetBeans provide a logical wrapper over plain files called 
  2.1845 +            <code>org.openide.filesystems.FileObject</code> that
  2.1846 +            provides uniform access to such resources and is the preferred
  2.1847 +            way that should be used. But of course there can be situations when
  2.1848 +            this is not suitable.
  2.1849 +            </hint>
  2.1850 +        </question>
  2.1851 +-->
  2.1852 + 
  2.1853 +
  2.1854 +
  2.1855 +
  2.1856 +<!--
  2.1857 +        <question id="resources-layer" when="final">
  2.1858 +            Does your module provide own layer? Does it create any files or
  2.1859 +            folders in it? What it is trying to communicate by that and with which 
  2.1860 +            components?
  2.1861 +            
  2.1862 +            <hint>
  2.1863 +            NetBeans allows automatic and declarative installation of resources 
  2.1864 +            by module layers. Module register files into appropriate places
  2.1865 +            and other components use that information to perform their task
  2.1866 +            (build menu, toolbar, window layout, list of templates, set of
  2.1867 +            options, etc.). 
  2.1868 +            </hint>
  2.1869 +        </question>
  2.1870 +-->
  2.1871 + 
  2.1872 +
  2.1873 +
  2.1874 +
  2.1875 +<!--
  2.1876 +        <question id="resources-mask" when="final">
  2.1877 +            Does your module mask/hide/override any resources provided by other modules in
  2.1878 +            their layers?
  2.1879 +            
  2.1880 +            <hint>
  2.1881 +            If you mask a file provided by another module, you probably depend
  2.1882 +            on that and do not want the other module to (for example) change
  2.1883 +            the file's name. That module shall thus make that file available as an API
  2.1884 +            of some stability category.
  2.1885 +            </hint>
  2.1886 +        </question>
  2.1887 +-->
  2.1888 + 
  2.1889 +
  2.1890 +
  2.1891 +
  2.1892 +<!--
  2.1893 +        <question id="resources-read" when="final">
  2.1894 +            Does your module read any resources from layers? For what purpose?
  2.1895 +            
  2.1896 +            <hint>
  2.1897 +            As this is some kind of intermodule dependency, it is a kind of API.
  2.1898 +            Please describe it and classify according to 
  2.1899 +            <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
  2.1900 +            common stability categories</a>.
  2.1901 +            </hint>
  2.1902 +        </question>
  2.1903 +-->
  2.1904 + 
  2.1905 +
  2.1906 +
  2.1907 +
  2.1908 +<!--
  2.1909 +        <question id="security-grant" when="final">
  2.1910 +            Does your code grant additional rights to some other code?
  2.1911 +            <hint>Avoid using a class loader that adds extra
  2.1912 +            permissions to loaded code unless really necessary.
  2.1913 +            Also note that your API implementation
  2.1914 +            can also expose unneeded permissions to enemy code by
  2.1915 +            calling AccessController.doPrivileged().</hint>
  2.1916 +        </question>
  2.1917 +-->
  2.1918 + 
  2.1919 +
  2.1920 +
  2.1921 +
  2.1922 +<!--
  2.1923 +        <question id="security-policy" when="final">
  2.1924 +            Does your functionality require modifications to the standard policy file?
  2.1925 +            <hint>Your code might pass control to third-party code not
  2.1926 +            coming from trusted domains. This could be code downloaded over the
  2.1927 +            network or code coming from libraries that are not bundled
  2.1928 +            with NetBeans. Which permissions need to be granted to which domains?</hint>
  2.1929 +        </question>
  2.1930 +-->
  2.1931 + 
  2.1932 +
  2.1933 +
  2.1934 +</api-answers>
  2.1935 +</body>
  2.1936 +</html>
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/arch/modeling-wsarc-questionnaire.html	Wed Jul 28 15:59:34 2010 -0400
     3.3 @@ -0,0 +1,1586 @@
     3.4 +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
     3.5 +<html>
     3.6 +<head>
     3.7 +
     3.8 +  <meta name="OWNER" content="This file is maintained by Chris Kasso &lt;kasso@sun.com&gt;. If you want to add/modify/delete a question or change the instructions in this document please contact Chris to avoid having your changes overwritten. Thanks.">
     3.9 +
    3.10 +  <meta http-equiv="CONTENT-TYPE" content="text/html; charset=windows-1252">
    3.11 +
    3.12 +  <meta name="CHANGED" content="20061222;16420126">
    3.13 +
    3.14 +  <meta name="Version" content="2.1">
    3.15 +  <title>WSARC Review Questions</title>
    3.16 +
    3.17 +
    3.18 +</head>
    3.19 +
    3.20 +
    3.21 +<body>
    3.22 +
    3.23 +<h3> WSARC Review Questions </h3>
    3.24 +
    3.25 +<p> <font size="-1"> Version 2.1 </font> </p>
    3.26 +
    3.27 +<hr width="95%">
    3.28 +<p> Please maintain the history of your responses: </p>
    3.29 +
    3.30 +<blockquote>
    3.31 +  <table border="1" cellpadding="2" cellspacing="3" width="95%">
    3.32 +
    3.33 +    <col width="25%"> <col width="15%"> <col width="60%"> <tbody>
    3.34 +
    3.35 +      <tr>
    3.36 +
    3.37 +        <th>
    3.38 +        <p> <font size="2"> Author </font> </p>
    3.39 +
    3.40 +        </th>
    3.41 +
    3.42 +        <th>
    3.43 +        <p> <font size="2"> Date </font> </p>
    3.44 +
    3.45 +        </th>
    3.46 +
    3.47 +        <th>
    3.48 +        <p> <font size="2"> Comments </font>
    3.49 +        </p>
    3.50 +
    3.51 +        </th>
    3.52 +
    3.53 +      </tr>
    3.54 +
    3.55 +      <tr>
    3.56 +
    3.57 +        <td>
    3.58 +        <p> <font size="2"> Your name </font>
    3.59 +        </p>
    3.60 +
    3.61 +        </td>
    3.62 +
    3.63 +        <td>
    3.64 +        <p> <font size="2"> mm/dd/yyyy </font>
    3.65 +        </p>
    3.66 +
    3.67 +        </td>
    3.68 +
    3.69 +        <td>
    3.70 +        <p align="left"> <font size="2">comments
    3.71 +        </font> </p>
    3.72 +
    3.73 +        </td>
    3.74 +
    3.75 +      </tr>
    3.76 +
    3.77 +      <tr>
    3.78 +
    3.79 +        <td>
    3.80 +        <p> <font size="2">George Vasick </font>
    3.81 +        </p>
    3.82 +
    3.83 +        </td>
    3.84 +
    3.85 +        <td>
    3.86 +        <p> <font size="2">08/06/2007</font></p>
    3.87 +
    3.88 +        </td>
    3.89 +
    3.90 +        <td>
    3.91 +        <p align="left"> <font size="2"> 1st
    3.92 +draft </font> </p>
    3.93 +
    3.94 +        </td>
    3.95 +
    3.96 +      </tr>
    3.97 +
    3.98 +    </tbody>
    3.99 +  </table>
   3.100 +
   3.101 +</blockquote>
   3.102 +
   3.103 +<hr width="95%">
   3.104 +<ol>
   3.105 +
   3.106 +  <li>
   3.107 +    <h3> What are we reviewing? </h3>
   3.108 +
   3.109 +    <ol>
   3.110 +
   3.111 +      <li>
   3.112 +        <p> <strong> Project name: </strong> </p>
   3.113 +
   3.114 +        <p> NetBeans 6.0 UML<br>
   3.115 +
   3.116 +        </p>
   3.117 +
   3.118 +      </li>
   3.119 +
   3.120 +      <li>
   3.121 +        <p> <strong> ARC case number: </strong> </p>
   3.122 +
   3.123 +        <p><a href="http://sac.sfbay/arc/WSARC/2007/343/">WSARC/2007/343</a>
   3.124 +        </p>
   3.125 +
   3.126 +      </li>
   3.127 +
   3.128 +      <li>
   3.129 +        <p> <strong> Project's PAC full title and email
   3.130 +address: </strong> </p>
   3.131 +
   3.132 +        <p> Java Tools PAC<br>
   3.133 +
   3.134 +        <a href="mailto:javatools-pac@Sun.COM">javatools-pac@Sun.COM</a>
   3.135 +        </p>
   3.136 +
   3.137 +      </li>
   3.138 +
   3.139 +      <li>
   3.140 +        <p> <strong> Name(s) of the person(s) providing
   3.141 +answers to the
   3.142 +questions: </strong> </p>
   3.143 +
   3.144 +        <p> George Vasick<br>
   3.145 +
   3.146 +        </p>
   3.147 +
   3.148 +      </li>
   3.149 +
   3.150 +      <li>
   3.151 +        <p> <strong> Are your answers to these questions
   3.152 +for an
   3.153 +Inception or Commitment review? </strong> </p>
   3.154 +
   3.155 +        <p> Inception.</p>
   3.156 +
   3.157 +      </li>
   3.158 +
   3.159 +      <li>
   3.160 +        <p> <strong> Major milestones dates: </strong>
   3.161 +        <br>
   3.162 +
   3.163 +Alpha: M9 JavaONE Preview 05/2007<br>
   3.164 +
   3.165 +Customer Acceptance/Beta: Beta1 09/2007<br>
   3.166 +
   3.167 +Revenue Release/GA: 11/2007</p>
   3.168 +
   3.169 +      </li>
   3.170 +
   3.171 +      <li>
   3.172 +        <p> <strong> Proposed release binding (See: <a href="http://sac.eng.sun.com/BestPractices/release_taxonomy.html">
   3.173 +Release Taxonomy</a>) (Major, Minor, Micro, Patch): </strong>
   3.174 +        </p>
   3.175 +
   3.176 +        <p> Major</p>
   3.177 +
   3.178 +        <p> <strong> Product version number: </strong>
   3.179 +        </p>
   3.180 +
   3.181 +        <p> 6.0</p>
   3.182 +
   3.183 +      </li>
   3.184 +
   3.185 +      <li>
   3.186 +        <p> <strong> For projects modifying existing
   3.187 +products: <br>
   3.188 +
   3.189 +Enumerate incompatibilities this project introduces that existing
   3.190 +customers/user will see: </strong> </p>
   3.191 +
   3.192 +        <p> UML projects from JSE 8.1 and NB 5.5/5.5.1 can be
   3.193 +opened
   3.194 +and continued with NB 6.0.&nbsp; Once the user has done so, the
   3.195 +project
   3.196 +can no longer be opened with the previous version of the IDE.<br>
   3.197 +
   3.198 +        </p>
   3.199 +
   3.200 +        <p> <strong> What is the size of the existing
   3.201 +customer base? </strong> </p>
   3.202 +
   3.203 +        <p> Approximately 80K downloads since 5.5 FCS,&nbsp;
   3.204 +April 2007
   3.205 +through June 2007.<br>
   3.206 +
   3.207 +        </p>
   3.208 +
   3.209 +      </li>
   3.210 +
   3.211 +      <li>
   3.212 +        <p> <strong> If a previous version of this project
   3.213 +has been
   3.214 +through an ARC commitment review before what is the ARC case number(s)
   3.215 +for the last case(s)? </strong> </p>
   3.216 +
   3.217 +        <p> <a href="http://sac.eng.sun.com/Archives/CaseLog/arc/WSARC/2005/716/">WSARC/2005/716</a>.
   3.218 +        </p>
   3.219 +
   3.220 +      </li>
   3.221 +
   3.222 +      <li>
   3.223 +        <p> <strong> List all hardware platforms and
   3.224 +Operating Systems
   3.225 +this project supports: </strong> </p>
   3.226 +
   3.227 +        <p> Windows<br>
   3.228 +
   3.229 +Linux<br>
   3.230 +
   3.231 +Solaris<br>
   3.232 +
   3.233 +X86<br>
   3.234 +
   3.235 +Sparc </p>
   3.236 +
   3.237 +      </li>
   3.238 +
   3.239 +      <li>
   3.240 +        <p> <strong> Please provide a short summary of
   3.241 +what this
   3.242 +project is. This may be copied from the project's one-pager. The case
   3.243 +owner needs a 1 to 4 paragraph description for the beginning of the
   3.244 +Opinion document. </strong> </p>
   3.245 +
   3.246 +        <p> The UML Modeling project provides UML modeling
   3.247 +features to the NetBeans
   3.248 +IDE. UML modeling allows analysts and designers to design applications
   3.249 +using a standard modeling language. Developers are then able to
   3.250 +generate source code from the UML model and update the model from
   3.251 +changes made in their source code.<br>
   3.252 +
   3.253 +        <br>
   3.254 +
   3.255 +The UML Modeling module provides the following main features:</p>
   3.256 +
   3.257 +      </li>
   3.258 +
   3.259 +      <ul>
   3.260 +
   3.261 +        <li>Forward and reverse engineering:&nbsp;
   3.262 +You can generate Java code from your model as
   3.263 +well as create UML models from your existing Java source. </li>
   3.264 +
   3.265 +        <li>Code generation:&nbsp;
   3.266 +The code generated by the UML module is free of any artificial markers,
   3.267 +e.g. comments or tags, introduced solely to support code generation. </li>
   3.268 +
   3.269 +        <li>Supports 8 diagrams:
   3.270 +          <ul>
   3.271 +
   3.272 +            <li> Activity diagram </li>
   3.273 +
   3.274 +            <li> Class diagram </li>
   3.275 +
   3.276 +            <li> Collaboration diagram </li>
   3.277 +
   3.278 +            <li> Component diagram </li>
   3.279 +
   3.280 +            <li> Deployment diagram </li>
   3.281 +
   3.282 +            <li> Sequence diagram </li>
   3.283 +
   3.284 +            <li> State diagram </li>
   3.285 +
   3.286 +            <li> Use Case diagram </li>
   3.287 +
   3.288 +          </ul>
   3.289 +
   3.290 +        </li>
   3.291 +
   3.292 +        <li>Requirements gathering:&nbsp;
   3.293 +You can bring application design requirements into your model via an
   3.294 +XML file or import them from Telelogic's DOORS requirements tool. </li>
   3.295 +
   3.296 +        <li>Predefined and Extensible Design Patterns: There is a
   3.297 +full
   3.298 +set of design patterns including EJB 1.1, EJB 2.0 and Gang of Four (23
   3.299 +patterns).</li>
   3.300 +
   3.301 +        <li>Web Reporting: You can create Javadoc style web
   3.302 +reports
   3.303 +from your model allowing your work to be easily shared with
   3.304 +others.</li>
   3.305 +
   3.306 +      </ul>
   3.307 +
   3.308 +      <li>
   3.309 +        <p> <strong> Who are the target users for this
   3.310 +project
   3.311 +(Administrators, Developers, End-users, etc)? </strong> </p>
   3.312 +
   3.313 +        <p> Developers and Architects.<br>
   3.314 +
   3.315 +        </p>
   3.316 +
   3.317 +      </li>
   3.318 +
   3.319 +      <li>
   3.320 +        <p> <strong> If this is a modification to an
   3.321 +existing product,
   3.322 +enumerate the changes/additions to the public interfaces. In other
   3.323 +words, what is the difference from one version to the next? If this is
   3.324 +a new product enumerate the significant features. </strong> </p>
   3.325 +
   3.326 +        <p><a href="http://wiki.netbeans.org/wiki/view/CustomizableCodeGeneration"> Customizable Code Generation</a><br>
   3.327 +        <a href="http://wiki.netbeans.org/wiki/view/DomainModelingCodeGeneration">
   3.328 +Domain Modeling Code Generation</a><br>
   3.329 +        <a href="http://wiki.netbeans.org/wiki/view/SourceCodeSynchronization">
   3.330 +Source Code Synchronization</a><br>
   3.331 +        <a href="http://wiki.netbeans.org/wiki/view/UMLOptionsDialog">
   3.332 +New Oprions Panel</a> </p>
   3.333 +
   3.334 +      </li>
   3.335 +
   3.336 +      <li>
   3.337 +        <p> <strong> Please provide diagrams that
   3.338 +illustrate the
   3.339 +project's architecture and interfaces. Be specific about deliverable
   3.340 +components and their interfaces. Pay particular attention to describing
   3.341 +the scope of the project, especially near the project boundaries. </strong>
   3.342 +        </p>
   3.343 +
   3.344 +        <p> <img style="width: 753px; height: 617px;" alt="uml block diagram" src="uml-arc.png"> </p>
   3.345 +
   3.346 +      </li>
   3.347 +
   3.348 +      <li>
   3.349 +        <p> <strong> What is the motivation for this
   3.350 +project? What are
   3.351 +the expected benefits for Sun? </strong> </p>
   3.352 +
   3.353 +        <p>Developer adoption. Worldwide, significat percentages
   3.354 +of
   3.355 +developers
   3.356 +use UML:<br>
   3.357 +
   3.358 +APAC: 50.60%<br>
   3.359 +
   3.360 +EMEA: 40.40%<br>
   3.361 +
   3.362 +NA: 42.30%<br>
   3.363 +
   3.364 +Note, UML is also required by many enterprise class customers. </p>
   3.365 +
   3.366 +      </li>
   3.367 +
   3.368 +    </ol>
   3.369 +
   3.370 +  </li>
   3.371 +
   3.372 +  <li>
   3.373 +    <h3> Related Projects. </h3>
   3.374 +
   3.375 +    <ol>
   3.376 +
   3.377 +      <li>
   3.378 +        <p> <strong> Are there related projects at Sun?
   3.379 +What are their
   3.380 +relationships to this project? </strong> </p>
   3.381 +
   3.382 +        <p>UML is included in the NetBeans 6.0 Full installer..<br>
   3.383 +
   3.384 +        </p>
   3.385 +
   3.386 +      </li>
   3.387 +
   3.388 +      <li>
   3.389 +        <p> <strong> Enumerate the (known) projects at Sun
   3.390 +which
   3.391 +depend on this project. </strong> </p>
   3.392 +
   3.393 +        <p> None.</p>
   3.394 +
   3.395 +      </li>
   3.396 +
   3.397 +      <li>
   3.398 +        <p> <strong> Enumerate the projects this project
   3.399 +depends on. </strong> </p>
   3.400 +
   3.401 +        <p> NetBeans 6.0 Basic.&nbsp; UML runs within the
   3.402 +NetBeans IDE.</p>
   3.403 +
   3.404 +      </li>
   3.405 +
   3.406 +      <li>
   3.407 +        <p> <strong> Enumerate the products this project
   3.408 +bundles (i.e.
   3.409 +includes in its distribution). </strong> </p>
   3.410 +
   3.411 +        <p> None.</p>
   3.412 +
   3.413 +      </li>
   3.414 +
   3.415 +      <li>
   3.416 +        <p> <strong> Enumerate any non-Sun projects this
   3.417 +project
   3.418 +depend on. </strong> </p>
   3.419 +
   3.420 +        <p>Antrl<br>
   3.421 +
   3.422 +Dom4j<br>
   3.423 +
   3.424 +Tom Sawyer Graph Library </p>
   3.425 +
   3.426 +      </li>
   3.427 +
   3.428 +      <li>
   3.429 +        <p> <strong> Does this project incorporate any
   3.430 +software that
   3.431 +is governed by the GNU General Public License (See <a href="%20%20%20%20http://http://www.gnu.org/copyleft/gpl.html%3Fcid=6">
   3.432 +http://www.gnu.org/copyleft/gpl.html</a>. </strong> </p>
   3.433 +
   3.434 +        <p> No.</p>
   3.435 +
   3.436 +      </li>
   3.437 +
   3.438 +      <li>
   3.439 +        <p><!--
   3.440 +<p><LI><strong><Font color="red">XXX: Put shared component question here - Darren/Stephen to provide content. </font></strong><p>
   3.441 +<p>
   3.442 +--><strong>What
   3.443 +future projects should be started or
   3.444 +avoided to
   3.445 +help your project succeed, why? </strong></p>
   3.446 +
   3.447 +        <p> None. </p>
   3.448 +
   3.449 +      </li>
   3.450 +
   3.451 +    </ol>
   3.452 +
   3.453 +  </li>
   3.454 +
   3.455 +  <li>
   3.456 +    <h3> Project Delivery. </h3>
   3.457 +
   3.458 +    <ol>
   3.459 +
   3.460 +      <li>
   3.461 +        <p> <strong> Will the project be bundled in
   3.462 +(integrated into)
   3.463 +Solaris? </strong> </p>
   3.464 +
   3.465 +        <p> No.</p>
   3.466 +
   3.467 +        <p> <strong> Solaris 9 update release: </strong>N/A.
   3.468 +        </p>
   3.469 +
   3.470 +        <p> <strong> Solaris 10 release: </strong>N/A.
   3.471 +        </p>
   3.472 +
   3.473 +        <p> <strong> Solaris 11 release: </strong>N/A.
   3.474 +        </p>
   3.475 +
   3.476 +      </li>
   3.477 +
   3.478 +      <li>
   3.479 +        <p> <strong> Does the project ship as part of
   3.480 +project Java ES
   3.481 +or what is your roadmap with respect to shipping with project Java ES? </strong>
   3.482 +        </p>
   3.483 +
   3.484 +        <p> UML is included in JSE 8.1, the campion tools product
   3.485 +for
   3.486 +JES 5.&nbsp; A future version of NetBeans will be paired with JES 6.<br>
   3.487 +
   3.488 +        </p>
   3.489 +
   3.490 +      </li>
   3.491 +
   3.492 +      <li>
   3.493 +        <p> <strong> For each platform the project
   3.494 +delivers on, what
   3.495 +installation mechanism will be used to install the project (SVR4
   3.496 +Packages, SetupSDK, RPM's, etc)? </strong> </p>
   3.497 +
   3.498 +        <p> NBM's </p>
   3.499 +
   3.500 +      </li>
   3.501 +
   3.502 +      <li>
   3.503 +        <p> <strong> List any SVR4 package names and a
   3.504 +short
   3.505 +description of each <i> new or modified </i> package you
   3.506 +will be
   3.507 +delivering. Additionally include in your case materials prior to
   3.508 +commitment the spec for the contents of the packages. The package
   3.509 +prototype files are acceptable. </strong> </p>
   3.510 +
   3.511 +        <p> N/A </p>
   3.512 +
   3.513 +      </li>
   3.514 +
   3.515 +      <li>
   3.516 +        <p> <strong> List any RPM package names and a
   3.517 +short
   3.518 +description of each <i> new or modified </i> RPM you will
   3.519 +be
   3.520 +delivering. Additionally include in your case materials prior to
   3.521 +commitment the spec for the contents of the RPM's. </strong> </p>
   3.522 +
   3.523 +        <p> N/A </p>
   3.524 +
   3.525 +      </li>
   3.526 +
   3.527 +      <li>
   3.528 +        <p> <strong> Default installation directory: </strong>
   3.529 +        <br>
   3.530 +
   3.531 +        <strong> Solaris: </strong>Same as NetBeans 6.0. <br>
   3.532 +
   3.533 +        <strong>Linux: </strong>Same as
   3.534 +NetBeans 6.0. <br>
   3.535 +
   3.536 +        <strong> Windows: </strong>Same as
   3.537 +NetBeans 6.0. <br>
   3.538 +
   3.539 +        <strong> Other: </strong>N/A </p>
   3.540 +
   3.541 +        <p> <strong> Is the user allowed to override these
   3.542 +locations? </strong> </p>
   3.543 +
   3.544 +        <p> Yes. </p>
   3.545 +
   3.546 +      </li>
   3.547 +
   3.548 +      <li>
   3.549 +        <p> <strong> Can multiple versions and/or multiple
   3.550 +copies of
   3.551 +the project be available on the same system at the same time? </strong>
   3.552 +        </p>
   3.553 +
   3.554 +        <p> Yes. </p>
   3.555 +
   3.556 +      </li>
   3.557 +
   3.558 +      <li>
   3.559 +        <p> <strong> When the project is uninstalled does
   3.560 +it leave
   3.561 +anything on the filesystem? How does the user clean up files that
   3.562 +remain? </strong> </p>
   3.563 +
   3.564 +        <p> Same as
   3.565 +NetBeans 6.0. </p>
   3.566 +
   3.567 +      </li>
   3.568 +
   3.569 +      <li>
   3.570 +        <p> <strong> Can the project's installer
   3.571 +upgrade-in-place a
   3.572 +prior installation (down-rev) of the project? On all platforms
   3.573 +supported? </strong> </p>
   3.574 +
   3.575 +        <p> Upgrades can be performed via the plugin manager. </p>
   3.576 +
   3.577 +      </li>
   3.578 +
   3.579 +      <li>
   3.580 +        <p> <strong> During the installation process does
   3.581 +the
   3.582 +installer execute any programs or [class-action] scripts the project
   3.583 +provides? </strong> </p>
   3.584 +
   3.585 +        <p> No. </p>
   3.586 +
   3.587 +      </li>
   3.588 +
   3.589 +    </ol>
   3.590 +
   3.591 +  </li>
   3.592 +
   3.593 +  <li>
   3.594 +    <h3> Platform Dependencies. </h3>
   3.595 +
   3.596 +    <ol>
   3.597 +
   3.598 +      <li>
   3.599 +        <p> <strong> Does the project require a JDK or a
   3.600 +JRE (state
   3.601 +which)? What JVM versions does the project require and/or support? </strong>
   3.602 +        </p>
   3.603 +
   3.604 +        <p> JDK. &nbsp;Java SE 5 and 6 are supported. </p>
   3.605 +
   3.606 +      </li>
   3.607 +
   3.608 +      <li>
   3.609 +        <p> <strong> Does the project expect the JVM to
   3.610 +already be
   3.611 +installed on the system or does the project install the JVM?</strong>
   3.612 +        </p>
   3.613 +
   3.614 +        <p> Yes. </p>
   3.615 +
   3.616 +        <p> <strong> If the
   3.617 +project installs the JVM where is it installed (See LSARC/2002/172)? </strong>
   3.618 +        </p>
   3.619 +
   3.620 +        <p> N/A. </p>
   3.621 +
   3.622 +      </li>
   3.623 +
   3.624 +      <li>
   3.625 +        <p> <strong> Does the project run in a J2EE
   3.626 +environment? </strong> </p>
   3.627 +
   3.628 +        <p> No. </p>
   3.629 +
   3.630 +        <p> <strong> If
   3.631 +so which version of the J2EE standard do you support. </strong></p>
   3.632 +
   3.633 +        <p> N/A </p>
   3.634 +
   3.635 +      </li>
   3.636 +
   3.637 +      <li>
   3.638 +        <p> <strong> Do you intend
   3.639 +replace/augment any of
   3.640 +the J2EE
   3.641 +platform jars with a different version? </strong> </p>
   3.642 +
   3.643 +        <p> No. </p>
   3.644 +
   3.645 +      </li>
   3.646 +
   3.647 +      <li>
   3.648 +        <p> <strong> Which J2EE application
   3.649 +servers do you
   3.650 +qualify
   3.651 +against </strong> </p>
   3.652 +
   3.653 +        <p> N/A. </p>
   3.654 +
   3.655 +      </li>
   3.656 +
   3.657 +    </ol>
   3.658 +
   3.659 +  </li>
   3.660 +
   3.661 +  <li>
   3.662 +    <h3><strong> Administration and Observability.</strong><br>
   3.663 +
   3.664 +    </h3>
   3.665 +
   3.666 +  </li>
   3.667 +
   3.668 +  <p> N/A. </p>
   3.669 +
   3.670 +  <li>
   3.671 +    <h3><strong> Reliability, Availability and
   3.672 +Serviceability (RAS). </strong></h3>
   3.673 +
   3.674 +    <p> N/A. </p>
   3.675 +
   3.676 +  </li>
   3.677 +
   3.678 +  <li>
   3.679 +    <h3><strong> Security. </strong></h3>
   3.680 +
   3.681 +    <p> N/A. </p>
   3.682 +
   3.683 +  </li>
   3.684 +
   3.685 +  <li>
   3.686 +    <h3><strong> Operational Environment. </strong></h3>
   3.687 +
   3.688 +    <ol>
   3.689 +
   3.690 +      <li>
   3.691 +        <p><strong> What environment
   3.692 +variables are used
   3.693 +(both
   3.694 +consumed and produced)? </strong> </p>
   3.695 +
   3.696 +        <p> None. </p>
   3.697 +
   3.698 +      </li>
   3.699 +
   3.700 +      <li>
   3.701 +        <p> <strong> What entries are stored
   3.702 +or retrieved
   3.703 +from the
   3.704 +Windows Registry? </strong> </p>
   3.705 +
   3.706 +        <p> None. </p>
   3.707 +
   3.708 +      </li>
   3.709 +
   3.710 +      <li>
   3.711 +        <p> <strong> What exit statuses are
   3.712 +exported? </strong> </p>
   3.713 +
   3.714 +        <p> None. </p>
   3.715 +
   3.716 +      </li>
   3.717 +
   3.718 +      <li>
   3.719 +        <p> <strong> What signals (man
   3.720 +signal(5)) are
   3.721 +issued or
   3.722 +caught? </strong> </p>
   3.723 +
   3.724 +        <p> None. </p>
   3.725 +
   3.726 +      </li>
   3.727 +
   3.728 +      <li>
   3.729 +        <p> <strong> What network port
   3.730 +numbers are
   3.731 +utilized? If you
   3.732 +are exporting any ports have they been registered with <a href="http://www.iana.org/"> www.iana.org</a>? </strong>
   3.733 +        </p>
   3.734 +
   3.735 +        <p> None. </p>
   3.736 +
   3.737 +      </li>
   3.738 +
   3.739 +      <li>
   3.740 +        <p> <strong> If you utilize a port
   3.741 +in the private
   3.742 +range (above
   3.743 +49152) how do you test for availability? </strong> </p>
   3.744 +
   3.745 +        <p> None. </p>
   3.746 +
   3.747 +      </li>
   3.748 +
   3.749 +      <li>
   3.750 +        <p> <strong> Does the project
   3.751 +utilize cron or the
   3.752 +Windows Task
   3.753 +Scheduler? Describe how it is used and how often tasks run: </strong>
   3.754 +        </p>
   3.755 +
   3.756 +        <p> No. </p>
   3.757 +
   3.758 +      </li>
   3.759 +
   3.760 +      <li>
   3.761 +        <p> <strong> Does the project use
   3.762 +any hidden (dot)
   3.763 +files? </strong> </p>
   3.764 +
   3.765 +        <p> Yes, the netbeans userdir, .netbeans. </p>
   3.766 +
   3.767 +        <p> <strong> Any temp files? </strong> </p>
   3.768 +
   3.769 +        <p> No. </p>
   3.770 +
   3.771 +        <p> <strong> Any files in the user's
   3.772 +home
   3.773 +directory? </strong> </p>
   3.774 +
   3.775 +        <p> Yes. The .netbeans userdir is created in the user's
   3.776 +home directory by default. </p>
   3.777 +
   3.778 +      </li>
   3.779 +
   3.780 +      <li>
   3.781 +        <p> <strong> Does the project
   3.782 +utilize a
   3.783 +proscriptive licensing
   3.784 +mechanism? </strong> </p>
   3.785 +
   3.786 +        <p> No. </p>
   3.787 +
   3.788 +      </li>
   3.789 +
   3.790 +      <li>
   3.791 +        <p> <strong> Command line
   3.792 +interfaces. Provide
   3.793 +specifications
   3.794 +for any command line interfaces the project introduces or modifies
   3.795 +(preferably in man page format). The specs should include the command
   3.796 +name, description of what it does, command options, exit status and
   3.797 +output format. Command options should be getopt (man intro(1)) and/or <a href="http://sac.eng.sun.com/PSARC/1999/645/commit.materials/clip.pdf">
   3.798 +CLIP </a> compliant. </strong> </p>
   3.799 +
   3.800 +        <p> N/A. </p>
   3.801 +
   3.802 +      </li>
   3.803 +
   3.804 +      <li>
   3.805 +        <p> <strong> For each command list
   3.806 +any libraries
   3.807 +it uses.
   3.808 +(Hint: Use ldd and dump -Lv). Identify and justify the requirement for
   3.809 +any static libraries. </strong> </p>
   3.810 +
   3.811 +        <p> N/A. </p>
   3.812 +
   3.813 +      </li>
   3.814 +
   3.815 +      <li>
   3.816 +        <p> <strong> Does this project
   3.817 +deliver any shared
   3.818 +libraries?
   3.819 +Enumerate the names of any public shared libraries. </strong> </p>
   3.820 +
   3.821 +        <p> <strong> Are they versioned and
   3.822 +scoped? </strong> </p>
   3.823 +
   3.824 +        <p> N/A. </p>
   3.825 +
   3.826 +      </li>
   3.827 +
   3.828 +      <li>
   3.829 +        <p> <strong> Does this project
   3.830 +delivery any static
   3.831 +libraries? </strong> </p>
   3.832 +
   3.833 +        <p> No. </p>
   3.834 +
   3.835 +      </li>
   3.836 +
   3.837 +      <li>
   3.838 +        <p> <strong> Is the project 64-bit
   3.839 +clean? </strong> </p>
   3.840 +
   3.841 +        <p> Yes. </p>
   3.842 +
   3.843 +        <p> <strong> Is there any
   3.844 +architectural reason why
   3.845 +the project
   3.846 +would not work in a 64-bit environment? See <a href="http://docs.sun.com/db/doc/806-6543">
   3.847 +http://docs.sun.com/db/doc/806-6543 </a> for more info. </strong>
   3.848 +        </p>
   3.849 +
   3.850 +        <p> No. </p>
   3.851 +
   3.852 +      </li>
   3.853 +
   3.854 +      <li>
   3.855 +        <p> <strong> Is the project
   3.856 +compatible with IPV6
   3.857 +interfaces
   3.858 +and addresses? </strong> </p>
   3.859 +
   3.860 +        <p> N/A. </p>
   3.861 +
   3.862 +      </li>
   3.863 +
   3.864 +    </ol>
   3.865 +
   3.866 +  </li>
   3.867 +
   3.868 +  <li>
   3.869 +    <h3><strong> Internationalization and Localization </strong></h3>
   3.870 +
   3.871 +    <ol>
   3.872 +
   3.873 +      <li>
   3.874 +        <p> <strong> Has the project been
   3.875 +internationalized? (See <a href="http://i18n.red.iplanet.com/faq.html">
   3.876 +http://i18n.red.iplanet.com/faq.html </a> for an
   3.877 +internationalization
   3.878 +FAQ) </strong> </p>
   3.879 +
   3.880 +        <p> Yes. </p>
   3.881 +
   3.882 +      </li>
   3.883 +
   3.884 +      <li>
   3.885 +        <p> <strong> Which locales does the
   3.886 +project
   3.887 +support? Indicate
   3.888 +which locale is the default. </strong> </p>
   3.889 +
   3.890 +        <p> English, Japanese, Simplified Chinese. </p>
   3.891 +
   3.892 +      </li>
   3.893 +
   3.894 +      <li>
   3.895 +        <p> <strong> Does the project use
   3.896 +resource files
   3.897 +or solaris
   3.898 +locale databases? </strong> </p>
   3.899 +
   3.900 +        <p> resource files. </p>
   3.901 +
   3.902 +      </li>
   3.903 +
   3.904 +      <li>
   3.905 +        <p> <strong> Does the project set
   3.906 +any of the
   3.907 +environment
   3.908 +variables: LANG, LC_ALL, LC_CTYPE, LC_COLLATE, LC_CTIME, LC_NUMERIC,
   3.909 +LC_MONETARY, LC_MESSAGES? </strong> </p>
   3.910 +
   3.911 +        <p> No </p>
   3.912 +
   3.913 +      </li>
   3.914 +
   3.915 +      <li>
   3.916 +        <p> <strong> Are there other
   3.917 +projects that depend
   3.918 +upon this
   3.919 +project, that require locales that will not be provided by this
   3.920 +project? </strong> </p>
   3.921 +
   3.922 +        <p> No. </p>
   3.923 +
   3.924 +      </li>
   3.925 +
   3.926 +      <li>
   3.927 +        <p> <strong> How does the project
   3.928 +behave when run
   3.929 +in the C
   3.930 +locale (the default Solaris locale)? </strong> </p>
   3.931 +
   3.932 +        <p> It defaults to English. </p>
   3.933 +
   3.934 +      </li>
   3.935 +
   3.936 +      <li>
   3.937 +        <p> <strong> Does the project follow
   3.938 +the solaris
   3.939 +convention
   3.940 +for L10N package names, see <a href="http://sekai.sfbay/projects3/l10n_steering_committee/l10n_steering_committee/web/docs/pkg_convention.txt">
   3.941 +http://sekai.sfbay/projects3/l10n_steering_committee/l10n_steering_committee/web/docs/pkg_convention.txt</a>?
   3.942 +        </strong> </p>
   3.943 +
   3.944 +        <p> N/A. </p>
   3.945 +
   3.946 +      </li>
   3.947 +
   3.948 +    </ol>
   3.949 +
   3.950 +  </li>
   3.951 +
   3.952 +  <li>
   3.953 +    <h3><strong> Desktop Operational Environment. </strong></h3>
   3.954 +
   3.955 +    <ol>
   3.956 +
   3.957 +      <li>
   3.958 +        <p><strong> Does this project
   3.959 +supply a graphical
   3.960 +user
   3.961 +interface? If so please provide a user interface specification with
   3.962 +your case materials. </strong> </p>
   3.963 +
   3.964 +        <p> Documented in the online help provided within the
   3.965 +NetBeans IDE. </p>
   3.966 +
   3.967 +      </li>
   3.968 +
   3.969 +      <li>
   3.970 +        <p><strong> Does this project add
   3.971 +any items to
   3.972 +any existing
   3.973 +system menus (e.g. Windows Start menu)? Describe what is added. </strong>
   3.974 +        </p>
   3.975 +
   3.976 +        <p> No. </p>
   3.977 +
   3.978 +      </li>
   3.979 +
   3.980 +      <li>
   3.981 +        <p><strong> Does this project add
   3.982 +any icons to
   3.983 +the user's
   3.984 +desktop? </strong> </p>
   3.985 +
   3.986 +        <p> No. </p>
   3.987 +
   3.988 +      </li>
   3.989 +
   3.990 +      <li>
   3.991 +        <p><strong> Does this project
   3.992 +introduce any new
   3.993 +MIME types? </strong> </p>
   3.994 +
   3.995 +        <p> No. </p>
   3.996 +
   3.997 +      </li>
   3.998 +
   3.999 +    </ol>
  3.1000 +
  3.1001 +  </li>
  3.1002 +
  3.1003 +  <li>
  3.1004 +    <h3><strong> Interfaces Imported and Exported. </strong></h3>
  3.1005 +
  3.1006 +    <p><strong> This is an umbrella project description for
  3.1007 +Open ESB.
  3.1008 +Detailed
  3.1009 +interface changes or new interface descriptions will appear in
  3.1010 +corresponding one pagers and functional specifications. </strong></p>
  3.1011 +
  3.1012 +    <ol>
  3.1013 +
  3.1014 +      <li>
  3.1015 +        <p><strong> Interfaces Imported </strong> </p>
  3.1016 +
  3.1017 +        <h4>Generally imported interfaces</h4>
  3.1018 +
  3.1019 +        <table border="3" cellpadding="6" width="90%">
  3.1020 +
  3.1021 +          <tbody>
  3.1022 +
  3.1023 +            <tr>
  3.1024 +
  3.1025 +              <th valign="bottom" width="30%"><b>Interface
  3.1026 +Name</b></th>
  3.1027 +
  3.1028 +              <th valign="bottom" width="15%"><b>Stability
  3.1029 +Classification</b> </th>
  3.1030 +
  3.1031 +              <th valign="bottom" width="45%"><b>Specified
  3.1032 +in What Document</b>? </th>
  3.1033 +
  3.1034 +            </tr>
  3.1035 +
  3.1036 +            <tr>
  3.1037 +
  3.1038 +              <td>Java API at least 1.5</td>
  3.1039 +
  3.1040 +              <td><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-stable" target="_blank">Stable</a></td>
  3.1041 +
  3.1042 +              <td><a href="http://java.sun.com">java.sun.com</a>
  3.1043 +(<a href="http://sac.eng.sun.com/PSARC/2000/436/">PSARC/2000/436</a>)</td>
  3.1044 +
  3.1045 +            </tr>
  3.1046 +
  3.1047 +            <tr>
  3.1048 +
  3.1049 +              <td valign="top">Tom Sawyer Graphic Library<br>
  3.1050 +
  3.1051 +              </td>
  3.1052 +
  3.1053 +              <td valign="top"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-third">Third
  3.1054 +Party</a><br>
  3.1055 +
  3.1056 +              </td>
  3.1057 +
  3.1058 +              <td valign="top"><a href="http://tomsawyer.com/">tomsawyer.com</a><br>
  3.1059 +
  3.1060 +              </td>
  3.1061 +
  3.1062 +            </tr>
  3.1063 +
  3.1064 +            <tr>
  3.1065 +
  3.1066 +              <td valign="top">Antlr 2.7.2<br>
  3.1067 +
  3.1068 +              </td>
  3.1069 +
  3.1070 +              <td valign="top"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-third">Third
  3.1071 +Party</a></td>
  3.1072 +
  3.1073 +              <td valign="top"><a href="http://www.antlr.org" class="l" onmousedown="return clk(0,'','','res','1','')">antlr 2.7 2</a></td>
  3.1074 +
  3.1075 +            </tr>
  3.1076 +
  3.1077 +            <tr>
  3.1078 +
  3.1079 +              <td valign="top">dom4j 1.2<br>
  3.1080 +
  3.1081 +              </td>
  3.1082 +
  3.1083 +              <td valign="top"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-third">Third
  3.1084 +Party</a></td>
  3.1085 +
  3.1086 +              <td valign="top"><a href="http://www.dom4j.org/">dom4j.org</a><br>
  3.1087 +
  3.1088 +              </td>
  3.1089 +
  3.1090 +            </tr>
  3.1091 +
  3.1092 +          </tbody>
  3.1093 +        </table>
  3.1094 +
  3.1095 +        <br>
  3.1096 +
  3.1097 +        <h4>Interfaces imported by individual modules</h4>
  3.1098 +
  3.1099 +        <table border="3" cellpadding="6" width="90%">
  3.1100 +
  3.1101 +          <thead><th valign="bottom" width="30%"><b>Interface
  3.1102 +Name</b></th>
  3.1103 +
  3.1104 +          <th valign="bottom" width="15%"><b>Stability
  3.1105 +Classification</b></th>
  3.1106 +
  3.1107 +          <th valign="bottom" width="45%"><b>Specified
  3.1108 +in What Document?</b></th>
  3.1109 +
  3.1110 +          </thead> <tbody>
  3.1111 +
  3.1112 +            <tr>
  3.1113 +
  3.1114 +            </tr>
  3.1115 +
  3.1116 +            <tr>
  3.1117 +
  3.1118 +            </tr>
  3.1119 +
  3.1120 +            <tr class="tabler">
  3.1121 +
  3.1122 +              <td>&nbsp;org.jdesktop.layout</td>
  3.1123 +
  3.1124 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-standard">Standard</a></td>
  3.1125 +
  3.1126 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-jdesktop-layout/overview-summary.html"><br>
  3.1127 +
  3.1128 +              </a></td>
  3.1129 +
  3.1130 +            </tr>
  3.1131 +
  3.1132 +            <tr>
  3.1133 +
  3.1134 +            </tr>
  3.1135 +
  3.1136 +            <tr>
  3.1137 +
  3.1138 +            </tr>
  3.1139 +
  3.1140 +            <tr>
  3.1141 +
  3.1142 +              <td valign="top">org.openide.actions</td>
  3.1143 +
  3.1144 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></span> </td>
  3.1145 +
  3.1146 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-actions/overview-summary.html">org-openide-actions/overview-summary.html</a></td>
  3.1147 +
  3.1148 +            </tr>
  3.1149 +
  3.1150 +            <tr>
  3.1151 +
  3.1152 +              <td valign="top">org.openide.awt</td>
  3.1153 +
  3.1154 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1155 +
  3.1156 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-awt/overview-summary.html">org-openide-awt/overview-summary.html</a></td>
  3.1157 +
  3.1158 +            </tr>
  3.1159 +
  3.1160 +            <tr>
  3.1161 +
  3.1162 +              <td valign="top">&nbsp;org.openide.dialogs</td>
  3.1163 +
  3.1164 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1165 +
  3.1166 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-dialogs/overview-summary.html">org-openide-dialogs/overview-summary.html</a></td>
  3.1167 +
  3.1168 +            </tr>
  3.1169 +
  3.1170 +            <tr>
  3.1171 +
  3.1172 +              <td valign="top">&nbsp;org.openide.explorer</td>
  3.1173 +
  3.1174 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1175 +
  3.1176 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-explorer/overview-summary.html">org-openide-explorer/overview-summary.html</a></td>
  3.1177 +
  3.1178 +            </tr>
  3.1179 +
  3.1180 +            <tr>
  3.1181 +
  3.1182 +              <td valign="top">org.openide.filesystems</td>
  3.1183 +
  3.1184 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1185 +
  3.1186 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-filesystems/overview-summary.html">org-openide-filesystems/overview-summary.html</a></td>
  3.1187 +
  3.1188 +            </tr>
  3.1189 +
  3.1190 +            <tr>
  3.1191 +
  3.1192 +              <td valign="top">org.openide.io</td>
  3.1193 +
  3.1194 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1195 +
  3.1196 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-io/overview-summary.html">org-openide-filesystems/overview-summary.html</a></td>
  3.1197 +
  3.1198 +            </tr>
  3.1199 +
  3.1200 +            <tr>
  3.1201 +
  3.1202 +              <td valign="top">org.openide.loaders</td>
  3.1203 +
  3.1204 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1205 +
  3.1206 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-loaders/overview-summary.html">org-openide-loaders/overview-summary.html</a></td>
  3.1207 +
  3.1208 +            </tr>
  3.1209 +
  3.1210 +            <tr>
  3.1211 +
  3.1212 +              <td valign="top">org.openide.modules</td>
  3.1213 +
  3.1214 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1215 +
  3.1216 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/overview-summary.html">org-openide-modules/overview-summary.html</a></td>
  3.1217 +
  3.1218 +            </tr>
  3.1219 +
  3.1220 +            <tr>
  3.1221 +
  3.1222 +              <td valign="top">org.openide.nodes</td>
  3.1223 +
  3.1224 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1225 +
  3.1226 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-nodes/overview-summary.html">org-openide-nodes/overview-summary.html</a></td>
  3.1227 +
  3.1228 +            </tr>
  3.1229 +
  3.1230 +            <tr>
  3.1231 +
  3.1232 +              <td valign="top">&nbsp;org.openide.text</td>
  3.1233 +
  3.1234 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1235 +
  3.1236 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-text/overview-summary.html">org-openide-text/overview-summary.html</a></td>
  3.1237 +
  3.1238 +            </tr>
  3.1239 +
  3.1240 +            <tr>
  3.1241 +
  3.1242 +              <td valign="top">org.openide.util</td>
  3.1243 +
  3.1244 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1245 +
  3.1246 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-util/overview-summary.html">org-openide-util/overview-summary.html</a></td>
  3.1247 +
  3.1248 +            </tr>
  3.1249 +
  3.1250 +            <tr>
  3.1251 +
  3.1252 +              <td valign="top">org.openide.windows</td>
  3.1253 +
  3.1254 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1255 +
  3.1256 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-openide-windows/overview-summary.html">org-openide-windows/overview-summary.html</a></td>
  3.1257 +
  3.1258 +            </tr>
  3.1259 +
  3.1260 +            <tr>
  3.1261 +
  3.1262 +              <td valign="top">org.netbeans.api.java</td>
  3.1263 +
  3.1264 +              <td valign="top"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a> </td>
  3.1265 +
  3.1266 +              <td valign="top"><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-api-java/overview-summary.html">org-openide-filesystems/overview-summary.html</a></td>
  3.1267 +
  3.1268 +            </tr>
  3.1269 +
  3.1270 +            <tr class="tabler">
  3.1271 +
  3.1272 +              <td>&nbsp;org.netbeans.api.progress</td>
  3.1273 +
  3.1274 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span></a><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1275 +
  3.1276 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-api-progress/overview-summary.html">org-netbeans-api-progress/overview-summary.html</a></td>
  3.1277 +
  3.1278 +            </tr>
  3.1279 +
  3.1280 +            <tr>
  3.1281 +
  3.1282 +            </tr>
  3.1283 +
  3.1284 +            <tr class="tabler">
  3.1285 +
  3.1286 +              <td>&nbsp;org.netbeans.libs.javacapi</td>
  3.1287 +
  3.1288 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-standard">Standard</a></td>
  3.1289 +
  3.1290 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-libs-javacapi/overview-summary.html"><br>
  3.1291 +
  3.1292 +              </a></td>
  3.1293 +
  3.1294 +            </tr>
  3.1295 +
  3.1296 +            <tr>
  3.1297 +
  3.1298 +            </tr>
  3.1299 +
  3.1300 +            <tr class="tabler">
  3.1301 +
  3.1302 +              <td>&nbsp;org.netbeans.modules.java.project</td>
  3.1303 +
  3.1304 +              <td><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1305 +
  3.1306 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-java-project/overview-summary.html">org-netbeans-modules-java-project/overview-summary.html</a></td>
  3.1307 +
  3.1308 +            </tr>
  3.1309 +
  3.1310 +            <tr>
  3.1311 +
  3.1312 +            </tr>
  3.1313 +
  3.1314 +            <tr class="tabler">
  3.1315 +
  3.1316 +              <td>&nbsp;org.netbeans.modules.java.source</td>
  3.1317 +
  3.1318 +              <td><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(221, 204, 128);"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-devel" target="_blank">Under Development</a></span></td>
  3.1319 +
  3.1320 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-java-source/overview-summary.html">org-netbeans-modules-java-source/overview-summary.html</a></td>
  3.1321 +
  3.1322 +            </tr>
  3.1323 +
  3.1324 +            <tr>
  3.1325 +
  3.1326 +            </tr>
  3.1327 +
  3.1328 +            <tr class="tabler">
  3.1329 +
  3.1330 +              <td>&nbsp;org.netbeans.modules.options.api</td>
  3.1331 +
  3.1332 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(221, 204, 128);"></span></a><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(221, 204, 128);"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-devel" target="_blank">Under Development</a></span></td>
  3.1333 +
  3.1334 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-options-api/overview-summary.html">org-netbeans-modules-options-api/overview-summary.html</a></td>
  3.1335 +
  3.1336 +            </tr>
  3.1337 +
  3.1338 +            <tr>
  3.1339 +
  3.1340 +            </tr>
  3.1341 +
  3.1342 +            <tr class="tabler">
  3.1343 +
  3.1344 +              <td>&nbsp;org.netbeans.modules.project.ant</td>
  3.1345 +
  3.1346 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1347 +
  3.1348 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-project-ant/overview-summary.html">org-netbeans-modules-project-ant/overview-summary.html</a></td>
  3.1349 +
  3.1350 +            </tr>
  3.1351 +
  3.1352 +            <tr>
  3.1353 +
  3.1354 +            </tr>
  3.1355 +
  3.1356 +            <tr class="tabler">
  3.1357 +
  3.1358 +              <td>&nbsp;org.netbeans.modules.projectapi</td>
  3.1359 +
  3.1360 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1361 +
  3.1362 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-projectapi/overview-summary.html">org-netbeans-modules-projectapi/overview-summary.html</a></td>
  3.1363 +
  3.1364 +            </tr>
  3.1365 +
  3.1366 +            <tr>
  3.1367 +
  3.1368 +            </tr>
  3.1369 +
  3.1370 +            <tr class="tabler">
  3.1371 +
  3.1372 +              <td>&nbsp;org.netbeans.modules.projectuiapi</td>
  3.1373 +
  3.1374 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1375 +
  3.1376 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-projectuiapi/overview-summary.html">org-netbeans-modules-projectuiapi/overview-summary.html</a></td>
  3.1377 +
  3.1378 +            </tr>
  3.1379 +
  3.1380 +            <tr>
  3.1381 +
  3.1382 +            </tr>
  3.1383 +
  3.1384 +            <tr class="tabler">
  3.1385 +
  3.1386 +              <td>&nbsp;org.netbeans.modules.queries</td>
  3.1387 +
  3.1388 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official" target="_blank">Official</a></td>
  3.1389 +
  3.1390 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-modules-queries/overview-summary.html">org-netbeans-modules-queries/overview-summary.html</a></td>
  3.1391 +
  3.1392 +            </tr>
  3.1393 +
  3.1394 +            <tr>
  3.1395 +
  3.1396 +            </tr>
  3.1397 +
  3.1398 +            <tr class="tabler">
  3.1399 +
  3.1400 +              <td>&nbsp;org.netbeans.modules.schema2beans</td>
  3.1401 +
  3.1402 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span></a><a href="http://openide.netbeans.org/tutorial/api-design.html#category-stable" target="_blank">Stable</a></td>
  3.1403 +
  3.1404 +              <td><a href="http://schema2beans.netbeans.org/docs.html">http://schema2beans.netbeans.org/docs.html<br>
  3.1405 +
  3.1406 +              </a></td>
  3.1407 +
  3.1408 +            </tr>
  3.1409 +
  3.1410 +            <tr>
  3.1411 +
  3.1412 +            </tr>
  3.1413 +
  3.1414 +            <tr>
  3.1415 +
  3.1416 +              <td>&nbsp;org.netbeans.spi.palette</td>
  3.1417 +
  3.1418 +              <td><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"><a href="http://openide.netbeans.org/tutorial/api-design.html#category-stable" target="_blank">Stable</a></span></td>
  3.1419 +
  3.1420 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-spi-palette/overview-summary.html">org-netbeans-spi-palette/overview-summary.html</a></td>
  3.1421 +
  3.1422 +            </tr>
  3.1423 +
  3.1424 +            <tr>
  3.1425 +
  3.1426 +              <td>&nbsp;org.netbeans.spi.navigator</td>
  3.1427 +
  3.1428 +              <td><a href="http://openide.netbeans.org/tutorial/api-design.html#category-official"><span style="font-style: normal; font-size: medium; font-weight: normal; background-color: rgb(255, 255, 255);"></span></a><a href="http://openide.netbeans.org/tutorial/api-design.html#category-stable" target="_blank">Stable</a></td>
  3.1429 +
  3.1430 +              <td><a href="http://www.netbeans.org/download/dev/javadoc/org-netbeans-spi-navigator/overview-summary.html">org-netbeans-spi-navigator/overview-summary.html</a></td>
  3.1431 +
  3.1432 +            </tr>
  3.1433 +
  3.1434 +          </tbody>
  3.1435 +        </table>
  3.1436 +
  3.1437 +        <br>
  3.1438 +
  3.1439 +      </li>
  3.1440 +
  3.1441 +      <li>
  3.1442 +        <p><strong> Interfaces Exported </strong> </p>
  3.1443 +
  3.1444 +        <table border="1" cellpadding="9" cellspacing="3" width="100%">
  3.1445 +
  3.1446 +          <col width="30%"> <col width="20%">
  3.1447 +          <col width="50%"> <tbody>
  3.1448 +
  3.1449 +            <tr valign="top">
  3.1450 +
  3.1451 +              <td>
  3.1452 +              <p> <strong> Interface </strong> </p>
  3.1453 +
  3.1454 +              </td>
  3.1455 +
  3.1456 +              <td>
  3.1457 +              <p> <strong> Classification </strong>
  3.1458 +              </p>
  3.1459 +
  3.1460 +              </td>
  3.1461 +
  3.1462 +              <td>
  3.1463 +              <p> <strong> Comments </strong> </p>
  3.1464 +
  3.1465 +              </td>
  3.1466 +
  3.1467 +            </tr>
  3.1468 +
  3.1469 +            <tr>
  3.1470 +
  3.1471 +              <td>None<br>
  3.1472 +
  3.1473 +              </td>
  3.1474 +
  3.1475 +              <td> <br>
  3.1476 +
  3.1477 +              </td>
  3.1478 +
  3.1479 +              <td> <br>
  3.1480 +
  3.1481 +              </td>
  3.1482 +
  3.1483 +            </tr>
  3.1484 +
  3.1485 +          </tbody>
  3.1486 +        </table>
  3.1487 +
  3.1488 +        <br>
  3.1489 +
  3.1490 +      </li>
  3.1491 +
  3.1492 +    </ol>
  3.1493 +
  3.1494 +  </li>
  3.1495 +
  3.1496 +  <li>
  3.1497 +    <h3><strong> Interface Extensibility and Evolution. </strong></h3>
  3.1498 +
  3.1499 +    <ol>
  3.1500 +
  3.1501 +      <li>
  3.1502 +        <p><strong> How is the project and
  3.1503 +its
  3.1504 +significant interfaces
  3.1505 +versioned? </strong> </p>
  3.1506 +
  3.1507 +        <p> The spec number is incremented in the corresponding
  3.1508 +NBM. </p>
  3.1509 +
  3.1510 +      </li>
  3.1511 +
  3.1512 +      <li>
  3.1513 +        <p><strong> Can this version
  3.1514 +co-exist with
  3.1515 +existing standards
  3.1516 +and with earlier or later versions or with alternative implementations
  3.1517 +(perhaps by other vendors)? </strong> </p>
  3.1518 +
  3.1519 +        <p> N/A </p>
  3.1520 +
  3.1521 +      </li>
  3.1522 +
  3.1523 +      <li>
  3.1524 +        <p><strong> Are there
  3.1525 +incompatibilities with
  3.1526 +prior versions
  3.1527 +of the interface? </strong> </p>
  3.1528 +
  3.1529 +        <p><strong> if yes, how is the
  3.1530 +transition to the
  3.1531 +new version
  3.1532 +to be accomplished? </strong> </p>
  3.1533 +
  3.1534 +        <p> N/A </p>
  3.1535 +
  3.1536 +      </li>
  3.1537 +
  3.1538 +    </ol>
  3.1539 +
  3.1540 +  </li>
  3.1541 +
  3.1542 +  <li>
  3.1543 +    <h3><strong> Interoperability. </strong></h3>
  3.1544 +
  3.1545 +    <ol>
  3.1546 +
  3.1547 +      <li>
  3.1548 +        <p><strong> If applicable, explain
  3.1549 +your project's
  3.1550 +interoperability with other major implementations in the industry: </strong>
  3.1551 +        </p>
  3.1552 +
  3.1553 +        <p> There is currently no interoperability. Support of
  3.1554 +XMI import/export is on our roadmap for a future release. </p>
  3.1555 +
  3.1556 +      </li>
  3.1557 +
  3.1558 +      <li>
  3.1559 +        <p><strong> What would be different
  3.1560 +about
  3.1561 +installing your
  3.1562 +project in a heterogeneous site instead of a homogeneous one (e.g. All
  3.1563 +running Solaris)? </strong> </p>
  3.1564 +
  3.1565 +        <p> No issues. The project is completely implemented in
  3.1566 +Java. </p>
  3.1567 +
  3.1568 +      </li>
  3.1569 +
  3.1570 +    </ol>
  3.1571 +
  3.1572 +  </li>
  3.1573 +
  3.1574 +</ol>
  3.1575 +
  3.1576 +<strong><br>
  3.1577 +
  3.1578 +</strong>
  3.1579 +<hr width="95%"><strong><br>
  3.1580 +
  3.1581 +</strong>
  3.1582 +<p><strong> Please identify any issues that you would like
  3.1583 +the ARC to
  3.1584 +address: </strong></p>
  3.1585 +
  3.1586 +<p> None. </p>
  3.1587 +
  3.1588 +</body>
  3.1589 +</html>
     4.1 Binary file arch/uml-arc.png has changed