<!-- <questionid="arch-overall"when="init"> Describetheoverallarchitecture. <hint> WhatwillbeAPIfor <ahref="http://openide.netbeans.org/tutorial/api-design.html#design.apiandspi"> clientsandwhatsupportAPI</a>? Whatpartswillbepluggable? Howwillplug-insberegistered?Pleaseuse<code><apitype="export"/></code> todescribeyourgeneralAPIsandspecifytheir <ahref="http://openide.netbeans.org/tutorial/api-design.html#category-private"> stabilitycategories</a>. Ifpossiblepleaseprovidesimplediagrams. </hint> </question>
-->
<answer id="arch-overall">
<p>
AutoUpdate feature provides several services to IDE: <b>download and install</b> available updates of installed modules,
<b>search and install</b> new features from subscribed Update Centers, <b>browsing and manipulating</b>
the modules in IDE installation and handling of module <b>localizations</b>.
To use the services have to AutoUpdate supply a GUI to easy manipulating. AutoUpdate feature has to care about
registration Update Centers as well.
</p>
<p>Several several services means that Autoupdate feature contain several <b>parts of functionality</b>.
These part of AutoUpdate should communicate each other. Moreover, some interface <b>should be public</b>.
One of them is <b>SPI</b> (<code><api type="export" category="official" group="java" name="org.netbeans.spi.autoupdate"url="@TOP@/overview-summary.html"/></code>) for Update Center backend - allows to create and subscribe the Update Center in IDE.
Next there should be a <b>API</b> (<code><api type="export" category="official" group="java" name="org.netbeans.api.autoupdate"url="@TOP@/overview-summary.html"/></code>) which communicate to rest of IDE and provide some services what is useful for
NB installers, a non-visual client of Auto Update which make possible to use Auto Update from command line
as standalone application in "admin" mode. All of them needs a APIs. This document describes proposed APIs,
supposed use-cases and design of interaction Auto Update parts each other.
<br />
<img class="inline" src="@TOP@/org/netbeans/api/autoupdate/doc-files/schema.png" alt="schema.png" />
</p>
<b>Naming</b>: <i>What is feature?</i> Group of modules which are close connected together and cannot acts separately.
I think that <b>feature</b> is common understand notation
and fits its matter we will use it from now on.
</answer>
<!-- <questionid="arch-quality"when="init"> Howwillthe<ahref="http://www.netbeans.org/community/guidelines/q-evangelism.html">quality</a> ofyourcodebetestedand howarefutureregressionsgoingtobeprevented? <hint> Whatkindoftestingdo youwanttouse?Howmuchfunctionality,inwhichareas, shouldbecoveredbythetests?Howyoufindoutthatyour projectwassuccessful? </hint> </question>
-->
<answer id="arch-quality">
<p>
The API will be unit tested, of course. The test over-all will be done by API clients, Autoupdate UI at first
and CLI client of Autoupdate Services, which is projected as well.
</p>
</answer>
Describethemain<ahref="http://openide.netbeans.org/tutorial/api-design.html#usecase"> usecases</a>ofthenewAPI.Whowilluseitunder whatcircumstances?Whatkindofcodewouldtypicallyneedtobewritten tousethemodule? </question>
-->
<answer id="arch-usecases">
<usecase id="browse" name="Browse all available units">
Give overview of IDE installation to users, it involve overview of installed modules (grouped together as feature),
overview of available updates, overview of available new features.
The API can return list of <code>UpdateUnit</code> which describes all instances of unit, e.g. installation in IDE,
all its available updates, optionlly its backup instance.
<code>UpdateUnit</code> can represent either a feature (e.g. group
of modules), a single module or a localization.
<br/>
<i>Proposed usage of API:</i> Call <code>List<UpdateUnit> UpdateManager.getDefault().getUpdateUnits()</code> <!-- JST:UpdateManager cannot be singleton because it has mutable statewithapplymethod.Imho,thereshouldbeUpdateManager.create(...). Theargumentscouldhandlevariousrequirements,like create(FEATURE_LEVEL)orcreate(DETAILED_LEVEL),etc.
-->
</usecase>
<usecase id="browse-by-style" name="Browse all units by chosen style (e.g. modules, features, localization)">
Sometimes there can be a need to get overview of units
by chosen style, e.g. feature, module or localization.
<br/>
<i>Proposed usage of API:</i> Call <code>List<UpdateUnit> UpdateManager.getDefault().getUpdateUnits(UpdateStyle style)</code>
</usecase>
<usecase id="browse-installed" name="Browse installed modules">
When an API client needs to get overview of installed modules.
<br/>
<i>Proposed usage of API:</i> Call <code>List<UpdateUnit> UpdateManager.getDefault().getUpdateUnits(UpdateStyle style)</code>
and filter units which haven't been installed yet. <!-- JST: The comment by Tonda was that this may be too slow. Thismayturntrue,thenIsuggesttohaveanotherargument totheUpdateManager.create(...)method-"correctness": -LOCAL-onlyreturnwhatisavailablelocally -PREFER_CACHES-ifcachesexistsreadfromthem,but ifnot,goandconnecttothewebsites -EXACT-alwaystrytogetthemostup-to-dateinfoavailable, e.g.donotusecaches,connecttothewebsite
-->
</usecase>
<usecase id="search-by-attribute" name="Search for new functionality">
Someone is searching for some functionality which can be
installed into IDE. It needs a set of available <code>UpdateUnit</code>s
which are applicable to active IDE. <code>UpdateManager</code> will
search all available <code>UpdateUnit</code> given attribute.
</usecase>
<a id="install-new-functionality"></a>
<usecase id="install-new-functionality" name="Install new functionality">
An client needs to install new functionality into the IDE installation.
She knows what unit and what version wants to install.
Needs to identify if the functionality is ready to install,
resolve its dependencies, identify possible problems and locate
other unit what have to be installed together with asked functionality.
<br/>
<i>Proposed usage of API:</i>
<ul>
<li>Client needs install NetBeans module in required minimal specification version.</li>
<li>Find corresnponing <code>UpdateUnit</code> by module's code name and finds <code>UpdateElement</code> what fits the required version.</li>
<li>So, the client now have <code>UpdateElement</code> which wants to install.</li>
<li>Take the <code>OperationContainer</code> for install, e.g. <code>OperationContainer.createForInstall</code></li>
<li>Adds the element into container <code>OperationContainer.add(UpdateElement)</code> and gets <code>OperationInfo</code> for that operation.</li>
<li>Identify other required elements: <code>OperationInfo.getRequiredElements()</code></li>
<li>Check if there is no broken dependencies: <code>OperationInfo.getBrokenDependency()</code> Note: if there are some broken dependencies then operation cannot continue.</li>
<li>If all okay, then install the unit: <code>OperationContainer.doOperation()</code></li>
</ul>
</usecase>
<usecase id="update-installed" name="Update of installed unit">
A client needs to update some unit of functionality which is
already installed. She knows what unit and what update element (by version) wants to install.
Needs to identify possible problems with update install, resolve its dependencies, identify possible problems and locate
other unit what have to be installed together with asked functionality.
<br/>
<i>Proposed usage of API:</i> See above <a href="#install-new-functionality">Install new functionality</a>
</usecase>
<usecase id="uninstall-unit" name="Uninstall functionality">
An client needs to uninstall some functionality from IDE installation. She knows what unit wants to uninstall.
Needs to identify if the functionality is ready to uninstall, resolve its dependencies, identify possible problems and locate
other unit what will be disabled together.
<br/>
<i>Proposed usage of API:</i>
<ul>
<li>Client knows <code>UpdateElement</code> which wants to uninstall.</li>
<li>Take the <code>OperationContainer</code> for uninstall, e.g. <code>OperationContainer.createForUninstall</code></li>
<li>Adds the element into container <code>OperationContainer.add(UpdateElement)</code> and gets <code>OperationInfo</code> for that operation.</li>
<li>Identify other required elements: <code>OperationInfo.getRequiredElements()</code></li>
<li>If all okay, then uninstall the unit: <code>OperationContainer.doOperation()</code></li>
</ul>
</usecase>
<a id="disable-unit"/>
<usecase id="disable-unit" name="Switch off functionality">
An client needs to switch off (disable) some functionality in IDE installation. Needs to resolve its dependencies,
identify possible problems and locate other unit what will be disabled together.
<br/>
<i>Proposed usage of API:</i>
<ul>
<li>Client knows <code>UpdateElement</code> which wants to uninstall.</li>
<li>Take the <code>OperationContainer</code> for disable, e.g. <code>OperationContainer.createForDisable</code></li>
<li>Adds the element into container <code>OperationContainer.add(UpdateElement)</code> and gets <code>OperationInfo</code> for that operation.</li>
<li>Identify other required elements: <code>OperationInfo.getRequiredElements()</code></li>
<li>If all okay, then disable the unit: <code>OperationContainer.doOperation()</code></li>
</ul>
</usecase>
<usecase id="enable-unit" name="Switch on functionality">
Like <a href="#disable-unit">Switch off functionality</a> An client needs to switch on (enable) some functionality in IDE installation.
</usecase>
<usecase id="rollback-of-update" name="Rollback of previous update">
Sometimes an client needs to rollback of installed update of unit to previous version.
Needs to resolve its dependencies, identify possible problems and locate
other unit what are affected by rollback.
<br/>
<i>Proposed usage of API:</i> Like above <a href="#disable-unit">Switch off functionality</a>
<ul>
<li>Client knows <code>UpdateElement</code> which wants to uninstall.</li>
<li>Take the <code>OperationContainer</code> for enable, e.g. <code>OperationContainer.createForEnable</code></li>
<li>Adds the element into container <code>OperationContainer.add(UpdateElement)</code> and gets <code>OperationInfo</code> for that operation.</li>
<li>Identify other required elements: <code>OperationInfo.getRequiredElements()</code></li>
<li>If all okay, then enable the unit: <code>OperationContainer.doOperation()</code></li>
</ul>
</usecase>
<usecase id="resolve-problems" name="Resolve problems what accrued while processing operation">
<code>OperationContainer</code> and <code>OperationInfo</code> identifies some problems,
i.e. broken dependencies, needs to install more units, the operation causes disable some
other modules and so on. The client can use this information to consult these with end-user.
</usecase>
<usecase id="make-ide-up-to-date" name="Make IDE up-to-date">
Sometimes need to make whole IDE installation up-to-date. Find all available updates of installed units and install the latest available version.
It is covered by previous use-cases.
</usecase>
<usecase id="browse-update-providers" name="Get all subscriptions to Update Center">
Show me all registered subscriptions to Update Center, e.g. get me list of <code>UpdateUnitProvider</code>.
<i>Proposed usage of API:</i> Call <code>UpdateUnitProviderFactory.getUpdateUnitProviders()</code>
</usecase>
<usecase id="add-update-provider" name="Subscribe new Update Center">
If there is a new Update Center which is not already subscribed into IDE user wants to subscribe new one Update
Center which will be connected from that time in periodically checks.
There should be a factory where subscribe new one Update Center, known types of Update Center have own factory method.
<i>Proposed usage of API:</i> Simply call <code>UpdateUnitProviderFactory.create()</code> which creates and registered
new one subscription in the system and will be used from that time in the future.
</usecase>
<usecase id="custom-update-provider" name="Customization of Update Center subscription">
An user wants to enable or disable of Update Center subscription.
<i>Proposed usage of API:</i> Simply call <code>UpdateUnitProviderFactory.setEnable(UpdateUnitProvider, boolean)</code>.
</usecase>
<usecase id="remove-update-provider" name="Unsubscribe of some Update Center">
Simple unsubscribe a chosen Update Center from the system. Need to know of chosen Update Provider Id.
This Update Center won't be checked anymore.
<i>Proposed usage of API:</i> Simply call <code>UpdateUnitProviderFactory.remove(Id)</code>.
</usecase>
<usecase id="refresh-content" name="Refresh content of subscribed Update Center">
The content of Update Provider is cached and the system works across there caches. There is a cache per each
Update Center subscription. The caches are refreshed periodically by the system. But, sometime an user wants to
call refresh manually.
<i>Proposed usage of API:</i> Simply call <code>UpdateUnitProvider.refresh()</code>.
</usecase>
<usecase id="specify-target-cluster" name="Specify the cluster where to install">TBD</usecase>
<usecase id="get-installed-files" name="Get all installed files of given unit">TBD</usecase>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
Provides the APIs and SPIs to support the AutoUpdate feature.
</answer>
<!-- <questionid="compat-deprecation"when="init"> Howtheintroductionofyourprojectinfluencesfunctionality providedbypreviousversionoftheproduct? <hint> Ifyouareplanningtodeprecate/remove/changeanyexistingAPIs, listthemhereaccompaniedwiththereasonexplainingwhyyou aredoingso. </hint> </question>
-->
<answer id="compat-deprecation">
<p>
Replacement of <code>Autoupdate</code> module. Autoupdate didn't provide
any official API in previous releases, the ad-hoc usage of <code>Autoupdate</code> module
will be covered of proposed API.
<br></br>
The proposed module will keep using structure of <code>NBM</code>, e.g. these APIs
<api name="catalog-dtd"type="export" group="dtd" category="stable"url="@TOP@/org/netbeans/spi/autoupdate/doc-files/autoupdate-catalog-2_4.dtd"/>
<api name="info-dtd"type="export" category="stable" group="dtd"url="@TOP@/org/netbeans/spi/autoupdate/doc-files/autoupdate-info-2_4.dtd"/>
<br></br>
Also registration of Update Centers in the layer will work after.
<br></br>
The module provides <code>Unique ID</code> to tracking of active users.
<api name="unique-id" category="stable" group="preferences"type="export"/>
<br></br>
In module's preferences are stored properties what <code>UpdateUnitProvider</code> are enabled or disabled and when has been connected at the last time.
<api name="enable-update-provider" category="private" group="preferences"type="export"/>
<api name="last-check-of-provider" category="private" group="preferences"type="export"/>
</p>
</answer>
<!-- <questionid="compat-i18n"when="impl"> Isyourmodulecorrectlyinternationalized? <hint> Correctinternationalizationmeansthatitobeysinstructions at<ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-modules/org/openide/modules/doc-files/i18n-branding.html"> NetBeansI18Npages</a>. </hint> </question>
-->
<answer id="compat-i18n">
<p>
XXX no answer for compat-i18n
</p>
</answer>
Specification version 1.9
is required.
</api>
</li>
<li><api type='import' group='java' category='friend' name='org.netbeans.bootstrap'>
The module is needed for compilation.
The module is used during runtime.
Specification version 2.6
is required.
</api>
</li>
<li><api type='import' group='java' category='friend' name='org.netbeans.core.startup' >
The module is needed for compilation.
The module is used during runtime.
Specification version 1.9
is required.
</api>
</li>
<li><api type='import' group='java' category='official' name='org.openide.filesystems'url='../org-openide-filesystems/overview-summary.html' >
The module is needed for compilation.
The module is used during runtime.
Specification version 7.0
is required.
</api>
</li>
<li><api type='import' group='java' category='official' name='org.openide.modules'url='../org-openide-modules/overview-summary.html' >
The module is needed for compilation.
The module is used during runtime.
Specification version 7.2
is required.
</api>
</li>
<li><api type='import' group='java' category='official' name='org.openide.util'url='../org-openide-util/overview-summary.html' >
The module is needed for compilation.
The module is used during runtime.
Specification version 7.5
is required.
</api>
</li>
<li><api type='import' group='java' category='official' name='org.openide.windows'url='../org-openide-windows/overview-summary.html' >
The module is needed for compilation.
The module is used during runtime.
Specification version 6.15
is required.
</api>
</li>
</ul>
</answer>
<hint> BydefaultNetBeansbuildharnesstreatsallpackagesareprivate. Ifyouexportsomeofthem-eitheraspublicorfriendpackages, youshouldhaveareason.Ifthereasonisdescribedelsewhere inthisdocument,youcanignorethisquestion. </hint> </question>
-->
<answer id="deploy-packages">
<p>
Autoupdate UI will depends on this API, next one client of this API
would be NetBeans installer.
Modules which want to declare own Update Provider (aka Update Center)
depends on Autoupdate SPI.
</p>
</answer>
<!-- <questionid="deploy-shared"when="final"> Doyouneedtobeinstalledinthesharedlocationonly,orintheuserdirectoryonly, orcanyourmodulebeinstalledanywhere? <hint> Installationlocationshallnotmatter,ifitdoesexplainwhy. Consideralsowhether<code>InstalledFileLocator</code>canhelp. </hint> </question>
-->
<answer id="deploy-shared">
<p>
XXX no answer for deploy-shared
</p>
</answer>
<hint> Often<code>JComponent.getClientProperty</code>,<code>Action.getValue</code> or<code>PropertyDescriptor.getValue</code>,etc.areusedtoinfluence abehaviorofsomecode.Thisofcourseformsaninterfacethatshould bedocumented.Alsoifonedependsonsomeinterfacethatanobject implements(<code>componentinstanceofRunnable</code>)thatformsan APIaswell. </hint> </question>
-->
<answer id="exec-component">
<api name="InitialTab" category="friend" group="property"type="export">
<p>
The associated module autoupdate.ui provides possibility to open plugin manager dialog (<code>PluginManagerUI</code>) with the specified tab.
That is controlled by setting this string property to one of the following values:
</p>
<ul>
<li>update</li>
<li>available</li>
<li>local</li>
<li>installed</li>
</ul>
<p>
If property is not set (as default) then default tab is choosen due to the UI spec.
</p>
<i>Proposed usage of API:</i>
<pre>
final FileObject fo = FileUtil.getConfigFile("Actions/System/org-netbeans-modules-autoupdate-ui-actions-PluginManagerAction.instance");
CallableSystemAction action = (CallableSystemAction) DataObject.find(fo).getCookie(InstanceCookie.class).instanceCreate();
action.putValue("InitialTab", "installed");
action.performAction();
</pre>
</api>
<api name="Show-In-AutoUpdate-Client" category="stable" group="property"type="export">
Each module can control whether it shall be visible in a UI
that presents updates, installed modules, etc. This can be done
by defining <code>OpenIDE-Module-Show-In-AutoUpdate-Client: false</code>
(or <code>true</code>) in its own
<a href="@org-openide-modules@/org/openide/modules/doc-files/api.html#how-manifest">manifest</a>.
This attribute shall take precedence over
any default deduced by the UI (e.g. don't show
<a href="@org-openide-modules@/org/openide/modules/doc-files/api.html#enablement">autoload modules</a>
for example).
</api>
<api group="preferences" category="stable" name="unpack200"type="export">
If <code>bin/unpack200</code> executable isn't in the JDK executing the NetBeans application (as is the
case since JDK14 and newer), the updater searches for a preference
in <code>NbPreferences.forModule(OperatorContainer.class).get("unpack200", null)</code>
which is usually located in a user directory in file
<code>config/Preferences/org/netbeans/modules/autoupdate/services.properties</code>
and if specified, it uses the alternative <code>unpack200</code>
to process legacy NBM files encoded that way.
</api>
</answer>
<hint> NetBeansisbuildaroundagenericregistryofservicescalled lookup.Itispreferabletouseitforregistrationanddiscovery ifpossible.See <ahref="http://www.netbeans.org/download/dev/javadoc/org-openide-util/org/openide/util/lookup/doc-files/index.html"> TheSolutiontoComunicationBetweenComponents </a>.Ifyoudonotplantouselookupandinsistusage ofothersolution,thenpleasedescribewhyitisnotworkingfor you. <br/> Whenfillingthefinalversionofyourarchdocument,please describetheinterfacesyouaresearchingfor,where aredefined,whetheryouaresearchingforjustoneormoreofthem, iftheorderisimportant,etc.Alsoclassifythestabilityofsuch APIcontract.Use<apigroup=&lookup&/>tag,so yourinformationgetslistedinthesummarypageofyourjavadoc. </hint> </question>
-->
<answer id="lookup-lookup">
<ul>
<li>Registred Update Providers (aka Update Center) are searching in <code>org.openide.util.Lookup</code>.</li>
<li>Module loaded in running IDE are found in <code>org.openide.util.Lookup</code>.</li>
</ul>
</answer>
<!-- <questionid="lookup-register"when="final"> Doyouregisteranythingintolookupforothercodetofind? <hint> Doyouregisterusinglayerfileorusing<code>META-INF/services</code>? Whoissupposedtofindyourcomponent? </hint> </question>
-->
<answer id="lookup-register">
<p>
XXX no answer for lookup-register
</p>
</answer>
<!-- <questionid="lookup-remove"when="final"> Doyouremoveentriesofothermodulesfromlookup? <hint> Why?Ofcourse,thatispossible,butitcanbedangerous.Isthemodule youraremaskingresourcefromawareofwhatyouaredoing? </hint> </question>
-->
<answer id="lookup-remove">
<p>
XXX no answer for lookup-remove
</p>
</answer>
<!-- <questionid="perf-exit"when="final"> Doesyourmodulerunanycodeonexit? </question>
-->
<answer id="perf-exit">
<p>
XXX no answer for perf-exit
</p>
</answer>
<!-- <questionid="perf-huge_dialogs"when="final"> Doesyourmodulecontainanydialogsorwizardswithalargenumberof GUIcontrolssuchascomboboxes,lists,trees,ortextareas? </question>
-->
<answer id="perf-huge_dialogs">
<p>
XXX no answer for perf-huge_dialogs
</p>
</answer>
<!-- <questionid="perf-limit"when="init"> Arethereanyhard-codedorpracticallimitsinthenumberorsizeof elementsyourcodecanhandle? <hint> Mostofalgorithmshaveincreasingmemoryandspeedcomplexity withrespecttosizeofdatatheyoperateon.Whatisthecritical partofyourprojectthatcanbeseenasabottleneckwith respecttospeedorrequiredmemory?Whatarethepractical sizesofdatayoutestedyourprojectwith?Whatisyourestimate ofpotentialsizeofdatathatwouldcausevisibleperformance problems?Istheresomekindofchecktodetectsuchsituation andprevent"hard"crashes-forexampletheCloneableEditorSupport checksforsizeofafiletobeopenedineditor andifitislargerthan1Mbitshowsadialoggivingthe usertherighttodecide-e.g.tocancelorcommitsuicide. </hint> </question>
-->
<answer id="perf-limit">
<p>
The number of objects to handling is limited in reality to count of modules
loaded in running IDE plus published plugings on Update Centers. It cannot
reach over the Autoupdate Services capability.
</p>
</answer>
<!-- <questionid="perf-mem"when="final"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
<p>
XXX no answer for perf-mem
</p>
</answer>
<!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforcethatitwillbehavecorrectlyandquicklyandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
<p>
The performance is affected by responsiveness Update Providers (plugged via proposed SPI)
which are mined for available updates or new functionality. Also these providers are
responsible for downloading of chosen files. The critical dependence on traffic accessibility
of user's connection to Internet. These dependencies will be transparent
to the users and won't affect API usage.
</p>
</answer>
<!-- <questionid="perf-startup"when="final"> Doesyourmodulerunanycodeonstartup? </question>
-->
<answer id="perf-startup">
<p>
XXX no answer for perf-startup
</p>
</answer>
<!-- <questionid="perf-wakeup"when="final"> Doesanypieceofyourcodewakeupperiodicallyanddosomething evenwhenthesystemisotherwiseidle(nouserinteraction)? </question>
-->
<answer id="perf-wakeup">
<p>
XXX no answer for perf-wakeup
</p>
</answer>
<hint> NetBeansprovidealogicalwrapperoverplainfilescalled <code>org.openide.filesystems.FileObject</code>that providesuniformaccesstosuchresourcesandisthepreferred waythatshouldbeused.Butofcoursetherecanbesituationswhen thisisnotsuitable. </hint> </question>
-->
<answer id="resources-file">
<api category="devel" group="java.io.File" name=".lastModified"type="import">
<p>
Whenever updater touches a cluster, it creates <code>.lastModified</code>
file in it and sets its timestamp to current time millis. This is
an information for module system, so it knows to reset its caches.
</p>
</api>
</answer>
<hint> Asthisissomekindofintermoduledependency,itisakindofAPI. Pleasedescribeitandclassifyaccordingto <ahref="http://openide.netbeans.org/tutorial/api-design.html#categories"> commonstabilitycategories</a>. </hint> </question>
-->
<answer id="resources-read">
<p>
XXX no answer for resources-read
</p>
</answer>
<!-- <questionid="security-grant"when="final"> Doesyourcodegrantadditionalrightstosomeothercode? <hint>Avoidusingaclassloaderthataddsextra permissionstoloadedcodeunlessreallynecessary. AlsonotethatyourAPIimplementation canalsoexposeunneededpermissionstoenemycodeby callingAccessController.doPrivileged().</hint> </question>
-->
<answer id="security-grant">
<p>
XXX no answer for security-grant
</p>
</answer>
<!-- <questionid="security-policy"when="final"> Doesyourfunctionalityrequiremodificationstothestandardpolicyfile? <hint>Yourcodemightpasscontroltothird-partycodenot comingfromtrusteddomains.Thiscouldbecodedownloadedoverthe networkorcodecomingfromlibrariesthatarenotbundled withNetBeans.Whichpermissionsneedtobegrantedtowhichdomains?</hint> </question>
-->
<answer id="security-policy">
<p>
XXX no answer for security-policy
</p>
</answer>
</api-answers>
Messung V0.5 in Prozent
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.70Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-09-29)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.