Adding ARC information for taglib editor.
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/web/arch/arch-web-taglibed.xml Wed Feb 19 01:42:45 2003 +0000
1.3 @@ -0,0 +1,719 @@
1.4 +<?xml version="1.0" encoding="UTF-8"?>
1.5 +<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
1.6 + <!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
1.7 +]>
1.8 +
1.9 +<api-answers
1.10 + version="" date=""
1.11 + question-version="1.9"
1.12 + module="WebApps Tag Libarary Editor"
1.13 + author="sgleason@netbeans.org"
1.14 +>
1.15 +
1.16 + &api-questions;
1.17 +
1.18 +
1.19 +<!-- Question: arch-what
1.20 +
1.21 + <question id="arch-what">
1.22 + What is this project good for?
1.23 + <hint>
1.24 + Please provide here few lines describing the the project,
1.25 + what problem it should solve, provide links to documentation,
1.26 + specifications, etc.
1.27 + </hint>
1.28 + </question>
1.29 +-->
1.30 +<answer id="arch-what">
1.31 +This module implements a tag library editor for editing and maintaining
1.32 +JSP tag libraries. tld (Tag Library Descriptor) files are recognized as
1.33 +data object, presented in the explorer as a tree view. Actions are provided to generate
1.34 +tag handlers and package tag libraries in jars.
1.35 +</answer>
1.36 +
1.37 +
1.38 +<!-- Question: compat-i18n
1.39 +
1.40 + <question id="compat-i18n">
1.41 + Is your module correctly internationalized?
1.42 + <hint>
1.43 + Correct internationalization means that it obeys instuctions
1.44 + at <a href="http://www.netbeans.org/devhome/docs/i18n/index.html">
1.45 + NetBeans I18N pages</a>.
1.46 + </hint>
1.47 + </question>
1.48 +-->
1.49 +<answer id="compat-i18n">
1.50 +Yes.
1.51 +</answer>
1.52 +
1.53 +
1.54 +
1.55 +<!-- Question: compat-standards
1.56 +
1.57 + <question id="compat-standards">
1.58 + Does the module implements or defines any standards? Is the
1.59 + implementation exact or it deviates somehow?
1.60 + </question>
1.61 +-->
1.62 +<answer id="compat-standards">
1.63 +It follows the spirit of the JSP 1.2 specification, but it does
1.64 +not directly implement or define any standard.
1.65 +The implementation fully covers the tag library aspects of the JSP
1.66 +1.2 specification.
1.67 +</answer>
1.68 +
1.69 +
1.70 +
1.71 +<!-- Question: compat-version
1.72 +
1.73 + <question id="compat-version">
1.74 + Does your module properly coexists with earlier and future
1.75 + versions? Can you correctly read settings? Will future
1.76 + versions be able to read settings?
1.77 +
1.78 + <hint>
1.79 + Very helpful for reading settings is to store version number
1.80 + there, so future versions can decide whether how to read/convert
1.81 + the settings and older versions can ignore the new ones.
1.82 + </hint>
1.83 + </question>
1.84 +-->
1.85 +<answer id="compat-version">
1.86 +The module can read settings of the previous versions of itself, and future
1.87 +versions of the module are expected to be able to read settings of the current version.
1.88 +
1.89 +Tag libraries compliant with the JSP 1.1 spec can be read, but not written. If the
1.90 +user makes changes the tag libraries will be upgraded to the recent versions.
1.91 +
1.92 +</answer>
1.93 +
1.94 +
1.95 +
1.96 +<!-- Question: dep-jre
1.97 +
1.98 + <question id="dep-jre">
1.99 + Which version of JRE you need (1.2, 1.3, 1.4, etc.)?
1.100 + <hint>
1.101 + It is expected that if your module runs on 1.x that it will run
1.102 + on 1.x+1 if no, state that please. Also describe here cases where
1.103 + you run different code on different versions of JRE and why.
1.104 + </hint>
1.105 + </question>
1.106 +-->
1.107 +<answer id="dep-jre">
1.108 +It uses JRE 1.3 or higher.
1.109 +</answer>
1.110 +
1.111 +
1.112 +
1.113 +<!-- Question: dep-jrejdk
1.114 +
1.115 + <question id="dep-jrejdk">
1.116 + Do you require JDK or is JRE enough?
1.117 + </question>
1.118 +-->
1.119 +<answer id="dep-jrejdk">
1.120 +In theory the JRE should be enough, although this was not tested.
1.121 +</answer>
1.122 +
1.123 +
1.124 +
1.125 +<!-- Question: dep-nb
1.126 +
1.127 + <question id="dep-nb">
1.128 + What other NetBeans projects this one depends on?
1.129 + <hint>
1.130 + If you want, describe such projects as imported API using
1.131 + the <code><api name="identification" type="import or export" category="stable" url="where is the description" /></code>
1.132 + </hint>
1.133 + </question>
1.134 +-->
1.135 +<answer id="dep-nb">
1.136 +It uses various kinds of API's:
1.137 +<ul>
1.138 +<li>
1.139 + <api
1.140 + name="OpenAPIs"
1.141 + type="import"
1.142 + category="stable"
1.143 + url="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/"
1.144 + />
1.145 + NetBeans OpenAPIs
1.146 +</li>
1.147 +<li>
1.148 + <api
1.149 + name="web-core"
1.150 + type="import"
1.151 + category="friend"
1.152 + url=""
1.153 + />
1.154 + The <code>web-core</code> module.
1.155 +</li>
1.156 +<li>
1.157 + <api
1.158 + name="openide.src"
1.159 + type="import"
1.160 + category="stable"
1.161 + url="http://www.netbeans.org/download/dev/javadoc/JavaHierarchyAPI/index.html"
1.162 + />
1.163 + The Java Hierarchy API.
1.164 +</li>
1.165 +<li>
1.166 + <api
1.167 + name="java"
1.168 + type="import"
1.169 + category="private"
1.170 + url="http://java.netbeans.org/"
1.171 + />
1.172 + The <code>java</code> module.
1.173 +</li>
1.174 +<li>
1.175 + <api
1.176 + name="The NetBeans Core"
1.177 + type="import"
1.178 + category="private"
1.179 + url="http://core.netbeans.org/"
1.180 + />
1.181 + The NetBeans Core
1.182 +</li>
1.183 +<li>
1.184 + <api
1.185 + name="xml-apis"
1.186 + type="import"
1.187 + category="friend"
1.188 + url="http://xml.netbeans.org/"
1.189 + />
1.190 + The NetBeans XML module and its APIs.
1.191 +</li>
1.192 +<li>
1.193 + <api
1.194 + name="jarpackager"
1.195 + type="import"
1.196 + category="friend"
1.197 + url="http://jarpackager.netbeans.org/"
1.198 + />
1.199 + The jarpackager module
1.200 +</li>
1.201 +</ul>
1.202 +</answer>
1.203 +
1.204 +
1.205 +<!-- Question: dep-non-nb
1.206 +
1.207 + <question id="dep-non-nb">
1.208 + What other non-NetBeans projects this one depends on?
1.209 +
1.210 + <hint>
1.211 + Some non-NetBeans projects are packaged as NetBeans modules
1.212 + (see <a href="http://libs.netbeans.org">libraries</a>) and
1.213 + it is prefered to use this approach when more modules may
1.214 + depend on such third-party library.
1.215 + </hint>
1.216 + </question>
1.217 +-->
1.218 +<answer id="dep-non-nb">
1.219 +the servlet 2.3 api library is needed for compiling tag libraries.
1.220 + <api
1.221 + name="ServletAPI23"
1.222 + type="import"
1.223 + category="friend"
1.224 + url=""
1.225 + />
1.226 +</answer>
1.227 +
1.228 +
1.229 +
1.230 +<!-- Question: dep-platform
1.231 +
1.232 + <question id="dep-platform">
1.233 + On which platforms your module run? Any? Does it run in the same
1.234 + way?
1.235 + <hint>
1.236 + If your module is using JNI or deals with special differences of
1.237 + OSes like filesystems, etc. please describe here what they are.
1.238 + </hint>
1.239 + </question>
1.240 +-->
1.241 +<answer id="dep-platform">
1.242 +100% pure Java. It should run anywhere.
1.243 +</answer>
1.244 +
1.245 +
1.246 +
1.247 +<!-- Question: deploy-jar
1.248 +
1.249 + <question id="deploy-jar">
1.250 + Do you deploy just module JAR file(s) or some other files?
1.251 + <hint>
1.252 + If your module consist just from one module JAR file, just confirm that.
1.253 + If it uses more than one JAR, describe where there are located, how
1.254 + they refer to each other.
1.255 + If it consist of module JAR(s) and other files, please describe
1.256 + what is their purpose, why other files are necessary. Please
1.257 + make sure that installation/deinstallation leaves the system
1.258 + in state as it was before installation.
1.259 + </hint>
1.260 + </question>
1.261 +-->
1.262 +<answer id="deploy-jar">
1.263 +Besides documentation, there is just the module jar: <code>taglibed.jar</code>.
1.264 +</answer>
1.265 +
1.266 +
1.267 +
1.268 +<!-- Question: deploy-nbm
1.269 +
1.270 + <question id="deploy-nbm">
1.271 + Can you deploy NBM via AutoUpdate center?
1.272 + <hint>
1.273 + If not why?
1.274 + </hint>
1.275 + </question>
1.276 +-->
1.277 +<answer id="deploy-nbm">
1.278 +Yes.
1.279 +</answer>
1.280 +
1.281 +
1.282 +
1.283 +<!-- Question: deploy-packages
1.284 +
1.285 + <question id="deploy-packages">
1.286 + Are packages of your module made inaccessible by not declaring them
1.287 + public?
1.288 +
1.289 + <hint>
1.290 + NetBeans module system allows restriction of access rights to
1.291 + public classes of your module from other modules. This prevents
1.292 + unwanted dependencies of others on your code and should be used
1.293 + whenever possible (<a href="http://www.netbeans.org/download/apis/org/openide/doc-files/upgrade.html#3.4-public-packages">
1.294 + public packages
1.295 + </a>).
1.296 + </hint>
1.297 + </question>
1.298 +-->
1.299 +<answer id="deploy-packages">
1.300 +No.
1.301 +</answer>
1.302 +
1.303 +
1.304 +
1.305 +<!-- Question: deploy-shared
1.306 +
1.307 + <question id="deploy-shared">
1.308 + Do you need to be installed in shared location or only in user directory?
1.309 + <hint>
1.310 + Installation location shall not matter, if it does explain why.
1.311 + </hint>
1.312 + </question>
1.313 +-->
1.314 +<answer id="deploy-shared">
1.315 +Either way is possible.
1.316 +</answer>
1.317 +
1.318 +
1.319 +
1.320 +<!-- Question: exec-classloader
1.321 +
1.322 + <question id="exec-classloader">
1.323 + Does your code uses own classloader?
1.324 + <hint>
1.325 + A bit unusual. Please explain why and what for.
1.326 + </hint>
1.327 + </question>
1.328 +-->
1.329 +<answer id="exec-classloader">
1.330 +No.
1.331 +</answer>
1.332 +
1.333 +
1.334 +
1.335 +<!-- Question: exec-component
1.336 +
1.337 + <question id="exec-component">
1.338 + Is execution of your code influenced by (string) property
1.339 + of any of your components?
1.340 +
1.341 + <hint>
1.342 + Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
1.343 + or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
1.344 + a behaviour of some code. This of course forms an interface that should
1.345 + be documented. Also if one depends on some interface that an object
1.346 + implements (<code>component instanceof Runnable</code>) that forms an
1.347 + API as well.
1.348 + </hint>
1.349 + </question>
1.350 +-->
1.351 +<answer id="exec-component">
1.352 +No.
1.353 +</answer>
1.354 +
1.355 +
1.356 +
1.357 +<!-- Question: exec-privateaccess
1.358 +
1.359 + <question id="exec-privateaccess">
1.360 + Are you aware of any other part of the system calling some of
1.361 + your methods by reflection?
1.362 + <hint>
1.363 + If so, describe the "contract" as an API. Likely private or friend one, but
1.364 + still API and consider rewrite of it.
1.365 + </hint>
1.366 + </question>
1.367 +-->
1.368 +<answer id="exec-privateaccess">
1.369 +No.
1.370 +</answer>
1.371 +
1.372 +
1.373 +
1.374 +<!-- Question: exec-property
1.375 +
1.376 + <question id="exec-property">
1.377 + Is execution of your code influenced by any environment of
1.378 + system (<code>System.getProperty</code>) property?
1.379 +
1.380 + <hint>
1.381 + If there is a property that can change the behaviour of your
1.382 + code, somebody will likely use it. You should describe what it does
1.383 + and the stability category of this API. You may use
1.384 + <PRE>
1.385 + <property name="id" category="private" >
1.386 + description of the property, where it is used, what it influence, etc.
1.387 + </property>
1.388 + </PRE>
1.389 + </hint>
1.390 + </question>
1.391 +-->
1.392 +<answer id="exec-property">
1.393 +No.
1.394 +</answer>
1.395 +
1.396 +
1.397 +
1.398 +<!-- Question: exec-reflection
1.399 +
1.400 + <question id="exec-reflection">
1.401 + Does your code uses java.lang.reflect to execute some other code?
1.402 + <hint>
1.403 + This usually indicates a missing or unsufficient API in the other
1.404 + part of the system. If the other side is not aware of your dependency
1.405 + this contract can be easily broken.
1.406 + </hint>
1.407 + </question>
1.408 +-->
1.409 +<answer id="exec-reflection">
1.410 +No.
1.411 +</answer>
1.412 +
1.413 +
1.414 +
1.415 +<!-- Question: format-clipboard
1.416 +
1.417 + <question id="format-clipboard">
1.418 + Which protocols your code reads/inserts when communicating with
1.419 + clipboard?
1.420 + </question>
1.421 +-->
1.422 +<answer id="format-clipboard">
1.423 +Implementations of cut, copy and paste (<code>CutAction</code>, <code>CopyAction</code>
1.424 +and <code>PasteAction</code>) reads/writes from/into clipboard. It uses standard
1.425 +<a href="http://java.sun.com/j2se/1.4.1/docs/api/java/awt/datatransfer/package-summary.html">java datatransfer mechanism</a>
1.426 +and <a href="http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/util/datatransfer/package-summary.html">Netbeans extension to the mechanism</a>.
1.427 +</answer>
1.428 +
1.429 +
1.430 +<!-- Question: format-dnd
1.431 +
1.432 + <question id="format-dnd">
1.433 + Which protocols your code understands during drag-n-drop?
1.434 + </question>
1.435 +-->
1.436 +<answer id="format-dnd">
1.437 +Drag and drop is not implemented or used by this module.
1.438 +</answer>
1.439 +
1.440 +
1.441 +
1.442 +<!-- Question: format-types
1.443 +
1.444 + <question id="format-types">
1.445 + Which file formats your code reads or writes on disk?
1.446 + </question>
1.447 +-->
1.448 +<answer id="format-types">
1.449 +It reads tld (Tag Library Descriptor) files as defined in
1.450 +the JSP 1.1 and JSP 1.2 specifications.
1.451 +It writes tld (Tag Library Descriptor) files as defined in
1.452 +the JSP 1.2 specification.
1.453 +</answer>
1.454 +
1.455 +
1.456 +
1.457 +<!-- Question: lookup-lookup
1.458 +
1.459 + <question id="lookup-lookup">
1.460 + Does your module uses <code>org.openide.util.Lookup</code>
1.461 + to find any components to communicate to? Which ones?
1.462 +
1.463 + <hint>
1.464 + Please describe the interfaces you are searching for, where
1.465 + are defined, whether you are searching for just one or more of them,
1.466 + if the order is important, etc. Also clasify the stability of such
1.467 + API contract.
1.468 + </hint>
1.469 + </question>
1.470 +-->
1.471 +<answer id="lookup-lookup">
1.472 +No.
1.473 +</answer>
1.474 +
1.475 +
1.476 +
1.477 +<!-- Question: lookup-register
1.478 +
1.479 + <question id="lookup-register">
1.480 + Do you register anything into the lookup for other to find?
1.481 + <hint>
1.482 + Do you register using layer file or using <code>META-INF/services</code>?
1.483 + Who is supposed to find your component?
1.484 + </hint>
1.485 + </question>
1.486 +-->
1.487 +<answer id="lookup-register">
1.488 +No.
1.489 +</answer>
1.490 +
1.491 +
1.492 +
1.493 +<!-- Question: lookup-remove
1.494 +
1.495 + <question id="lookup-remove">
1.496 + Do you remove entries of other modules from lookup?
1.497 + <hint>
1.498 + Why? Of course, that is possible, but it can be dangerous. Is the module
1.499 + your are masking resource from aware of what you are doing?
1.500 + </hint>
1.501 + </question>
1.502 +-->
1.503 +<answer id="lookup-remove">
1.504 +No.
1.505 +</answer>
1.506 +
1.507 +
1.508 +
1.509 +<!-- Question: perf-exit
1.510 +
1.511 + <question id="perf-exit">
1.512 + Does your module executes anything on exit?
1.513 + </question>
1.514 +-->
1.515 +<answer id="perf-exit">
1.516 +No.
1.517 +</answer>
1.518 +
1.519 +
1.520 +
1.521 +<!-- Question: perf-huge_dialogs
1.522 +
1.523 + <question id="perf-huge_dialogs">
1.524 + Does your module contain any dialogs or wizards with huge
1.525 + amount of GUI controls like combo boxes, lists, trees, text
1.526 + areas?
1.527 + </question>
1.528 +-->
1.529 +<answer id="perf-huge_dialogs">
1.530 +The customizer for tags contains a moderately large amount of gui controls,
1.531 +but only 42% of actually being "huge."
1.532 +</answer>
1.533 +
1.534 +
1.535 +
1.536 +<!-- Question: perf-limit
1.537 +
1.538 + <question id="perf-limit">
1.539 + Are there any limits in number/size of elements your code
1.540 + can handle?
1.541 + </question>
1.542 +-->
1.543 +<answer id="perf-limit">
1.544 +When tag handlers are generated, the java files are brought up in the source editor.
1.545 +After about 100 files, this gets a bit slow.
1.546 +</answer>
1.547 +
1.548 +
1.549 +
1.550 +<!-- Question: perf-mem
1.551 +
1.552 + <question id="perf-mem">
1.553 + What is the amount of memory your component occupies? Estimate
1.554 + with a relaction to the number of windows, etc.
1.555 + </question>
1.556 +-->
1.557 +<answer id="perf-mem">
1.558 +The module keeps an in-memory representation of all tag library descriptors
1.559 +(tld files). The xml files tend to be 1 to 10 K in size.
1.560 +</answer>
1.561 +
1.562 +
1.563 +
1.564 +<!-- Question: perf-menus
1.565 +
1.566 + <question id="perf-menus">
1.567 + Does your module use dynamically changing context menus or
1.568 + context sensitive actions with complicated logic for enable/disable?
1.569 + </question>
1.570 +-->
1.571 +<answer id="perf-menus">
1.572 +No.
1.573 +</answer>
1.574 +
1.575 +
1.576 +
1.577 +<!-- Question: perf-progress
1.578 +
1.579 + <question id="perf-progress">
1.580 + Does your module executes some long running task?
1.581 + <hint>Typically they are tasks like connecting over
1.582 + network, computing huge amount of data, compilation.
1.583 + Such communication should be done asynchronously (for example
1.584 + using <code>RequestProcessor</code>), definitively it should
1.585 + not block AWT thread.
1.586 + </hint>
1.587 + </question>
1.588 +-->
1.589 +<answer id="perf-progress">
1.590 +Code generation can take some time writing java files. Progress is indicated with
1.591 +messages in the ide's status bar.
1.592 +</answer>
1.593 +
1.594 +
1.595 +
1.596 +<!-- Question: perf-scale
1.597 +
1.598 + <question id="perf-scale">
1.599 + Which external criteria influence the performance of your
1.600 + program (size of file in editor, number of files in menu,
1.601 + in source directory, etc.) and how well your code scales?
1.602 + Please include some estimates.
1.603 + </question>
1.604 +-->
1.605 +<answer id="perf-scale">
1.606 +Number of tags in a tag library. When it gets to over 100, generating code
1.607 +for all the tags takes a long time and a lot of memory, since each file is opened in the source editor.
1.608 +</answer>
1.609 +
1.610 +
1.611 +
1.612 +<!-- Question: perf-startup
1.613 +
1.614 + <question id="perf-startup">
1.615 + Does your module executes anything on startup?
1.616 + </question>
1.617 +-->
1.618 +<answer id="perf-startup">
1.619 +Currently the tld files are parsed as they are recognized. This is being
1.620 +changed to have them parsed as they are needed.
1.621 +</answer>
1.622 +
1.623 +
1.624 +
1.625 +<!-- Question: perf-wakeup
1.626 +
1.627 + <question id="perf-wakeup">
1.628 + Is any piece of your code waking up periodically?
1.629 + </question>
1.630 +-->
1.631 +<answer id="perf-wakeup">
1.632 +No. Just the developer.
1.633 +</answer>
1.634 +
1.635 +
1.636 +
1.637 +<!-- Question: resources-file
1.638 +
1.639 + <question id="resources-file">
1.640 + Does your module use <code>java.io.File</code> directly?
1.641 +
1.642 + <hint>
1.643 + NetBeans provide a logical wrapper over plain files called
1.644 + <code>org.openide.filesystems.FileObject</code> that
1.645 + provides uniform access to such resources and is the prefered
1.646 + way that should be used. But of course there can be situations when
1.647 + this is not suitable.
1.648 + </hint>
1.649 + </question>
1.650 +-->
1.651 +<answer id="resources-file">
1.652 +Yes, java.io.File is used to get absolute paths to files when generating
1.653 +code and finding jar files. Also, paths can be specified for files which are
1.654 +not yet mounted. Their filesystems will be mounted when they are needed
1.655 +(for example, when generating tag handlers into a user-specified directory).
1.656 +</answer>
1.657 +
1.658 +
1.659 +
1.660 +<!-- Question: resources-layer
1.661 +
1.662 + <question id="resources-layer">
1.663 + Does your module provide own layer? Does it create some files or
1.664 + folders on it? What it is trying to communicate by that and with which
1.665 + component?
1.666 +
1.667 + <hint>
1.668 + NetBeans allows automatic and declarative installation of resources
1.669 + by module layers. Module register files into appropriate places
1.670 + and other components use that information to perform their task
1.671 + (build menu, toolbar, window layout, list of templates, set of
1.672 + options, etc.).
1.673 + </hint>
1.674 + </question>
1.675 +-->
1.676 +<answer id="resources-layer">
1.677 +The layer file is used for the following purposes:
1.678 +<ul>
1.679 + <li>Register templates, which then appear in the <code>New...</code> menu.</li>
1.680 +</ul>
1.681 +</answer>
1.682 +
1.683 +
1.684 +
1.685 +<!-- Question: resources-mask
1.686 +
1.687 + <question id="resources-mask">
1.688 + Does your module mask/hide/override any resource provided by another one in
1.689 + module layer?
1.690 +
1.691 + <hint>
1.692 + If you mask a file provided by another module, you probably depend
1.693 + on that and do not want the other module to (for example) change
1.694 + the file's name. That module shall thus make that file available as an API
1.695 + of some stability category.
1.696 + </hint>
1.697 + </question>
1.698 +-->
1.699 +<answer id="resources-mask">
1.700 +No.
1.701 +</answer>
1.702 +
1.703 +
1.704 +
1.705 +<!-- Question: resources-read
1.706 +
1.707 + <question id="resources-read">
1.708 + Does your module read any resources from layers? For what purpose?
1.709 +
1.710 + <hint>
1.711 + As this is some kind of intermodule dependency, it is a kind of API.
1.712 + Please describe it and clasify according to
1.713 + <a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
1.714 + common stability categories</a>.
1.715 + </hint>
1.716 + </question>
1.717 +-->
1.718 +<answer id="resources-read">
1.719 +No.
1.720 +</answer>
1.721 +
1.722 +</api-answers>