<!-- <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>
The Server module provides the
<api group="java" name="CommonServerSPI"type="export" category="devel"url="@TOP@org/netbeans/spi/server/package-summary.html"/>
that contains SPIs needed for the UI presentation of servers (anykind) and cloud providers. It covers
the services tab, server manager, server add wizard, cloud manager and cloud add wizard.
</p>
<p>
There is also API part of the module
<api group="java" name="CommonServerAPI"type="export" category="devel"url="@TOP@org/netbeans/api/server/package-summary.html"/>
that provides API representation of the server and cloud instances. API access if
required in future will be placed here.
</p>
<p>
Clients can provide its instances through the SPI. They can also provide
wizards to define UI way for the server or cloud instance addition. It is done with
<api group="layer" name="CommonServerLayerSPI"type="export" category="devel"url="@TOP@overview-summary.html"/>
where the SPIs implementation must be registered.
</p>
<p>
To provide easy way for clients to persist properties of its instances easily,
module provides support API
<api group="java" name="CommonServerPropertiesAPI"type="export" category="devel"url="@TOP@org/netbeans/api/server/properties/package-summary.html"/>
to do that. This support API is not mandatory for clients to use in any way.
</p>
<p>
<api group="layer" name="ServersNodeActions"type="export" category="devel">
By registering actions to <code>Servers/Actions</code> you
can extend the list of popup actions on Servers node in
Services tab.
</api>
<api group="layer" name="CloudNodeActions"type="export" category="devel">
By registering actions to <code>Cloud/Actions</code> you
can extend the list of popup actions on Cloud node in
Services tab.
</api>
<api group="property" name="serverNodeHidden"type="export" category="friend">
If the action registered in <code>Servers/Actions</code> or <code>Cloud/Actions</code> folder
has <code>getValue("serverNodeHidden") == Boolean.TRUE</code>, then
it will not be shown in the popup menu.
</api>
</p>
<p>
<api group="property" name="wizardMessage"type="export" category="friend">
By adding <code>wizardMessage</code> attribute you tell the
<q>Add Server...</q> or <q>Add Cloud...</q> action to display this message as an
option, if no servers are yet registered. If user agrees, your
action will be called then to enable some server providers.
<br/>
The action then receives command <q>noui</q>,
to know that it shall only enable given functionality, but there
is no need to show user anything.
</api>
</p>
<p>
<api group="layer" name="ServersNodeActionsAttributes"type="export" category="friend">
By adding additional attributes to files in <code>Servers/Actions</code> or <code>Cloud/Actions</code>
folder you can influence behaviour of the <q>Servers</q> and <q>Cloud</q> node.
<br/>
By adding <code>property-something</code> attribute you identify
an action that will be called as soon as the node is expanded and
<code>System.getProperty("something")</code> is non-null.
<br/>
By adding <code>config-something</code> attribute you identify
an action that will be called as soon as the node is expanded and
<code>FileUtil.getConfigFile("something")</code> is non-null.
<br/>
In all of these cases, the action receives command <q>noui</q>,
to know that it shall only enable given functionality, but there
is no need to show user anything.
<br/>
These attribute based APIs shall be seen as temporary and subject
to replacement. Please notify us as soon as you start to use them.
</api>
</p>
</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>
As this is SPI and implementation consists mostly of UI classes only
the core (non UI) implementation classes are covered by unit tests.
</p>
</answer>
<!-- <questionid="arch-time"when="init"> Whatarethetimeestimatesofthework? <hint> Pleaseexpressyourestimatesofhowlongthedesign,implementation, stabilizationarelikelytolast.Howmanypeoplewillbeneededto implementthisandwhatistheexpectedmilestonebywhichtheworkshouldbe ready? </hint> </question>
-->
<answer id="arch-time">
<p>
The code is already written. This would be the right place for several
support APIs in future. Current functionality should be stabilized
after 6.1 release.
</p>
</answer>
<!-- <questionid="arch-usecases"when="init"> <hint> Contentofthisanswerwillbedisplayedaspartofpageat http://www.netbeans.org/download/dev/javadoc/usecases.html Youcanusetags<usecasename="name>regularhtmldescription</usecase> andifyouwanttouseanURLyoucanprefixifwith@TOP@tobegin attherootofyourjavadoc </hint> 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="register-provider" name="Registering the server/cloud instance provider">
<p>
An external module can register itself as the server instance provider.
In order to do that it must register the implementation of
<a href="@TOP@org/netbeans/spi/server/ServerInstanceProvider.html">ServerInstanceProvider</a>
in <code>Servers</code> or <code>Cloud</code> folder in the layer.xml.
</p>
<p>
When this is done the module will handle displaying of instances at appropriate
IDE dialogs and views. Note that more specific SPIs can still be required
for the technology specific dialogs and actions. This module covers the areas
where the "common server" term makes sence.
</p>
<p>
Every
<a href="@TOP@org/netbeans/spi/server/ServerInstanceImplementation.html">ServerInstance</a>
returned by the provider is handled by this module. Some features of the
<a href="@TOP@org/netbeans/spi/server/ServerInstanceImplementation.html">ServerInstance</a>
are not mandatory (as described in javadoc). If new instances can be added
or removed during the lifecycle of external module it has to notify all
listeners of the
<a href="@TOP@org/netbeans/spi/server/ServerInstanceProvider.html">ServerInstanceProvider</a>.
</p>
</usecase>
<usecase id="register-wizard" name="Registering the server/cloud wizard">
<p>
An external module can register the wizard(s) in order to allow the user
to add new instances. In order to do that it must register the implementation of
<a href="@TOP@org/netbeans/spi/server/ServerWizardProvider.html">ServerWizardProvider</a>
in <code>Servers</code> or <code>Cloud</code> folder in the layer.xml.
</p>
<p>
When this is done the module will offer this wizard in UI (at contexts where
it makes sense).
</p>
</usecase>
<usecase id="persist-instance" name="Persisting instance properties">
<p>
The Commons Server SPI implemetor has to usually implement persistence
of its instances somehow. There are many ways how this can be done.
To make it easier
<a href="@TOP@org/netbeans/api/server/properties/InstancePropertiesManager.html">InstancePropertiesManager</a>
can be used. It provides a way how to store and retrieve properties of
the server instance.
</p>
</usecase>
</answer>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
Allows UI presentation of server instance without dependency on a server
specific API (like j2eeserver).
</p>
</answer>
<!-- <questionid="compat-deprecation"when="init"> Howtheintroductionofyourprojectinfluencesfunctionality providedbypreviousversionoftheproduct? <hint> Ifyouareplanningtodeprecate/remove/changeanyexistingAPIs, listthemhereaccompaniedwiththereasonexplainingwhyyou aredoingso. </hint> </question>
-->
<answer id="compat-deprecation">
<p>
The part of the j2eeserver handling the basic server instance UI should
not be used anymore.
</p>
</answer>
<!-- <questionid="lookup-lookup"when="init"> Doesyourmoduleuse<code>org.openide.util.Lookup</code> oranysimilartechnologytofindanycomponentstocommunicatewith?Whichones? <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">
<p>
Yes.
<a href="@org-openide-util-lookup@/org/openide/util/lookup/Lookups.html#forPath(java.lang.String)">Lookups.forPath--</a>.
The module search for all classes implementing
<a href="@TOP@org/netbeans/spi/server/ServerInstanceProvider.html">ServerInstanceProvider</a>
and
<a href="@TOP@org/netbeans/spi/server/ServerWizardProvider.html">ServerWizardProvider</a>
located under the <code>Servers</code> or <code>Cloud</code> folder.
Order is not important.
</p>
</answer>
<!-- <questionid="lookup-register"when="final"> Doyouregisteranythingintolookupforothercodetofind? <hint> Doyouregisterusinglayerfileorusing<code>META-INF/services</code>? Whoissupposedtofindyourcomponent? </hint> </question>
-->
<answer id="lookup-register">
<p>
Yes. UI node is registered in <code>UI/Runtime</code> folder and manager action is
registered in <code>Menu/Tools</code> folder.
</p>
</answer>
<!-- <questionid="perf-mem"when="final"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
<p>
The small amount memory is consumed by registry of providers. The module
does not hold any large structures belonging to it (however an external
module can hold large structure in its implementation). Typical (real-life)
number of providers is less than 10.
</p>
</answer>
<!-- <questionid="perf-scale"when="init"> Whichexternalcriteriainfluencetheperformanceofyour program(sizeoffileineditor,numberoffilesinmenu, insourcedirectory,etc.)andhowwellyourcodescales? <hint> Pleaseincludesomeestimates,thereareothermoredetailed questionstoanswerinlaterphasesofimplementation. </hint> </question>
-->
<answer id="perf-scale">
<p>
Performance scales linearly with the number of providers and instances,
but usually the numbers are small.
</p>
</answer>
<!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforcethatitwillbehavecorrectlyandquicklyandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
<p>
SPI related actions should not invoke any time consuming operation.
</p>
</answer>
<!-- <questionid="resources-layer"when="final"> Doesyourmoduleprovideownlayer?Doesitcreateanyfilesor foldersinit?Whatitistryingtocommunicatebythatandwithwhich components? <hint> NetBeansallowsautomaticanddeclarativeinstallationofresources bymodulelayers.Moduleregisterfilesintoappropriateplaces andothercomponentsusethatinformationtoperformtheirtask (buildmenu,toolbar,windowlayout,listoftemplates,setof options,etc.). </hint> </question>
-->
<answer id="resources-layer">
<p>
Yes. The module contains a standard layer which describes menu items, actions and services. The
folders <code>Servers</code> and <code>Cloud</code> where instance providers and wizards are registered, are created.
</p>
</answer>
<!-- <questionid="resources-read"when="final"> Doesyourmodulereadanyresourcesfromlayers?Forwhatpurpose? <hint> Asthisissomekindofintermoduledependency,itisakindofAPI. Pleasedescribeitandclassifyaccordingto <ahref="http://openide.netbeans.org/tutorial/api-design.html#categories"> commonstabilitycategories</a>. </hint> </question>
-->
<answer id="resources-read">
<p>
The module search for all classes implementing
<a href="@TOP@org/netbeans/spi/server/ServerInstanceProvider.html">ServerInstanceProvider</a>
and
<a href="@TOP@org/netbeans/spi/server/ServerWizardProvider.html">ServerWizardProvider</a>
located under the <code>Servers</code> and <code>Servers</code> folder.
It uses Lookup in order to do that.
</p>
</answer>
¤ 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.0.37Bemerkung:
¤
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.