1.1 --- a/lookup/arch.xml Wed Jan 27 17:46:23 2010 -0500
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,615 +0,0 @@
1.4 -<?xml version="1.0" encoding="UTF-8"?>
1.5 -<!--
1.6 -DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
1.7 -
1.8 -Copyright 1997-2009 Sun Microsystems, Inc. All rights reserved.
1.9 -
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-2006 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 -<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
1.47 - <!ENTITY api-questions SYSTEM "../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
1.48 -]>
1.49 -
1.50 -<api-answers
1.51 - question-version="1.25"
1.52 - author="jtulach@netbeans.org"
1.53 ->
1.54 -
1.55 - &api-questions;
1.56 -
1.57 - <answer id="arch-overall">
1.58 - <p>
1.59 - This module defines the <a href="@TOP@/org/openide/util/Lookup.html">
1.60 - Lookup</a> which is the NetBeans way for dynamic registration
1.61 - </answer>
1.62 -
1.63 -
1.64 - <answer id="arch-quality">
1.65 - <p>
1.66 - There is a lot of unit tests in
1.67 - <a href="http://hg.netbeans.org/main-golden/openide.util.lookup/test/unit/src/">version control</a>
1.68 - system.
1.69 - </p>
1.70 - </answer>
1.71 -
1.72 - <answer id="arch-time">
1.73 - <p>
1.74 - The module has been around since 1997 and is continously being improved
1.75 - from time to time.
1.76 - </p>
1.77 - </answer>
1.78 -
1.79 -
1.80 -
1.81 - <answer id="arch-usecases">
1.82 - <a href="@org-openide-util@/org/openide/util/doc-files/api.html#service-lookup">META-INF/services</a> directory and it
1.83 - <a href="@org-openide-util@/org/openide/util/doc-files/api.html#ido-methodvalue">services
1.84 - your want or <code>null</code> depending on result of <a href="@org-openide-util@/org/openide/util/Utilities.html#isWindows()">
1.85 - </answer>
1.86 -
1.87 -
1.88 -
1.89 - <answer id="arch-what">
1.90 - <p>
1.91 - Described in the <a href="@TOP@/architecture-summary.html#answer-arch-overall">overall</a> answer.
1.92 - </p>
1.93 - </answer>
1.94 -
1.95 -
1.96 -
1.97 - url="@org-openide-util@/org/openide/util/doc-files/api.html#service-lookup"
1.98 - <answer id="compat-version">
1.99 - <p>
1.100 - This module has no settings.
1.101 - </p>
1.102 - </answer>
1.103 -
1.104 -
1.105 -
1.106 - <answer id="dep-jre">
1.107 - <p>
1.108 - Currently JRE 1.5 is needed.
1.109 - </p>
1.110 - </answer>
1.111 -
1.112 -
1.113 -
1.114 - <answer id="dep-jrejdk">
1.115 - <p>
1.116 - JRE is enough.
1.117 - </p>
1.118 - </answer>
1.119 -
1.120 -
1.121 - <answer id="dep-nb">
1.122 - <p>N/A</p>
1.123 - </answer>
1.124 -
1.125 - <answer id="dep-platform">
1.126 - <p>
1.127 - Platform independent.
1.128 - </p>
1.129 - </answer>
1.130 -
1.131 -
1.132 - <answer id="deploy-dependencies">
1.133 - <p>
1.134 - Nothing.
1.135 - </p>
1.136 - </answer>
1.137 -
1.138 -
1.139 -
1.140 - <answer id="deploy-jar">
1.141 - <p>
1.142 - <api category="devel" group="java.io.File" name="FileLocation" type="export" >
1.143 - the JAR file is located in platform cluster under <code>lib/org-openide-util-lookup.jar</code>
1.144 - </api>.
1.145 - </p>
1.146 - </answer>
1.147 -
1.148 - <answer id="deploy-shared">
1.149 - <p>
1.150 - Module is on real java classpath and as such it has to be in the shared directory.
1.151 - </p>
1.152 - </answer>
1.153 -
1.154 -
1.155 - <answer id="exec-ant-tasks">
1.156 - <p>
1.157 - No.
1.158 - </p>
1.159 - </answer>
1.160 -
1.161 -
1.162 -
1.163 - <answer id="exec-classloader">
1.164 - <p>
1.165 - No, we do not create own classloader.
1.166 - </p>
1.167 - </answer>
1.168 -
1.169 -
1.170 -
1.171 -<answer id="exec-privateaccess">
1.172 - <p>
1.173 - No.
1.174 - </p>
1.175 - </answer>
1.176 -
1.177 - <answer id="exec-process">
1.178 - <p>
1.179 - No external processes executed.
1.180 - </p>
1.181 - </answer>
1.182 -
1.183 -
1.184 - <answer id="exec-property">
1.185 - <ul>
1.186 - </ul>
1.187 - </answer>
1.188 -
1.189 -
1.190 -
1.191 - <answer id="exec-reflection">
1.192 - <p>
1.193 - </p>
1.194 - </answer>
1.195 -
1.196 - <answer id="exec-threading">
1.197 - <p>
1.198 - Everything is synchronous, except pluggable use of <code>java.util.concurrent.Executor</code>
1.199 - that allows to make calls asynchronous. The default implementation only delivers
1.200 - changes from <a href="@TOP@/org/openide/util/lookup/Lookups.html#metaInfServices(java.lang.ClassLoader)">metaInfServices</a>
1.201 - lookup in asynchronous thread.
1.202 - </p>
1.203 - </answer>
1.204 -
1.205 -
1.206 -
1.207 - <answer id="format-clipboard">
1.208 - <p>
1.209 - Not used.
1.210 - </p>
1.211 - </answer>
1.212 -
1.213 -
1.214 -
1.215 - <answer id="format-dnd">
1.216 - <p>
1.217 - The same as for clipboard.
1.218 - </p>
1.219 - </answer>
1.220 -
1.221 - <answer id="format-types">
1.222 - <p>
1.223 - No.
1.224 - </p>
1.225 - </answer>
1.226 -
1.227 -
1.228 -
1.229 - <answer id="lookup-lookup">
1.230 - <ul>
1.231 -
1.232 - <li><api name="LookupSharedClassObject" category="devel" group="lookup" type="export">
1.233 - singleton subclasses of <a href="@org-openide-util@/org/openide/util/SharedClassObject.html">SharedClassObject</a>
1.234 - are searched for using Lookup.
1.235 - </api>.</li>
1.236 -
1.237 - <li><api name="LookupClassLoader" category="devel" group="lookup" type="export">
1.238 - Nearly all resource looking functions and reflective code
1.239 - uses <a href="@JDK@/java/lang/ClassLoader.html">ClassLoader</a>
1.240 - obtained from <a href="@org-openide-util-lookup@/org/openide/util/Lookup.html#getDefault()">Lookup.getDefault()</a>
1.241 - for loading system wide resources.
1.242 - </api>.</li>
1.243 -
1.244 - </ul>
1.245 - </answer>
1.246 -
1.247 -
1.248 -
1.249 - <answer id="lookup-register">
1.250 - <p>
1.251 - No.
1.252 - </p>
1.253 - </answer>
1.254 -
1.255 -
1.256 -
1.257 -<!--
1.258 - <question id="lookup-remove" when="final">
1.259 - Do you remove entries of other modules from lookup?
1.260 - <hint>
1.261 - Why? Of course, that is possible, but it can be dangerous. Is the module
1.262 - your are masking resource from aware of what you are doing?
1.263 - </hint>
1.264 - </question>
1.265 --->
1.266 - <answer id="lookup-remove">
1.267 - <p>
1.268 - No.
1.269 - </p>
1.270 - </answer>
1.271 -
1.272 -
1.273 -
1.274 -<!--
1.275 - <question id="perf-exit" when="final">
1.276 - Does your module run any code on exit?
1.277 - </question>
1.278 --->
1.279 - <answer id="perf-exit">
1.280 - <p>
1.281 - Nothing.
1.282 - </p>
1.283 - </answer>
1.284 -
1.285 -
1.286 -
1.287 -<!--
1.288 - <question id="perf-huge_dialogs" when="final">
1.289 - Does your module contain any dialogs or wizards with a large number of
1.290 - GUI controls such as combo boxes, lists, trees, or text areas?
1.291 - </question>
1.292 --->
1.293 - <answer id="perf-huge_dialogs">
1.294 - <p>
1.295 - No.
1.296 - </p>
1.297 - </answer>
1.298 -
1.299 -
1.300 -
1.301 -<!--
1.302 - <question id="perf-limit" when="init">
1.303 - Are there any hard-coded or practical limits in the number or size of
1.304 - elements your code can handle?
1.305 - </question>
1.306 --->
1.307 - <answer id="perf-limit">
1.308 - <p>
1.309 - </p>
1.310 - </answer>
1.311 -
1.312 -
1.313 -
1.314 -<!--
1.315 - <question id="perf-mem" when="final">
1.316 - How much memory does your component consume? Estimate
1.317 - with a relation to the number of windows, etc.
1.318 - </question>
1.319 --->
1.320 - <answer id="perf-mem">
1.321 - <p>
1.322 - There are no big data structures.
1.323 - </p>
1.324 - </answer>
1.325 -
1.326 -
1.327 -
1.328 -<!--
1.329 - <question id="perf-menus" when="final">
1.330 - Does your module use dynamically updated context menus, or
1.331 - context-sensitive actions with complicated and slow enablement logic?
1.332 - <hint>
1.333 - If you do a lot of tricks when adding actions to regular or context menus, you can significantly
1.334 - slow down display of the menu, even when the user is not using your action. Pay attention to
1.335 - actions you add to the main menu bar, and to context menus of foreign nodes or components. If
1.336 - the action is conditionally enabled, or changes its display dynamically, you need to check the
1.337 - impact on performance. In some cases it may be more appropriate to make a simple action that is
1.338 - always enabled but does more detailed checks in a dialog if it is actually run.
1.339 - </hint>
1.340 - </question>
1.341 --->
1.342 - <answer id="perf-menus">
1.343 - <p>
1.344 - There are no menus.
1.345 - </p>
1.346 - </answer>
1.347 -
1.348 -
1.349 -
1.350 -<!--
1.351 - <question id="perf-progress" when="final">
1.352 - Does your module execute any long-running tasks?
1.353 -
1.354 - <hint>Long running tasks should never block
1.355 - AWT thread as it badly hurts the UI
1.356 - <a href="http://performance.netbeans.org/responsiveness/issues.html">
1.357 - responsiveness</a>.
1.358 - Tasks like connecting over
1.359 - network, computing huge amount of data, compilation
1.360 - be done asynchronously (for example
1.361 - using <code>RequestProcessor</code>), definitively it should
1.362 - not block AWT thread.
1.363 - </hint>
1.364 - </question>
1.365 --->
1.366 - <answer id="perf-progress">
1.367 - <p>
1.368 - No.
1.369 - </p>
1.370 - </answer>
1.371 -
1.372 -
1.373 -
1.374 -<!--
1.375 - <question id="perf-scale" when="init">
1.376 - Which external criteria influence the performance of your
1.377 - program (size of file in editor, number of files in menu,
1.378 - in source directory, etc.) and how well your code scales?
1.379 - <hint>
1.380 - Please include some estimates, there are other more detailed
1.381 - questions to answer in later phases of implementation.
1.382 - </hint>
1.383 - </question>
1.384 --->
1.385 - <answer id="perf-scale">
1.386 - <p>
1.387 - Lookup code scales linearily.
1.388 - </p>
1.389 - </answer>
1.390 -
1.391 -
1.392 -
1.393 -<!--
1.394 - <question id="perf-spi" when="init">
1.395 - How the performance of the plugged in code will be enforced?
1.396 - <hint>
1.397 - If you allow foreign code to be plugged into your own module, how
1.398 - do you enforce that it will behave correctly and quickly and will not
1.399 - negatively influence the performance of your own module?
1.400 - </hint>
1.401 - </question>
1.402 --->
1.403 - <answer id="perf-spi">
1.404 - <p>
1.405 - No enforcing is done.
1.406 - </p>
1.407 - </answer>
1.408 -
1.409 -
1.410 -
1.411 -<!--
1.412 - <question id="perf-startup" when="final">
1.413 - Does your module run any code on startup?
1.414 - </question>
1.415 --->
1.416 - <answer id="perf-startup">
1.417 - <p>
1.418 - No.
1.419 - </p>
1.420 - </answer>
1.421 -
1.422 -
1.423 -
1.424 -<!--
1.425 - <question id="perf-wakeup" when="final">
1.426 - Does any piece of your code wake up periodically and do something
1.427 - even when the system is otherwise idle (no user interaction)?
1.428 - </question>
1.429 --->
1.430 - <answer id="perf-wakeup">
1.431 - <p>
1.432 - No.
1.433 - </p>
1.434 - </answer>
1.435 -
1.436 -
1.437 -
1.438 -<!--
1.439 - <question id="resources-file" when="final">
1.440 - Does your module use <code>java.io.File</code> directly?
1.441 -
1.442 - <hint>
1.443 - NetBeans provide a logical wrapper over plain files called
1.444 - <code>org.openide.filesystems.FileObject</code> that
1.445 - provides uniform access to such resources and is the preferred
1.446 - way that should be used. But of course there can be situations when
1.447 - this is not suitable.
1.448 - </hint>
1.449 - </question>
1.450 --->
1.451 - <answer id="resources-file">
1.452 - <p>
1.453 - No.
1.454 - </p>
1.455 - </answer>
1.456 -
1.457 -
1.458 -
1.459 -<!--
1.460 - <question id="resources-layer" when="final">
1.461 - Does your module provide own layer? Does it create any files or
1.462 - folders in it? What it is trying to communicate by that and with which
1.463 - components?
1.464 -
1.465 - <hint>
1.466 - NetBeans allows automatic and declarative installation of resources
1.467 - by module layers. Module register files into appropriate places
1.468 - and other components use that information to perform their task
1.469 - (build menu, toolbar, window layout, list of templates, set of
1.470 - options, etc.).
1.471 - </hint>
1.472 - </question>
1.473 --->
1.474 - <answer id="resources-layer">
1.475 - <p>
1.476 - No.
1.477 - </p>
1.478 - </answer>
1.479 -
1.480 -
1.481 -
1.482 -<!--
1.483 - <question id="resources-mask" when="final">
1.484 - Does your module mask/hide/override any resources provided by other modules in
1.485 - their layers?
1.486 -
1.487 - <hint>
1.488 - If you mask a file provided by another module, you probably depend
1.489 - on that and do not want the other module to (for example) change
1.490 - the file's name. That module shall thus make that file available as an API
1.491 - of some stability category.
1.492 - </hint>
1.493 - </question>
1.494 --->
1.495 - <answer id="resources-mask">
1.496 - <p>
1.497 - No.
1.498 - </p>
1.499 - </answer>
1.500 -
1.501 -
1.502 -
1.503 -<!--
1.504 - <question id="resources-read" when="final">
1.505 - Does your module read any resources from layers? For what purpose?
1.506 -
1.507 - <hint>
1.508 - As this is some kind of intermodule dependency, it is a kind of API.
1.509 - Please describe it and classify according to
1.510 - <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
1.511 - common stability categories</a>.
1.512 - </hint>
1.513 - </question>
1.514 --->
1.515 - <answer id="resources-read">
1.516 - <p>
1.517 - No.
1.518 - </p>
1.519 - </answer>
1.520 -
1.521 -
1.522 -
1.523 -<!--
1.524 - <question id="security-grant" when="final">
1.525 - Does your code grant additional rights to some other code?
1.526 - <hint>Avoid using a class loader that adds extra
1.527 - permissions to loaded code unless really necessary.
1.528 - Also note that your API implementation
1.529 - can also expose unneeded permissions to enemy code by
1.530 - calling AccessController.doPrivileged().</hint>
1.531 - </question>
1.532 --->
1.533 - <answer id="security-grant">
1.534 - <p>
1.535 - No security permitions manipulated.
1.536 - </p>
1.537 - </answer>
1.538 -
1.539 -
1.540 -
1.541 -<!--
1.542 - <question id="security-policy" when="final">
1.543 - Does your functionality require modifications to the standard policy file?
1.544 - <hint>Your code might pass control to third-party code not
1.545 - coming from trusted domains. This could be code downloaded over the
1.546 - network or code coming from libraries that are not bundled
1.547 - with NetBeans. Which permissions need to be granted to which domains?</hint>
1.548 - </question>
1.549 --->
1.550 - <answer id="security-policy">
1.551 - <p>
1.552 - No security permissions manipulated.
1.553 - </p>
1.554 - </answer>
1.555 -
1.556 -
1.557 -
1.558 -
1.559 -<!--
1.560 - <question id="arch-where" when="init">
1.561 - Where one can find sources for your module?
1.562 - <hint>
1.563 - Please provide link to the CVS web client at
1.564 - http://www.netbeans.org/download/source_browse.html
1.565 - or just use tag defaultanswer generate='here'
1.566 - </hint>
1.567 - </question>
1.568 --->
1.569 - <answer id="arch-where">
1.570 - <defaultanswer generate='here' />
1.571 - </answer>
1.572 -
1.573 -
1.574 -
1.575 -
1.576 -<!--
1.577 - <question id="compat-deprecation" when="init">
1.578 - How the introduction of your project influences functionality
1.579 - provided by previous version of the product?
1.580 - <hint>
1.581 - If you are planning to deprecate/remove/change any existing APIs,
1.582 - list them here accompanied with the reason explaining why you
1.583 - are doing so.
1.584 - </hint>
1.585 - </question>
1.586 --->
1.587 - <answer id="compat-deprecation">
1.588 - <p>
1.589 - XXX no answer for compat-deprecation
1.590 - </p>
1.591 - </answer>
1.592 -
1.593 -
1.594 -
1.595 -<!--
1.596 - <question id="resources-preferences" when="final">
1.597 - Does your module uses preferences via Preferences API? Does your module use NbPreferences or
1.598 - or regular JDK Preferences ? Does it read, write or both ?
1.599 - Does it share preferences with other modules ? If so, then why ?
1.600 - <hint>
1.601 - You may use
1.602 - <api type="export" group="preferences"
1.603 - name="preference node name" category="private">
1.604 - description of individual keys, where it is used, what it
1.605 - influences, whether the module reads/write it, etc.
1.606 - </api>
1.607 - Due to XML ID restrictions, rather than /org/netbeans/modules/foo give the "name" as org.netbeans.modules.foo.
1.608 - Note that if you use NbPreferences this name will then be the same as the code name base of the module.
1.609 - </hint>
1.610 - </question>
1.611 --->
1.612 - <answer id="resources-preferences">
1.613 - <p>
1.614 - XXX no answer for resources-preferences
1.615 - </p>
1.616 - </answer>
1.617 -
1.618 -</api-answers>