jaroslav@563
|
1 |
<?xml version="1.0" encoding="UTF-8"?>
|
jaroslav@563
|
2 |
<!--
|
jaroslav@563
|
3 |
The contents of this file are subject to the terms of the Common Development
|
jaroslav@563
|
4 |
and Distribution License (the License). You may not use this file except in
|
jaroslav@563
|
5 |
compliance with the License.
|
jaroslav@563
|
6 |
|
jaroslav@563
|
7 |
You can obtain a copy of the License at http://www.netbeans.org/cddl.html
|
jaroslav@563
|
8 |
or http://www.netbeans.org/cddl.txt.
|
jaroslav@563
|
9 |
|
jaroslav@563
|
10 |
When distributing Covered Code, include this CDDL Header Notice in each file
|
jaroslav@563
|
11 |
and include the License file at http://www.netbeans.org/cddl.txt.
|
jaroslav@563
|
12 |
If applicable, add the following below the CDDL Header, with the fields
|
jaroslav@563
|
13 |
enclosed by brackets [] replaced by your own identifying information:
|
jaroslav@563
|
14 |
"Portions Copyrighted [year] [name of copyright owner]"
|
jaroslav@563
|
15 |
|
jaroslav@563
|
16 |
The Original Software is NetBeans. The Initial Developer of the Original
|
jaroslav@563
|
17 |
Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
|
jaroslav@563
|
18 |
Microsystems, Inc. All Rights Reserved.
|
jaroslav@563
|
19 |
-->
|
jaroslav@563
|
20 |
<!DOCTYPE api-answers PUBLIC "-//NetBeans//DTD Arch Answers//EN" "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch.dtd" [
|
jaroslav@563
|
21 |
<!ENTITY api-questions SYSTEM "../../nbbuild/antsrc/org/netbeans/nbbuild/Arch-api-questions.xml">
|
jaroslav@563
|
22 |
]>
|
jaroslav@563
|
23 |
|
jaroslav@563
|
24 |
<api-answers
|
jaroslav@563
|
25 |
question-version="1.29"
|
jaroslav@563
|
26 |
author="yourname@netbeans.org"
|
jaroslav@563
|
27 |
>
|
jaroslav@563
|
28 |
|
jaroslav@563
|
29 |
&api-questions;
|
jaroslav@563
|
30 |
|
jaroslav@563
|
31 |
|
jaroslav@563
|
32 |
<!--
|
jaroslav@563
|
33 |
<question id="arch-overall" when="init">
|
jaroslav@563
|
34 |
Describe the overall architecture.
|
jaroslav@563
|
35 |
<hint>
|
jaroslav@563
|
36 |
What will be API for
|
jaroslav@563
|
37 |
<a href="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi">
|
jaroslav@563
|
38 |
clients and what support API</a>?
|
jaroslav@563
|
39 |
What parts will be pluggable?
|
jaroslav@563
|
40 |
How will plug-ins be registered? Please use <code><api type="export"/></code>
|
jaroslav@563
|
41 |
to describe your general APIs and specify their
|
jaroslav@563
|
42 |
<a href="http://openide.netbeans.org/tutorial/api-design.html#category-private">
|
jaroslav@563
|
43 |
stability categories</a>.
|
jaroslav@563
|
44 |
If possible please provide simple diagrams.
|
jaroslav@563
|
45 |
</hint>
|
jaroslav@563
|
46 |
</question>
|
jaroslav@563
|
47 |
-->
|
jaroslav@563
|
48 |
<answer id="arch-overall">
|
jaroslav@563
|
49 |
<p>
|
jaroslav@563
|
50 |
Lookup and the Springframework's injection mechanism seem to be quite
|
jaroslav@563
|
51 |
similar. This module is here to create a bridge between these two.
|
jaroslav@563
|
52 |
</p>
|
jaroslav@563
|
53 |
</answer>
|
jaroslav@563
|
54 |
|
jaroslav@563
|
55 |
|
jaroslav@563
|
56 |
|
jaroslav@563
|
57 |
<!--
|
jaroslav@563
|
58 |
<question id="arch-quality" when="init">
|
jaroslav@563
|
59 |
How will the <a href="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a>
|
jaroslav@563
|
60 |
of your code be tested and
|
jaroslav@563
|
61 |
how are future regressions going to be prevented?
|
jaroslav@563
|
62 |
<hint>
|
jaroslav@563
|
63 |
What kind of testing do
|
jaroslav@563
|
64 |
you want to use? How much functionality, in which areas,
|
jaroslav@563
|
65 |
should be covered by the tests? How you find out that your
|
jaroslav@563
|
66 |
project was successful?
|
jaroslav@563
|
67 |
</hint>
|
jaroslav@563
|
68 |
</question>
|
jaroslav@563
|
69 |
-->
|
jaroslav@563
|
70 |
<answer id="arch-quality">
|
jaroslav@563
|
71 |
<p>
|
jaroslav@563
|
72 |
Unit tests.
|
jaroslav@563
|
73 |
</p>
|
jaroslav@563
|
74 |
</answer>
|
jaroslav@563
|
75 |
|
jaroslav@563
|
76 |
|
jaroslav@563
|
77 |
|
jaroslav@563
|
78 |
<answer id="arch-time">
|
jaroslav@563
|
79 |
<p>
|
jaroslav@563
|
80 |
Initial version ready in 2008, more enhance features per request and contribution.
|
jaroslav@563
|
81 |
</p>
|
jaroslav@563
|
82 |
</answer>
|
jaroslav@563
|
83 |
|
jaroslav@563
|
84 |
|
jaroslav@563
|
85 |
|
jaroslav@563
|
86 |
<!--
|
jaroslav@563
|
87 |
<question id="arch-usecases" when="init">
|
jaroslav@563
|
88 |
<hint>
|
jaroslav@563
|
89 |
Content of this answer will be displayed as part of page at
|
jaroslav@563
|
90 |
http://www.netbeans.org/download/dev/javadoc/usecases.html
|
jaroslav@563
|
91 |
You can use tags <usecase name="name> regular html description </usecase>
|
jaroslav@563
|
92 |
and if you want to use an URL you can prefix if with @TOP@ to begin
|
jaroslav@563
|
93 |
at the root of your javadoc
|
jaroslav@563
|
94 |
</hint>
|
jaroslav@563
|
95 |
|
jaroslav@563
|
96 |
Describe the main <a href="http://openide.netbeans.org/tutorial/api-design.html#usecase">
|
jaroslav@563
|
97 |
use cases</a> of the new API. Who will use it under
|
jaroslav@563
|
98 |
what circumstances? What kind of code would typically need to be written
|
jaroslav@563
|
99 |
to use the module?
|
jaroslav@563
|
100 |
</question>
|
jaroslav@563
|
101 |
-->
|
jaroslav@563
|
102 |
<answer id="arch-usecases">
|
jaroslav@563
|
103 |
<p>
|
jaroslav@563
|
104 |
XXX no answer for arch-usecases
|
jaroslav@563
|
105 |
</p>
|
jaroslav@563
|
106 |
</answer>
|
jaroslav@563
|
107 |
|
jaroslav@563
|
108 |
|
jaroslav@563
|
109 |
|
jaroslav@563
|
110 |
<!--
|
jaroslav@563
|
111 |
<question id="arch-what" when="init">
|
jaroslav@563
|
112 |
What is this project good for?
|
jaroslav@563
|
113 |
<hint>
|
jaroslav@563
|
114 |
Please provide here a few lines describing the project,
|
jaroslav@563
|
115 |
what problem it should solve, provide links to documentation,
|
jaroslav@563
|
116 |
specifications, etc.
|
jaroslav@563
|
117 |
</hint>
|
jaroslav@563
|
118 |
</question>
|
jaroslav@563
|
119 |
-->
|
jaroslav@563
|
120 |
<answer id="arch-what">
|
jaroslav@563
|
121 |
<p>
|
jaroslav@563
|
122 |
<api name="org.netbeans.api.spring" category="official" group="java" type="export"
|
jaroslav@563
|
123 |
url="@TOP@/org/netbeans/api/spring/package-summary.html"
|
jaroslav@563
|
124 |
>
|
jaroslav@563
|
125 |
API for bridging Springframework injection mechanism and Lookup
|
jaroslav@563
|
126 |
</api>
|
jaroslav@563
|
127 |
</p>
|
jaroslav@563
|
128 |
</answer>
|
jaroslav@563
|
129 |
|
jaroslav@563
|
130 |
|
jaroslav@563
|
131 |
|
jaroslav@563
|
132 |
<!--
|
jaroslav@563
|
133 |
<question id="arch-where" when="impl">
|
jaroslav@563
|
134 |
Where one can find sources for your module?
|
jaroslav@563
|
135 |
<hint>
|
jaroslav@563
|
136 |
Please provide link to the Hg web client at
|
jaroslav@563
|
137 |
http://hg.netbeans.org/
|
jaroslav@563
|
138 |
or just use tag defaultanswer generate='here'
|
jaroslav@563
|
139 |
</hint>
|
jaroslav@563
|
140 |
</question>
|
jaroslav@563
|
141 |
-->
|
jaroslav@563
|
142 |
<answer id="arch-where">
|
jaroslav@563
|
143 |
<defaultanswer generate='here' />
|
jaroslav@563
|
144 |
</answer>
|
jaroslav@563
|
145 |
|
jaroslav@563
|
146 |
|
jaroslav@563
|
147 |
|
jaroslav@563
|
148 |
<!--
|
jaroslav@563
|
149 |
<question id="compat-deprecation" when="init">
|
jaroslav@563
|
150 |
How the introduction of your project influences functionality
|
jaroslav@563
|
151 |
provided by previous version of the product?
|
jaroslav@563
|
152 |
<hint>
|
jaroslav@563
|
153 |
If you are planning to deprecate/remove/change any existing APIs,
|
jaroslav@563
|
154 |
list them here accompanied with the reason explaining why you
|
jaroslav@563
|
155 |
are doing so.
|
jaroslav@563
|
156 |
</hint>
|
jaroslav@563
|
157 |
</question>
|
jaroslav@563
|
158 |
-->
|
jaroslav@563
|
159 |
<answer id="compat-deprecation">
|
jaroslav@563
|
160 |
<p>
|
jaroslav@563
|
161 |
XXX no answer for compat-deprecation
|
jaroslav@563
|
162 |
</p>
|
jaroslav@563
|
163 |
</answer>
|
jaroslav@563
|
164 |
|
jaroslav@563
|
165 |
|
jaroslav@563
|
166 |
|
jaroslav@563
|
167 |
<!--
|
jaroslav@563
|
168 |
<question id="compat-i18n" when="impl">
|
jaroslav@563
|
169 |
Is your module correctly internationalized?
|
jaroslav@563
|
170 |
<hint>
|
jaroslav@563
|
171 |
Correct internationalization means that it obeys instructions
|
jaroslav@563
|
172 |
at <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html">
|
jaroslav@563
|
173 |
NetBeans I18N pages</a>.
|
jaroslav@563
|
174 |
</hint>
|
jaroslav@563
|
175 |
</question>
|
jaroslav@563
|
176 |
-->
|
jaroslav@563
|
177 |
<answer id="compat-i18n">
|
jaroslav@563
|
178 |
<p>
|
jaroslav@563
|
179 |
XXX no answer for compat-i18n
|
jaroslav@563
|
180 |
</p>
|
jaroslav@563
|
181 |
</answer>
|
jaroslav@563
|
182 |
|
jaroslav@563
|
183 |
|
jaroslav@563
|
184 |
|
jaroslav@563
|
185 |
<!--
|
jaroslav@563
|
186 |
<question id="compat-standards" when="init">
|
jaroslav@563
|
187 |
Does the module implement or define any standards? Is the
|
jaroslav@563
|
188 |
implementation exact or does it deviate somehow?
|
jaroslav@563
|
189 |
</question>
|
jaroslav@563
|
190 |
-->
|
jaroslav@563
|
191 |
<answer id="compat-standards">
|
jaroslav@563
|
192 |
<p>
|
jaroslav@563
|
193 |
XXX no answer for compat-standards
|
jaroslav@563
|
194 |
</p>
|
jaroslav@563
|
195 |
</answer>
|
jaroslav@563
|
196 |
|
jaroslav@563
|
197 |
|
jaroslav@563
|
198 |
|
jaroslav@563
|
199 |
<!--
|
jaroslav@563
|
200 |
<question id="compat-version" when="impl">
|
jaroslav@563
|
201 |
Can your module coexist with earlier and future
|
jaroslav@563
|
202 |
versions of itself? Can you correctly read all old settings? Will future
|
jaroslav@563
|
203 |
versions be able to read your current settings? Can you read
|
jaroslav@563
|
204 |
or politely ignore settings stored by a future version?
|
jaroslav@563
|
205 |
|
jaroslav@563
|
206 |
<hint>
|
jaroslav@563
|
207 |
Very helpful for reading settings is to store version number
|
jaroslav@563
|
208 |
there, so future versions can decide whether how to read/convert
|
jaroslav@563
|
209 |
the settings and older versions can ignore the new ones.
|
jaroslav@563
|
210 |
</hint>
|
jaroslav@563
|
211 |
</question>
|
jaroslav@563
|
212 |
-->
|
jaroslav@563
|
213 |
<answer id="compat-version">
|
jaroslav@563
|
214 |
<p>
|
jaroslav@563
|
215 |
XXX no answer for compat-version
|
jaroslav@563
|
216 |
</p>
|
jaroslav@563
|
217 |
</answer>
|
jaroslav@563
|
218 |
|
jaroslav@563
|
219 |
|
jaroslav@563
|
220 |
|
jaroslav@563
|
221 |
<!--
|
jaroslav@563
|
222 |
<question id="dep-jre" when="final">
|
jaroslav@563
|
223 |
Which version of JRE do you need (1.2, 1.3, 1.4, etc.)?
|
jaroslav@563
|
224 |
<hint>
|
jaroslav@563
|
225 |
It is expected that if your module runs on 1.x that it will run
|
jaroslav@563
|
226 |
on 1.x+1 if no, state that please. Also describe here cases where
|
jaroslav@563
|
227 |
you run different code on different versions of JRE and why.
|
jaroslav@563
|
228 |
</hint>
|
jaroslav@563
|
229 |
</question>
|
jaroslav@563
|
230 |
-->
|
jaroslav@563
|
231 |
<answer id="dep-jre">
|
jaroslav@563
|
232 |
<p>
|
jaroslav@563
|
233 |
XXX no answer for dep-jre
|
jaroslav@563
|
234 |
</p>
|
jaroslav@563
|
235 |
</answer>
|
jaroslav@563
|
236 |
|
jaroslav@563
|
237 |
|
jaroslav@563
|
238 |
|
jaroslav@563
|
239 |
<!--
|
jaroslav@563
|
240 |
<question id="dep-jrejdk" when="final">
|
jaroslav@563
|
241 |
Do you require the JDK or is the JRE enough?
|
jaroslav@563
|
242 |
</question>
|
jaroslav@563
|
243 |
-->
|
jaroslav@563
|
244 |
<answer id="dep-jrejdk">
|
jaroslav@563
|
245 |
<p>
|
jaroslav@563
|
246 |
XXX no answer for dep-jrejdk
|
jaroslav@563
|
247 |
</p>
|
jaroslav@563
|
248 |
</answer>
|
jaroslav@563
|
249 |
|
jaroslav@563
|
250 |
|
jaroslav@563
|
251 |
|
jaroslav@563
|
252 |
<!--
|
jaroslav@563
|
253 |
<question id="dep-nb" when="init">
|
jaroslav@563
|
254 |
What other NetBeans projects and modules does this one depend on?
|
jaroslav@563
|
255 |
<hint>
|
jaroslav@563
|
256 |
Depending on other NetBeans projects influnces the ability of
|
jaroslav@563
|
257 |
users of your work to customize their own branded version of
|
jaroslav@563
|
258 |
NetBeans by enabling and disabling some modules. Too
|
jaroslav@563
|
259 |
much dependencies restrict this kind of customization. If that
|
jaroslav@563
|
260 |
is your case, then you may want to split your functionality into
|
jaroslav@563
|
261 |
pieces of autoload, eager and regular modules which can be
|
jaroslav@563
|
262 |
enabled independently. Usually the answer to this question
|
jaroslav@563
|
263 |
is generated from your <code>project.xml</code> file, but
|
jaroslav@563
|
264 |
if it is not guessed correctly, you can suppress it by
|
jaroslav@563
|
265 |
specifying <defaultanswer generate="none"/> and
|
jaroslav@563
|
266 |
write here your own. Please describe such projects as imported APIs using
|
jaroslav@563
|
267 |
the <code><api name="identification" type="import or export" category="stable" url="where is the description" /></code>.
|
jaroslav@563
|
268 |
By doing this information gets listed in the summary page of your
|
jaroslav@563
|
269 |
javadoc.
|
jaroslav@563
|
270 |
</hint>
|
jaroslav@563
|
271 |
</question>
|
jaroslav@563
|
272 |
-->
|
jaroslav@563
|
273 |
<answer id="dep-nb">
|
jaroslav@563
|
274 |
<defaultanswer generate='here' />
|
jaroslav@563
|
275 |
</answer>
|
jaroslav@563
|
276 |
|
jaroslav@563
|
277 |
|
jaroslav@563
|
278 |
|
jaroslav@563
|
279 |
<!--
|
jaroslav@563
|
280 |
<question id="dep-non-nb" when="init">
|
jaroslav@563
|
281 |
What other projects outside NetBeans does this one depend on?
|
jaroslav@563
|
282 |
|
jaroslav@563
|
283 |
<hint>
|
jaroslav@563
|
284 |
Depending on 3rd party libraries is always problematic,
|
jaroslav@563
|
285 |
especially if they are not open source, as that complicates
|
jaroslav@563
|
286 |
the licensing scheme of NetBeans. Please enumerate your
|
jaroslav@563
|
287 |
external dependencies here, so it is correctly understood since
|
jaroslav@563
|
288 |
the begining what are the legal implications of your project.
|
jaroslav@563
|
289 |
Also please note that
|
jaroslav@563
|
290 |
some non-NetBeans projects are packaged as NetBeans modules
|
jaroslav@563
|
291 |
(see <a href="http://libs.netbeans.org/">libraries</a>) and
|
jaroslav@563
|
292 |
it is preferred to use this approach when more modules may
|
jaroslav@563
|
293 |
depend and share such third-party libraries.
|
jaroslav@563
|
294 |
</hint>
|
jaroslav@563
|
295 |
</question>
|
jaroslav@563
|
296 |
-->
|
jaroslav@563
|
297 |
<answer id="dep-non-nb">
|
jaroslav@563
|
298 |
<p>
|
jaroslav@563
|
299 |
XXX no answer for dep-non-nb
|
jaroslav@563
|
300 |
</p>
|
jaroslav@563
|
301 |
</answer>
|
jaroslav@563
|
302 |
|
jaroslav@563
|
303 |
|
jaroslav@563
|
304 |
|
jaroslav@563
|
305 |
<!--
|
jaroslav@563
|
306 |
<question id="dep-platform" when="init">
|
jaroslav@563
|
307 |
On which platforms does your module run? Does it run in the same
|
jaroslav@563
|
308 |
way on each?
|
jaroslav@563
|
309 |
<hint>
|
jaroslav@563
|
310 |
If you plan any dependency on OS or any usage of native code,
|
jaroslav@563
|
311 |
please describe why you are doing so and describe how you envision
|
jaroslav@563
|
312 |
to enforce the portability of your code.
|
jaroslav@563
|
313 |
Please note that there is a support for <a href="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/api.html#how-os-specific">OS conditionally
|
jaroslav@563
|
314 |
enabled modules</a> which together with autoload/eager modules
|
jaroslav@563
|
315 |
can allow you to enable to provide the best OS aware support
|
jaroslav@563
|
316 |
on certain OSes while providing compatibility bridge on the not
|
jaroslav@563
|
317 |
supported ones.
|
jaroslav@563
|
318 |
Also please list the supported
|
jaroslav@563
|
319 |
OSes/HW platforms and mentioned the lovest version of JDK required
|
jaroslav@563
|
320 |
for your project to run on. Also state whether JRE is enough or
|
jaroslav@563
|
321 |
you really need JDK.
|
jaroslav@563
|
322 |
</hint>
|
jaroslav@563
|
323 |
</question>
|
jaroslav@563
|
324 |
-->
|
jaroslav@563
|
325 |
<answer id="dep-platform">
|
jaroslav@563
|
326 |
<p>
|
jaroslav@563
|
327 |
XXX no answer for dep-platform
|
jaroslav@563
|
328 |
</p>
|
jaroslav@563
|
329 |
</answer>
|
jaroslav@563
|
330 |
|
jaroslav@563
|
331 |
|
jaroslav@563
|
332 |
|
jaroslav@563
|
333 |
<!--
|
jaroslav@563
|
334 |
<question id="deploy-dependencies" when="final">
|
jaroslav@563
|
335 |
What do other modules need to do to declare a dependency on this one,
|
jaroslav@563
|
336 |
in addition to or instead of the normal module dependency declaration
|
jaroslav@563
|
337 |
(e.g. tokens to require)?
|
jaroslav@563
|
338 |
<hint>
|
jaroslav@563
|
339 |
Provide a sample of the actual lines you would add to a module manifest
|
jaroslav@563
|
340 |
to declare a dependency, for example OpenIDE-Module-Requires: some.token.
|
jaroslav@563
|
341 |
If other modules should not depend on this module, or should just use a
|
jaroslav@563
|
342 |
simple regular module dependency, you can just answer "nothing". If you
|
jaroslav@563
|
343 |
intentionally expose a semistable API to clients using implementation
|
jaroslav@563
|
344 |
dependencies, you should mention that here (but there is no need to give
|
jaroslav@563
|
345 |
an example of usage).
|
jaroslav@563
|
346 |
</hint>
|
jaroslav@563
|
347 |
</question>
|
jaroslav@563
|
348 |
-->
|
jaroslav@563
|
349 |
<answer id="deploy-dependencies">
|
jaroslav@563
|
350 |
<p>
|
jaroslav@563
|
351 |
XXX no answer for deploy-dependencies
|
jaroslav@563
|
352 |
</p>
|
jaroslav@563
|
353 |
</answer>
|
jaroslav@563
|
354 |
|
jaroslav@563
|
355 |
|
jaroslav@563
|
356 |
|
jaroslav@563
|
357 |
<!--
|
jaroslav@563
|
358 |
<question id="deploy-jar" when="impl">
|
jaroslav@563
|
359 |
Do you deploy just module JAR file(s) or other files as well?
|
jaroslav@563
|
360 |
<hint>
|
jaroslav@563
|
361 |
Usually a module consist of one JAR file (perhaps with Class-Path
|
jaroslav@563
|
362 |
extensions) and also a configuration file that enables it. If you
|
jaroslav@563
|
363 |
have any other files, use
|
jaroslav@563
|
364 |
<api group="java.io.File" name="yourname" type="export" category="friend">...</api>
|
jaroslav@563
|
365 |
to define the location, name and stability of your files (of course
|
jaroslav@563
|
366 |
changing "yourname" and "friend" to suit your needs).
|
jaroslav@563
|
367 |
|
jaroslav@563
|
368 |
If it uses more than one JAR, describe where they are located, how
|
jaroslav@563
|
369 |
they refer to each other.
|
jaroslav@563
|
370 |
If it consist of module JAR(s) and other files, please describe
|
jaroslav@563
|
371 |
what is their purpose, why other files are necessary. Please
|
jaroslav@563
|
372 |
make sure that installation/uninstallation leaves the system
|
jaroslav@563
|
373 |
in state as it was before installation.
|
jaroslav@563
|
374 |
</hint>
|
jaroslav@563
|
375 |
</question>
|
jaroslav@563
|
376 |
-->
|
jaroslav@563
|
377 |
<answer id="deploy-jar">
|
jaroslav@563
|
378 |
<p>
|
jaroslav@563
|
379 |
XXX no answer for deploy-jar
|
jaroslav@563
|
380 |
</p>
|
jaroslav@563
|
381 |
</answer>
|
jaroslav@563
|
382 |
|
jaroslav@563
|
383 |
|
jaroslav@563
|
384 |
|
jaroslav@563
|
385 |
<!--
|
jaroslav@563
|
386 |
<question id="deploy-nbm" when="impl">
|
jaroslav@563
|
387 |
Can you deploy an NBM via the Update Center?
|
jaroslav@563
|
388 |
<hint>
|
jaroslav@563
|
389 |
If not why?
|
jaroslav@563
|
390 |
</hint>
|
jaroslav@563
|
391 |
</question>
|
jaroslav@563
|
392 |
-->
|
jaroslav@563
|
393 |
<answer id="deploy-nbm">
|
jaroslav@563
|
394 |
<p>
|
jaroslav@563
|
395 |
XXX no answer for deploy-nbm
|
jaroslav@563
|
396 |
</p>
|
jaroslav@563
|
397 |
</answer>
|
jaroslav@563
|
398 |
|
jaroslav@563
|
399 |
|
jaroslav@563
|
400 |
|
jaroslav@563
|
401 |
<!--
|
jaroslav@563
|
402 |
<question id="deploy-packages" when="init">
|
jaroslav@563
|
403 |
Are packages of your module made inaccessible by not declaring them
|
jaroslav@563
|
404 |
public?
|
jaroslav@563
|
405 |
|
jaroslav@563
|
406 |
<hint>
|
jaroslav@563
|
407 |
By default NetBeans build harness treats all packages are private.
|
jaroslav@563
|
408 |
If you export some of them - either as public or friend packages,
|
jaroslav@563
|
409 |
you should have a reason. If the reason is described elsewhere
|
jaroslav@563
|
410 |
in this document, you can ignore this question.
|
jaroslav@563
|
411 |
</hint>
|
jaroslav@563
|
412 |
</question>
|
jaroslav@563
|
413 |
-->
|
jaroslav@563
|
414 |
<answer id="deploy-packages">
|
jaroslav@563
|
415 |
<p>
|
jaroslav@563
|
416 |
XXX no answer for deploy-packages
|
jaroslav@563
|
417 |
</p>
|
jaroslav@563
|
418 |
</answer>
|
jaroslav@563
|
419 |
|
jaroslav@563
|
420 |
|
jaroslav@563
|
421 |
|
jaroslav@563
|
422 |
<!--
|
jaroslav@563
|
423 |
<question id="deploy-shared" when="final">
|
jaroslav@563
|
424 |
Do you need to be installed in the shared location only, or in the user directory only,
|
jaroslav@563
|
425 |
or can your module be installed anywhere?
|
jaroslav@563
|
426 |
<hint>
|
jaroslav@563
|
427 |
Installation location shall not matter, if it does explain why.
|
jaroslav@563
|
428 |
Consider also whether <code>InstalledFileLocator</code> can help.
|
jaroslav@563
|
429 |
</hint>
|
jaroslav@563
|
430 |
</question>
|
jaroslav@563
|
431 |
-->
|
jaroslav@563
|
432 |
<answer id="deploy-shared">
|
jaroslav@563
|
433 |
<p>
|
jaroslav@563
|
434 |
XXX no answer for deploy-shared
|
jaroslav@563
|
435 |
</p>
|
jaroslav@563
|
436 |
</answer>
|
jaroslav@563
|
437 |
|
jaroslav@563
|
438 |
|
jaroslav@563
|
439 |
|
jaroslav@563
|
440 |
<!--
|
jaroslav@563
|
441 |
<question id="exec-ant-tasks" when="impl">
|
jaroslav@563
|
442 |
Do you define or register any ant tasks that other can use?
|
jaroslav@563
|
443 |
|
jaroslav@563
|
444 |
<hint>
|
jaroslav@563
|
445 |
If you provide an ant task that users can use, you need to be very
|
jaroslav@563
|
446 |
careful about its syntax and behaviour, as it most likely forms an
|
jaroslav@563
|
447 |
API for end users and as there is a lot of end users, their reaction
|
jaroslav@563
|
448 |
when such API gets broken can be pretty strong.
|
jaroslav@563
|
449 |
</hint>
|
jaroslav@563
|
450 |
</question>
|
jaroslav@563
|
451 |
-->
|
jaroslav@563
|
452 |
<answer id="exec-ant-tasks">
|
jaroslav@563
|
453 |
<p>
|
jaroslav@563
|
454 |
XXX no answer for exec-ant-tasks
|
jaroslav@563
|
455 |
</p>
|
jaroslav@563
|
456 |
</answer>
|
jaroslav@563
|
457 |
|
jaroslav@563
|
458 |
|
jaroslav@563
|
459 |
|
jaroslav@563
|
460 |
<!--
|
jaroslav@563
|
461 |
<question id="exec-classloader" when="impl">
|
jaroslav@563
|
462 |
Does your code create its own class loader(s)?
|
jaroslav@563
|
463 |
<hint>
|
jaroslav@563
|
464 |
A bit unusual. Please explain why and what for.
|
jaroslav@563
|
465 |
</hint>
|
jaroslav@563
|
466 |
</question>
|
jaroslav@563
|
467 |
-->
|
jaroslav@563
|
468 |
<answer id="exec-classloader">
|
jaroslav@563
|
469 |
<p>
|
jaroslav@563
|
470 |
XXX no answer for exec-classloader
|
jaroslav@563
|
471 |
</p>
|
jaroslav@563
|
472 |
</answer>
|
jaroslav@563
|
473 |
|
jaroslav@563
|
474 |
|
jaroslav@563
|
475 |
|
jaroslav@563
|
476 |
<!--
|
jaroslav@563
|
477 |
<question id="exec-component" when="impl">
|
jaroslav@563
|
478 |
Is execution of your code influenced by any (string) property
|
jaroslav@563
|
479 |
of any of your components?
|
jaroslav@563
|
480 |
|
jaroslav@563
|
481 |
<hint>
|
jaroslav@563
|
482 |
Often <code>JComponent.getClientProperty</code>, <code>Action.getValue</code>
|
jaroslav@563
|
483 |
or <code>PropertyDescriptor.getValue</code>, etc. are used to influence
|
jaroslav@563
|
484 |
a behavior of some code. This of course forms an interface that should
|
jaroslav@563
|
485 |
be documented. Also if one depends on some interface that an object
|
jaroslav@563
|
486 |
implements (<code>component instanceof Runnable</code>) that forms an
|
jaroslav@563
|
487 |
API as well.
|
jaroslav@563
|
488 |
</hint>
|
jaroslav@563
|
489 |
</question>
|
jaroslav@563
|
490 |
-->
|
jaroslav@563
|
491 |
<answer id="exec-component">
|
jaroslav@563
|
492 |
<p>
|
jaroslav@563
|
493 |
XXX no answer for exec-component
|
jaroslav@563
|
494 |
</p>
|
jaroslav@563
|
495 |
</answer>
|
jaroslav@563
|
496 |
|
jaroslav@563
|
497 |
|
jaroslav@563
|
498 |
|
jaroslav@563
|
499 |
<!--
|
jaroslav@563
|
500 |
<question id="exec-introspection" when="impl">
|
jaroslav@563
|
501 |
Does your module use any kind of runtime type information (<code>instanceof</code>,
|
jaroslav@563
|
502 |
work with <code>java.lang.Class</code>, etc.)?
|
jaroslav@563
|
503 |
<hint>
|
jaroslav@563
|
504 |
Check for cases when you have an object of type A and you also
|
jaroslav@563
|
505 |
expect it to (possibly) be of type B and do some special action. That
|
jaroslav@563
|
506 |
should be documented. The same applies on operations in meta-level
|
jaroslav@563
|
507 |
(Class.isInstance(...), Class.isAssignableFrom(...), etc.).
|
jaroslav@563
|
508 |
</hint>
|
jaroslav@563
|
509 |
</question>
|
jaroslav@563
|
510 |
-->
|
jaroslav@563
|
511 |
<answer id="exec-introspection">
|
jaroslav@563
|
512 |
<p>
|
jaroslav@563
|
513 |
XXX no answer for exec-introspection
|
jaroslav@563
|
514 |
</p>
|
jaroslav@563
|
515 |
</answer>
|
jaroslav@563
|
516 |
|
jaroslav@563
|
517 |
|
jaroslav@563
|
518 |
|
jaroslav@563
|
519 |
<!--
|
jaroslav@563
|
520 |
<question id="exec-privateaccess" when="final">
|
jaroslav@563
|
521 |
Are you aware of any other parts of the system calling some of
|
jaroslav@563
|
522 |
your methods by reflection?
|
jaroslav@563
|
523 |
<hint>
|
jaroslav@563
|
524 |
If so, describe the "contract" as an API. Likely private or friend one, but
|
jaroslav@563
|
525 |
still API and consider rewrite of it.
|
jaroslav@563
|
526 |
</hint>
|
jaroslav@563
|
527 |
</question>
|
jaroslav@563
|
528 |
-->
|
jaroslav@563
|
529 |
<answer id="exec-privateaccess">
|
jaroslav@563
|
530 |
<p>
|
jaroslav@563
|
531 |
XXX no answer for exec-privateaccess
|
jaroslav@563
|
532 |
</p>
|
jaroslav@563
|
533 |
</answer>
|
jaroslav@563
|
534 |
|
jaroslav@563
|
535 |
|
jaroslav@563
|
536 |
|
jaroslav@563
|
537 |
<!--
|
jaroslav@563
|
538 |
<question id="exec-process" when="impl">
|
jaroslav@563
|
539 |
Do you execute an external process from your module? How do you ensure
|
jaroslav@563
|
540 |
that the result is the same on different platforms? Do you parse output?
|
jaroslav@563
|
541 |
Do you depend on result code?
|
jaroslav@563
|
542 |
<hint>
|
jaroslav@563
|
543 |
If you feed an input, parse the output please declare that as an API.
|
jaroslav@563
|
544 |
</hint>
|
jaroslav@563
|
545 |
</question>
|
jaroslav@563
|
546 |
-->
|
jaroslav@563
|
547 |
<answer id="exec-process">
|
jaroslav@563
|
548 |
<p>
|
jaroslav@563
|
549 |
XXX no answer for exec-process
|
jaroslav@563
|
550 |
</p>
|
jaroslav@563
|
551 |
</answer>
|
jaroslav@563
|
552 |
|
jaroslav@563
|
553 |
|
jaroslav@563
|
554 |
|
jaroslav@563
|
555 |
<!--
|
jaroslav@563
|
556 |
<question id="exec-property" when="impl">
|
jaroslav@563
|
557 |
Is execution of your code influenced by any environment or
|
jaroslav@563
|
558 |
Java system (<code>System.getProperty</code>) property?
|
jaroslav@563
|
559 |
On a similar note, is there something interesting that you
|
jaroslav@563
|
560 |
pass to <code>java.util.logging.Logger</code>? Or do you observe
|
jaroslav@563
|
561 |
what others log?
|
jaroslav@563
|
562 |
<hint>
|
jaroslav@563
|
563 |
If there is a property that can change the behavior of your
|
jaroslav@563
|
564 |
code, somebody will likely use it. You should describe what it does
|
jaroslav@563
|
565 |
and the <a href="http://openide.netbeans.org/tutorial/api-design.html#life">stability category</a>
|
jaroslav@563
|
566 |
of this API. You may use
|
jaroslav@563
|
567 |
<pre>
|
jaroslav@563
|
568 |
<api type="export" group="property" name="id" category="private" url="http://...">
|
jaroslav@563
|
569 |
description of the property, where it is used, what it influence, etc.
|
jaroslav@563
|
570 |
</api>
|
jaroslav@563
|
571 |
</pre>
|
jaroslav@563
|
572 |
</hint>
|
jaroslav@563
|
573 |
</question>
|
jaroslav@563
|
574 |
-->
|
jaroslav@563
|
575 |
<answer id="exec-property">
|
jaroslav@563
|
576 |
<p>
|
jaroslav@563
|
577 |
XXX no answer for exec-property
|
jaroslav@563
|
578 |
</p>
|
jaroslav@563
|
579 |
</answer>
|
jaroslav@563
|
580 |
|
jaroslav@563
|
581 |
|
jaroslav@563
|
582 |
|
jaroslav@563
|
583 |
<!--
|
jaroslav@563
|
584 |
<question id="exec-reflection" when="impl">
|
jaroslav@563
|
585 |
Does your code use Java Reflection to execute other code?
|
jaroslav@563
|
586 |
<hint>
|
jaroslav@563
|
587 |
This usually indicates a missing or insufficient API in the other
|
jaroslav@563
|
588 |
part of the system. If the other side is not aware of your dependency
|
jaroslav@563
|
589 |
this contract can be easily broken.
|
jaroslav@563
|
590 |
</hint>
|
jaroslav@563
|
591 |
</question>
|
jaroslav@563
|
592 |
-->
|
jaroslav@563
|
593 |
<answer id="exec-reflection">
|
jaroslav@563
|
594 |
<p>
|
jaroslav@563
|
595 |
XXX no answer for exec-reflection
|
jaroslav@563
|
596 |
</p>
|
jaroslav@563
|
597 |
</answer>
|
jaroslav@563
|
598 |
|
jaroslav@563
|
599 |
|
jaroslav@563
|
600 |
|
jaroslav@563
|
601 |
<!--
|
jaroslav@563
|
602 |
<question id="exec-threading" when="init">
|
jaroslav@563
|
603 |
What threading models, if any, does your module adhere to? How the
|
jaroslav@563
|
604 |
project behaves with respect to threading?
|
jaroslav@563
|
605 |
<hint>
|
jaroslav@563
|
606 |
Is your API threadsafe? Can it be accessed from any threads or
|
jaroslav@563
|
607 |
just from some dedicated ones? Any special relation to AWT and
|
jaroslav@563
|
608 |
its Event Dispatch thread? Also
|
jaroslav@563
|
609 |
if your module calls foreign APIs which have a specific threading model,
|
jaroslav@563
|
610 |
indicate how you comply with the requirements for multithreaded access
|
jaroslav@563
|
611 |
(synchronization, mutexes, etc.) applicable to those APIs.
|
jaroslav@563
|
612 |
If your module defines any APIs, or has complex internal structures
|
jaroslav@563
|
613 |
that might be used from multiple threads, declare how you protect
|
jaroslav@563
|
614 |
data against concurrent access, race conditions, deadlocks, etc.,
|
jaroslav@563
|
615 |
and whether such rules are enforced by runtime warnings, errors, assertions, etc.
|
jaroslav@563
|
616 |
Examples: a class might be non-thread-safe (like Java Collections); might
|
jaroslav@563
|
617 |
be fully thread-safe (internal locking); might require access through a mutex
|
jaroslav@563
|
618 |
(and may or may not automatically acquire that mutex on behalf of a client method);
|
jaroslav@563
|
619 |
might be able to run only in the event queue; etc.
|
jaroslav@563
|
620 |
Also describe when any events are fired: synchronously, asynchronously, etc.
|
jaroslav@563
|
621 |
Ideas: <a href="http://core.netbeans.org/proposals/threading/index.html#recommendations">Threading Recommendations</a> (in progress)
|
jaroslav@563
|
622 |
</hint>
|
jaroslav@563
|
623 |
</question>
|
jaroslav@563
|
624 |
-->
|
jaroslav@563
|
625 |
<answer id="exec-threading">
|
jaroslav@563
|
626 |
<p>
|
jaroslav@563
|
627 |
XXX no answer for exec-threading
|
jaroslav@563
|
628 |
</p>
|
jaroslav@563
|
629 |
</answer>
|
jaroslav@563
|
630 |
|
jaroslav@563
|
631 |
|
jaroslav@563
|
632 |
|
jaroslav@563
|
633 |
<!--
|
jaroslav@563
|
634 |
<question id="format-clipboard" when="impl">
|
jaroslav@563
|
635 |
Which data flavors (if any) does your code read from or insert to
|
jaroslav@563
|
636 |
the clipboard (by access to clipboard on means calling methods on <code>java.awt.datatransfer.Transferable</code>?
|
jaroslav@563
|
637 |
|
jaroslav@563
|
638 |
<hint>
|
jaroslav@563
|
639 |
Often Node's deal with clipboard by usage of <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
|
jaroslav@563
|
640 |
Check your code for overriding these methods.
|
jaroslav@563
|
641 |
</hint>
|
jaroslav@563
|
642 |
</question>
|
jaroslav@563
|
643 |
-->
|
jaroslav@563
|
644 |
<answer id="format-clipboard">
|
jaroslav@563
|
645 |
<p>
|
jaroslav@563
|
646 |
XXX no answer for format-clipboard
|
jaroslav@563
|
647 |
</p>
|
jaroslav@563
|
648 |
</answer>
|
jaroslav@563
|
649 |
|
jaroslav@563
|
650 |
|
jaroslav@563
|
651 |
|
jaroslav@563
|
652 |
<!--
|
jaroslav@563
|
653 |
<question id="format-dnd" when="impl">
|
jaroslav@563
|
654 |
Which protocols (if any) does your code understand during Drag & Drop?
|
jaroslav@563
|
655 |
<hint>
|
jaroslav@563
|
656 |
Often Node's deal with clipboard by usage of <code>Node.drag, Node.getDropType</code>.
|
jaroslav@563
|
657 |
Check your code for overriding these methods. Btw. if they are not overridden, they
|
jaroslav@563
|
658 |
by default delegate to <code>Node.clipboardCopy, Node.clipboardCut and Node.pasteTypes</code>.
|
jaroslav@563
|
659 |
</hint>
|
jaroslav@563
|
660 |
</question>
|
jaroslav@563
|
661 |
-->
|
jaroslav@563
|
662 |
<answer id="format-dnd">
|
jaroslav@563
|
663 |
<p>
|
jaroslav@563
|
664 |
XXX no answer for format-dnd
|
jaroslav@563
|
665 |
</p>
|
jaroslav@563
|
666 |
</answer>
|
jaroslav@563
|
667 |
|
jaroslav@563
|
668 |
|
jaroslav@563
|
669 |
|
jaroslav@563
|
670 |
<!--
|
jaroslav@563
|
671 |
<question id="format-types" when="impl">
|
jaroslav@563
|
672 |
Which protocols and file formats (if any) does your module read or write on disk,
|
jaroslav@563
|
673 |
or transmit or receive over the network? Do you generate an ant build script?
|
jaroslav@563
|
674 |
Can it be edited and modified?
|
jaroslav@563
|
675 |
|
jaroslav@563
|
676 |
<hint>
|
jaroslav@563
|
677 |
<p>
|
jaroslav@563
|
678 |
Files can be read and written by other programs, modules and users. If they influence
|
jaroslav@563
|
679 |
your behaviour, make sure you either document the format or claim that it is a private
|
jaroslav@563
|
680 |
api (using the <api> tag).
|
jaroslav@563
|
681 |
</p>
|
jaroslav@563
|
682 |
|
jaroslav@563
|
683 |
<p>
|
jaroslav@563
|
684 |
If you generate an ant build file, this is very likely going to be seen by end users and
|
jaroslav@563
|
685 |
they will be attempted to edit it. You should be ready for that and provide here a link
|
jaroslav@563
|
686 |
to documentation that you have for such purposes and also describe how you are going to
|
jaroslav@563
|
687 |
understand such files during next release, when you (very likely) slightly change the
|
jaroslav@563
|
688 |
format.
|
jaroslav@563
|
689 |
</p>
|
jaroslav@563
|
690 |
</hint>
|
jaroslav@563
|
691 |
</question>
|
jaroslav@563
|
692 |
-->
|
jaroslav@563
|
693 |
<answer id="format-types">
|
jaroslav@563
|
694 |
<p>
|
jaroslav@563
|
695 |
XXX no answer for format-types
|
jaroslav@563
|
696 |
</p>
|
jaroslav@563
|
697 |
</answer>
|
jaroslav@563
|
698 |
|
jaroslav@563
|
699 |
|
jaroslav@563
|
700 |
|
jaroslav@563
|
701 |
<!--
|
jaroslav@563
|
702 |
<question id="lookup-lookup" when="init">
|
jaroslav@563
|
703 |
Does your module use <code>org.openide.util.Lookup</code>
|
jaroslav@563
|
704 |
or any similar technology to find any components to communicate with? Which ones?
|
jaroslav@563
|
705 |
|
jaroslav@563
|
706 |
<hint>
|
jaroslav@563
|
707 |
NetBeans is build around a generic registry of services called
|
jaroslav@563
|
708 |
lookup. It is preferable to use it for registration and discovery
|
jaroslav@563
|
709 |
if possible. See
|
jaroslav@563
|
710 |
<a href="http://www.netbeans.org/download/dev/javadoc/org-openide-util/org/openide/util/lookup/doc-files/index.html">
|
jaroslav@563
|
711 |
The Solution to Comunication Between Components
|
jaroslav@563
|
712 |
</a>. If you do not plan to use lookup and insist usage
|
jaroslav@563
|
713 |
of other solution, then please describe why it is not working for
|
jaroslav@563
|
714 |
you.
|
jaroslav@563
|
715 |
<br/>
|
jaroslav@563
|
716 |
When filling the final version of your arch document, please
|
jaroslav@563
|
717 |
describe the interfaces you are searching for, where
|
jaroslav@563
|
718 |
are defined, whether you are searching for just one or more of them,
|
jaroslav@563
|
719 |
if the order is important, etc. Also classify the stability of such
|
jaroslav@563
|
720 |
API contract. Use <api group=&lookup& /> tag, so
|
jaroslav@563
|
721 |
your information gets listed in the summary page of your javadoc.
|
jaroslav@563
|
722 |
</hint>
|
jaroslav@563
|
723 |
</question>
|
jaroslav@563
|
724 |
-->
|
jaroslav@563
|
725 |
<answer id="lookup-lookup">
|
jaroslav@563
|
726 |
<p>
|
jaroslav@563
|
727 |
XXX no answer for lookup-lookup
|
jaroslav@563
|
728 |
</p>
|
jaroslav@563
|
729 |
</answer>
|
jaroslav@563
|
730 |
|
jaroslav@563
|
731 |
|
jaroslav@563
|
732 |
|
jaroslav@563
|
733 |
<!--
|
jaroslav@563
|
734 |
<question id="lookup-register" when="final">
|
jaroslav@563
|
735 |
Do you register anything into lookup for other code to find?
|
jaroslav@563
|
736 |
<hint>
|
jaroslav@563
|
737 |
Do you register using layer file or using <code>META-INF/services</code>?
|
jaroslav@563
|
738 |
Who is supposed to find your component?
|
jaroslav@563
|
739 |
</hint>
|
jaroslav@563
|
740 |
</question>
|
jaroslav@563
|
741 |
-->
|
jaroslav@563
|
742 |
<answer id="lookup-register">
|
jaroslav@563
|
743 |
<p>
|
jaroslav@563
|
744 |
XXX no answer for lookup-register
|
jaroslav@563
|
745 |
</p>
|
jaroslav@563
|
746 |
</answer>
|
jaroslav@563
|
747 |
|
jaroslav@563
|
748 |
|
jaroslav@563
|
749 |
|
jaroslav@563
|
750 |
<!--
|
jaroslav@563
|
751 |
<question id="lookup-remove" when="final">
|
jaroslav@563
|
752 |
Do you remove entries of other modules from lookup?
|
jaroslav@563
|
753 |
<hint>
|
jaroslav@563
|
754 |
Why? Of course, that is possible, but it can be dangerous. Is the module
|
jaroslav@563
|
755 |
your are masking resource from aware of what you are doing?
|
jaroslav@563
|
756 |
</hint>
|
jaroslav@563
|
757 |
</question>
|
jaroslav@563
|
758 |
-->
|
jaroslav@563
|
759 |
<answer id="lookup-remove">
|
jaroslav@563
|
760 |
<p>
|
jaroslav@563
|
761 |
XXX no answer for lookup-remove
|
jaroslav@563
|
762 |
</p>
|
jaroslav@563
|
763 |
</answer>
|
jaroslav@563
|
764 |
|
jaroslav@563
|
765 |
|
jaroslav@563
|
766 |
|
jaroslav@563
|
767 |
<!--
|
jaroslav@563
|
768 |
<question id="perf-exit" when="final">
|
jaroslav@563
|
769 |
Does your module run any code on exit?
|
jaroslav@563
|
770 |
</question>
|
jaroslav@563
|
771 |
-->
|
jaroslav@563
|
772 |
<answer id="perf-exit">
|
jaroslav@563
|
773 |
<p>
|
jaroslav@563
|
774 |
XXX no answer for perf-exit
|
jaroslav@563
|
775 |
</p>
|
jaroslav@563
|
776 |
</answer>
|
jaroslav@563
|
777 |
|
jaroslav@563
|
778 |
|
jaroslav@563
|
779 |
|
jaroslav@563
|
780 |
<!--
|
jaroslav@563
|
781 |
<question id="perf-huge_dialogs" when="final">
|
jaroslav@563
|
782 |
Does your module contain any dialogs or wizards with a large number of
|
jaroslav@563
|
783 |
GUI controls such as combo boxes, lists, trees, or text areas?
|
jaroslav@563
|
784 |
</question>
|
jaroslav@563
|
785 |
-->
|
jaroslav@563
|
786 |
<answer id="perf-huge_dialogs">
|
jaroslav@563
|
787 |
<p>
|
jaroslav@563
|
788 |
XXX no answer for perf-huge_dialogs
|
jaroslav@563
|
789 |
</p>
|
jaroslav@563
|
790 |
</answer>
|
jaroslav@563
|
791 |
|
jaroslav@563
|
792 |
|
jaroslav@563
|
793 |
|
jaroslav@563
|
794 |
<!--
|
jaroslav@563
|
795 |
<question id="perf-limit" when="init">
|
jaroslav@563
|
796 |
Are there any hard-coded or practical limits in the number or size of
|
jaroslav@563
|
797 |
elements your code can handle?
|
jaroslav@563
|
798 |
<hint>
|
jaroslav@563
|
799 |
Most of algorithms have increasing memory and speed complexity
|
jaroslav@563
|
800 |
with respect to size of data they operate on. What is the critical
|
jaroslav@563
|
801 |
part of your project that can be seen as a bottleneck with
|
jaroslav@563
|
802 |
respect to speed or required memory? What are the practical
|
jaroslav@563
|
803 |
sizes of data you tested your project with? What is your estimate
|
jaroslav@563
|
804 |
of potential size of data that would cause visible performance
|
jaroslav@563
|
805 |
problems? Is there some kind of check to detect such situation
|
jaroslav@563
|
806 |
and prevent "hard" crashes - for example the CloneableEditorSupport
|
jaroslav@563
|
807 |
checks for size of a file to be opened in editor
|
jaroslav@563
|
808 |
and if it is larger than 1Mb it shows a dialog giving the
|
jaroslav@563
|
809 |
user the right to decide - e.g. to cancel or commit suicide.
|
jaroslav@563
|
810 |
</hint>
|
jaroslav@563
|
811 |
</question>
|
jaroslav@563
|
812 |
-->
|
jaroslav@563
|
813 |
<answer id="perf-limit">
|
jaroslav@563
|
814 |
<p>
|
jaroslav@563
|
815 |
XXX no answer for perf-limit
|
jaroslav@563
|
816 |
</p>
|
jaroslav@563
|
817 |
</answer>
|
jaroslav@563
|
818 |
|
jaroslav@563
|
819 |
|
jaroslav@563
|
820 |
|
jaroslav@563
|
821 |
<!--
|
jaroslav@563
|
822 |
<question id="perf-mem" when="final">
|
jaroslav@563
|
823 |
How much memory does your component consume? Estimate
|
jaroslav@563
|
824 |
with a relation to the number of windows, etc.
|
jaroslav@563
|
825 |
</question>
|
jaroslav@563
|
826 |
-->
|
jaroslav@563
|
827 |
<answer id="perf-mem">
|
jaroslav@563
|
828 |
<p>
|
jaroslav@563
|
829 |
XXX no answer for perf-mem
|
jaroslav@563
|
830 |
</p>
|
jaroslav@563
|
831 |
</answer>
|
jaroslav@563
|
832 |
|
jaroslav@563
|
833 |
|
jaroslav@563
|
834 |
|
jaroslav@563
|
835 |
<!--
|
jaroslav@563
|
836 |
<question id="perf-menus" when="final">
|
jaroslav@563
|
837 |
Does your module use dynamically updated context menus, or
|
jaroslav@563
|
838 |
context-sensitive actions with complicated and slow enablement logic?
|
jaroslav@563
|
839 |
<hint>
|
jaroslav@563
|
840 |
If you do a lot of tricks when adding actions to regular or context menus, you can significantly
|
jaroslav@563
|
841 |
slow down display of the menu, even when the user is not using your action. Pay attention to
|
jaroslav@563
|
842 |
actions you add to the main menu bar, and to context menus of foreign nodes or components. If
|
jaroslav@563
|
843 |
the action is conditionally enabled, or changes its display dynamically, you need to check the
|
jaroslav@563
|
844 |
impact on performance. In some cases it may be more appropriate to make a simple action that is
|
jaroslav@563
|
845 |
always enabled but does more detailed checks in a dialog if it is actually run.
|
jaroslav@563
|
846 |
</hint>
|
jaroslav@563
|
847 |
</question>
|
jaroslav@563
|
848 |
-->
|
jaroslav@563
|
849 |
<answer id="perf-menus">
|
jaroslav@563
|
850 |
<p>
|
jaroslav@563
|
851 |
XXX no answer for perf-menus
|
jaroslav@563
|
852 |
</p>
|
jaroslav@563
|
853 |
</answer>
|
jaroslav@563
|
854 |
|
jaroslav@563
|
855 |
|
jaroslav@563
|
856 |
|
jaroslav@563
|
857 |
<!--
|
jaroslav@563
|
858 |
<question id="perf-progress" when="final">
|
jaroslav@563
|
859 |
Does your module execute any long-running tasks?
|
jaroslav@563
|
860 |
|
jaroslav@563
|
861 |
<hint>Long running tasks should never block
|
jaroslav@563
|
862 |
AWT thread as it badly hurts the UI
|
jaroslav@563
|
863 |
<a href="http://performance.netbeans.org/responsiveness/issues.html">
|
jaroslav@563
|
864 |
responsiveness</a>.
|
jaroslav@563
|
865 |
Tasks like connecting over
|
jaroslav@563
|
866 |
network, computing huge amount of data, compilation
|
jaroslav@563
|
867 |
be done asynchronously (for example
|
jaroslav@563
|
868 |
using <code>RequestProcessor</code>), definitively it should
|
jaroslav@563
|
869 |
not block AWT thread.
|
jaroslav@563
|
870 |
</hint>
|
jaroslav@563
|
871 |
</question>
|
jaroslav@563
|
872 |
-->
|
jaroslav@563
|
873 |
<answer id="perf-progress">
|
jaroslav@563
|
874 |
<p>
|
jaroslav@563
|
875 |
XXX no answer for perf-progress
|
jaroslav@563
|
876 |
</p>
|
jaroslav@563
|
877 |
</answer>
|
jaroslav@563
|
878 |
|
jaroslav@563
|
879 |
|
jaroslav@563
|
880 |
|
jaroslav@563
|
881 |
<!--
|
jaroslav@563
|
882 |
<question id="perf-scale" when="init">
|
jaroslav@563
|
883 |
Which external criteria influence the performance of your
|
jaroslav@563
|
884 |
program (size of file in editor, number of files in menu,
|
jaroslav@563
|
885 |
in source directory, etc.) and how well your code scales?
|
jaroslav@563
|
886 |
<hint>
|
jaroslav@563
|
887 |
Please include some estimates, there are other more detailed
|
jaroslav@563
|
888 |
questions to answer in later phases of implementation.
|
jaroslav@563
|
889 |
</hint>
|
jaroslav@563
|
890 |
</question>
|
jaroslav@563
|
891 |
-->
|
jaroslav@563
|
892 |
<answer id="perf-scale">
|
jaroslav@563
|
893 |
<p>
|
jaroslav@563
|
894 |
XXX no answer for perf-scale
|
jaroslav@563
|
895 |
</p>
|
jaroslav@563
|
896 |
</answer>
|
jaroslav@563
|
897 |
|
jaroslav@563
|
898 |
|
jaroslav@563
|
899 |
|
jaroslav@563
|
900 |
<!--
|
jaroslav@563
|
901 |
<question id="perf-spi" when="init">
|
jaroslav@563
|
902 |
How the performance of the plugged in code will be enforced?
|
jaroslav@563
|
903 |
<hint>
|
jaroslav@563
|
904 |
If you allow foreign code to be plugged into your own module, how
|
jaroslav@563
|
905 |
do you enforce that it will behave correctly and quickly and will not
|
jaroslav@563
|
906 |
negatively influence the performance of your own module?
|
jaroslav@563
|
907 |
</hint>
|
jaroslav@563
|
908 |
</question>
|
jaroslav@563
|
909 |
-->
|
jaroslav@563
|
910 |
<answer id="perf-spi">
|
jaroslav@563
|
911 |
<p>
|
jaroslav@563
|
912 |
XXX no answer for perf-spi
|
jaroslav@563
|
913 |
</p>
|
jaroslav@563
|
914 |
</answer>
|
jaroslav@563
|
915 |
|
jaroslav@563
|
916 |
|
jaroslav@563
|
917 |
|
jaroslav@563
|
918 |
<!--
|
jaroslav@563
|
919 |
<question id="perf-startup" when="final">
|
jaroslav@563
|
920 |
Does your module run any code on startup?
|
jaroslav@563
|
921 |
</question>
|
jaroslav@563
|
922 |
-->
|
jaroslav@563
|
923 |
<answer id="perf-startup">
|
jaroslav@563
|
924 |
<p>
|
jaroslav@563
|
925 |
XXX no answer for perf-startup
|
jaroslav@563
|
926 |
</p>
|
jaroslav@563
|
927 |
</answer>
|
jaroslav@563
|
928 |
|
jaroslav@563
|
929 |
|
jaroslav@563
|
930 |
|
jaroslav@563
|
931 |
<!--
|
jaroslav@563
|
932 |
<question id="perf-wakeup" when="final">
|
jaroslav@563
|
933 |
Does any piece of your code wake up periodically and do something
|
jaroslav@563
|
934 |
even when the system is otherwise idle (no user interaction)?
|
jaroslav@563
|
935 |
</question>
|
jaroslav@563
|
936 |
-->
|
jaroslav@563
|
937 |
<answer id="perf-wakeup">
|
jaroslav@563
|
938 |
<p>
|
jaroslav@563
|
939 |
XXX no answer for perf-wakeup
|
jaroslav@563
|
940 |
</p>
|
jaroslav@563
|
941 |
</answer>
|
jaroslav@563
|
942 |
|
jaroslav@563
|
943 |
|
jaroslav@563
|
944 |
|
jaroslav@563
|
945 |
<!--
|
jaroslav@563
|
946 |
<question id="resources-file" when="final">
|
jaroslav@563
|
947 |
Does your module use <code>java.io.File</code> directly?
|
jaroslav@563
|
948 |
|
jaroslav@563
|
949 |
<hint>
|
jaroslav@563
|
950 |
NetBeans provide a logical wrapper over plain files called
|
jaroslav@563
|
951 |
<code>org.openide.filesystems.FileObject</code> that
|
jaroslav@563
|
952 |
provides uniform access to such resources and is the preferred
|
jaroslav@563
|
953 |
way that should be used. But of course there can be situations when
|
jaroslav@563
|
954 |
this is not suitable.
|
jaroslav@563
|
955 |
</hint>
|
jaroslav@563
|
956 |
</question>
|
jaroslav@563
|
957 |
-->
|
jaroslav@563
|
958 |
<answer id="resources-file">
|
jaroslav@563
|
959 |
<p>
|
jaroslav@563
|
960 |
XXX no answer for resources-file
|
jaroslav@563
|
961 |
</p>
|
jaroslav@563
|
962 |
</answer>
|
jaroslav@563
|
963 |
|
jaroslav@563
|
964 |
|
jaroslav@563
|
965 |
|
jaroslav@563
|
966 |
<!--
|
jaroslav@563
|
967 |
<question id="resources-layer" when="final">
|
jaroslav@563
|
968 |
Does your module provide own layer? Does it create any files or
|
jaroslav@563
|
969 |
folders in it? What it is trying to communicate by that and with which
|
jaroslav@563
|
970 |
components?
|
jaroslav@563
|
971 |
|
jaroslav@563
|
972 |
<hint>
|
jaroslav@563
|
973 |
NetBeans allows automatic and declarative installation of resources
|
jaroslav@563
|
974 |
by module layers. Module register files into appropriate places
|
jaroslav@563
|
975 |
and other components use that information to perform their task
|
jaroslav@563
|
976 |
(build menu, toolbar, window layout, list of templates, set of
|
jaroslav@563
|
977 |
options, etc.).
|
jaroslav@563
|
978 |
</hint>
|
jaroslav@563
|
979 |
</question>
|
jaroslav@563
|
980 |
-->
|
jaroslav@563
|
981 |
<answer id="resources-layer">
|
jaroslav@563
|
982 |
<p>
|
jaroslav@563
|
983 |
XXX no answer for resources-layer
|
jaroslav@563
|
984 |
</p>
|
jaroslav@563
|
985 |
</answer>
|
jaroslav@563
|
986 |
|
jaroslav@563
|
987 |
|
jaroslav@563
|
988 |
|
jaroslav@563
|
989 |
<!--
|
jaroslav@563
|
990 |
<question id="resources-mask" when="final">
|
jaroslav@563
|
991 |
Does your module mask/hide/override any resources provided by other modules in
|
jaroslav@563
|
992 |
their layers?
|
jaroslav@563
|
993 |
|
jaroslav@563
|
994 |
<hint>
|
jaroslav@563
|
995 |
If you mask a file provided by another module, you probably depend
|
jaroslav@563
|
996 |
on that and do not want the other module to (for example) change
|
jaroslav@563
|
997 |
the file's name. That module shall thus make that file available as an API
|
jaroslav@563
|
998 |
of some stability category.
|
jaroslav@563
|
999 |
</hint>
|
jaroslav@563
|
1000 |
</question>
|
jaroslav@563
|
1001 |
-->
|
jaroslav@563
|
1002 |
<answer id="resources-mask">
|
jaroslav@563
|
1003 |
<p>
|
jaroslav@563
|
1004 |
XXX no answer for resources-mask
|
jaroslav@563
|
1005 |
</p>
|
jaroslav@563
|
1006 |
</answer>
|
jaroslav@563
|
1007 |
|
jaroslav@563
|
1008 |
|
jaroslav@563
|
1009 |
|
jaroslav@563
|
1010 |
<!--
|
jaroslav@563
|
1011 |
<question id="resources-preferences" when="final">
|
jaroslav@563
|
1012 |
Does your module uses preferences via Preferences API? Does your module use NbPreferences or
|
jaroslav@563
|
1013 |
or regular JDK Preferences ? Does it read, write or both ?
|
jaroslav@563
|
1014 |
Does it share preferences with other modules ? If so, then why ?
|
jaroslav@563
|
1015 |
<hint>
|
jaroslav@563
|
1016 |
You may use
|
jaroslav@563
|
1017 |
<api type="export" group="preferences"
|
jaroslav@563
|
1018 |
name="preference node name" category="private">
|
jaroslav@563
|
1019 |
description of individual keys, where it is used, what it
|
jaroslav@563
|
1020 |
influences, whether the module reads/write it, etc.
|
jaroslav@563
|
1021 |
</api>
|
jaroslav@563
|
1022 |
Due to XML ID restrictions, rather than /org/netbeans/modules/foo give the "name" as org.netbeans.modules.foo.
|
jaroslav@563
|
1023 |
Note that if you use NbPreferences this name will then be the same as the code name base of the module.
|
jaroslav@563
|
1024 |
</hint>
|
jaroslav@563
|
1025 |
</question>
|
jaroslav@563
|
1026 |
-->
|
jaroslav@563
|
1027 |
<answer id="resources-preferences">
|
jaroslav@563
|
1028 |
<p>
|
jaroslav@563
|
1029 |
XXX no answer for resources-preferences
|
jaroslav@563
|
1030 |
</p>
|
jaroslav@563
|
1031 |
</answer>
|
jaroslav@563
|
1032 |
|
jaroslav@563
|
1033 |
|
jaroslav@563
|
1034 |
|
jaroslav@563
|
1035 |
<!--
|
jaroslav@563
|
1036 |
<question id="resources-read" when="final">
|
jaroslav@563
|
1037 |
Does your module read any resources from layers? For what purpose?
|
jaroslav@563
|
1038 |
|
jaroslav@563
|
1039 |
<hint>
|
jaroslav@563
|
1040 |
As this is some kind of intermodule dependency, it is a kind of API.
|
jaroslav@563
|
1041 |
Please describe it and classify according to
|
jaroslav@563
|
1042 |
<a href="http://openide.netbeans.org/tutorial/api-design.html#categories">
|
jaroslav@563
|
1043 |
common stability categories</a>.
|
jaroslav@563
|
1044 |
</hint>
|
jaroslav@563
|
1045 |
</question>
|
jaroslav@563
|
1046 |
-->
|
jaroslav@563
|
1047 |
<answer id="resources-read">
|
jaroslav@563
|
1048 |
<p>
|
jaroslav@563
|
1049 |
XXX no answer for resources-read
|
jaroslav@563
|
1050 |
</p>
|
jaroslav@563
|
1051 |
</answer>
|
jaroslav@563
|
1052 |
|
jaroslav@563
|
1053 |
|
jaroslav@563
|
1054 |
|
jaroslav@563
|
1055 |
<!--
|
jaroslav@563
|
1056 |
<question id="security-grant" when="final">
|
jaroslav@563
|
1057 |
Does your code grant additional rights to some other code?
|
jaroslav@563
|
1058 |
<hint>Avoid using a class loader that adds extra
|
jaroslav@563
|
1059 |
permissions to loaded code unless really necessary.
|
jaroslav@563
|
1060 |
Also note that your API implementation
|
jaroslav@563
|
1061 |
can also expose unneeded permissions to enemy code by
|
jaroslav@563
|
1062 |
calling AccessController.doPrivileged().</hint>
|
jaroslav@563
|
1063 |
</question>
|
jaroslav@563
|
1064 |
-->
|
jaroslav@563
|
1065 |
<answer id="security-grant">
|
jaroslav@563
|
1066 |
<p>
|
jaroslav@563
|
1067 |
XXX no answer for security-grant
|
jaroslav@563
|
1068 |
</p>
|
jaroslav@563
|
1069 |
</answer>
|
jaroslav@563
|
1070 |
|
jaroslav@563
|
1071 |
|
jaroslav@563
|
1072 |
|
jaroslav@563
|
1073 |
<!--
|
jaroslav@563
|
1074 |
<question id="security-policy" when="final">
|
jaroslav@563
|
1075 |
Does your functionality require modifications to the standard policy file?
|
jaroslav@563
|
1076 |
<hint>Your code might pass control to third-party code not
|
jaroslav@563
|
1077 |
coming from trusted domains. This could be code downloaded over the
|
jaroslav@563
|
1078 |
network or code coming from libraries that are not bundled
|
jaroslav@563
|
1079 |
with NetBeans. Which permissions need to be granted to which domains?</hint>
|
jaroslav@563
|
1080 |
</question>
|
jaroslav@563
|
1081 |
-->
|
jaroslav@563
|
1082 |
<answer id="security-policy">
|
jaroslav@563
|
1083 |
<p>
|
jaroslav@563
|
1084 |
XXX no answer for security-policy
|
jaroslav@563
|
1085 |
</p>
|
jaroslav@563
|
1086 |
</answer>
|
jaroslav@563
|
1087 |
|
jaroslav@563
|
1088 |
</api-answers>
|