spring.lookup/arch.xml
author Jaroslav Tulach <jtulach@netbeans.org>
Sun, 22 Mar 2015 09:34:51 +0100
changeset 980 fdd7f8e3c9e4
permissions -rw-r--r--
Making sure we generate proper javadoc
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>&lt;api type="export"/&gt;</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 &lt;usecase name="name&gt; regular html description &lt;/usecase&gt;
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 &lt;defaultanswer generate="none"/&gt; and
jaroslav@563
   266
            write here your own. Please describe such projects as imported APIs using
jaroslav@563
   267
            the <code>&lt;api name="identification" type="import or export" category="stable" url="where is the description" /&gt;</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
            &lt;api group="java.io.File" name="yourname" type="export" category="friend"&gt;...&lt;/api&gt;
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
                &lt;api type="export" group="property" name="id" category="private" url="http://..."&gt;
jaroslav@563
   569
                    description of the property, where it is used, what it influence, etc.
jaroslav@563
   570
                &lt;/api&gt;            
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 &amp; 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 &lt;api&gt; 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 &lt;api group=&amp;lookup&amp; /&gt; 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
                    &lt;api type="export" group="preferences"
jaroslav@563
  1018
                    name="preference node name" category="private"&gt;
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
                    &lt;/api&gt;
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>