<!-- <questionid="arch-overall"when="init"> Describetheoverallarchitecture. <hint> WhatwillbeAPIfor <ahref="http://wiki.netbeans.org/API_Design#Separate_API_for_clients_from_support_API"> clientsandwhatsupportAPI</a>? Whatpartswillbepluggable? Howwillplug-insberegistered?Pleaseuse<code><apitype="export"/></code> todescribeyourgeneralAPIsandspecifytheir <ahref="http://wiki.netbeans.org/API_Stability#Private"> stabilitycategories</a>. Ifpossiblepleaseprovidesimplediagrams. </hint> </question>
-->
<answer id="arch-overall">
<p>
The Bugtracking SPI/API makes it possible to integrate bugtracking system
providers into the IDE workflow:<br/>
- to access and manage bugtracking Issues via the Tasks Dashboard<br/>
- to make bugtracking functionality accessible for integration with other subsystems in the IDE
- e.g. VCS, Team Support (aka kenai.com, java.net)<br/>
</p>
<p>
<api name="BugrackingSPI" group="java"type="export" category="devel">
Enables Bugtracking modules to fully integrate into Bugtracking Issue Management facilities
and other IDE workflow.
</api>
<br/><br/>
<api name="BugrackingAPI" group="java"type="export" category="devel">
Provides Bugtracking functionality for other subsystems in the IDE.
</api>
</p>
<p>
<b>SPI Registration:</b><br/>
A bugtracking module extends <code>BugtrackingConnector</code> and registers it via the
<code>BugtrackingConnector.Registration</code> annotation.
</p>
<p>
<b>Cookbook and sample implementation:</b><br/>
For a more detailed description on how to start writting a bugtracking plugin for NetBeans see also the
<a href="https://netbeans.apache.org/wiki/BugtrackingCookbook">Bugtracking Cookbook</a> (sample module attached).
</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>
Module's APIs will be tested by unit tests, all areas should be covered.
</p>
</answer>
<!-- <questionid="arch-time"when="init"> Whatarethetimeestimatesofthework? <hint> Pleaseexpressyourestimatesofhowlongthedesign,implementation, stabilizationarelikelytolast.Howmanypeoplewillbeneededto implementthisandwhatistheexpectedmilestonebywhichtheworkshouldbe ready? </hint> </question>
-->
<answer id="arch-time">
<p>
The module is done.
</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://wiki.netbeans.org/API_Design#The_Importance_of_Being_Use_Case_Oriented"> usecases</a>ofthenewAPI.Whowilluseitunder whatcircumstances?Whatkindofcodewouldtypicallyneedtobewritten tousethemodule? </question>
-->
<answer id="arch-usecases">
<p>
The main Bugtracking SPI and API Use Cases are based on:<br/> <!-- - the <a href="http://xdesign-tools.cz.oracle.com/projects/netbeans/IssueTracking/">Bugtracking UI spec.</a><br/> -->
- the <a href="https://netbeans.apache.org/wiki/TaskManagementUseCases">Issue Management Use Cases</a>.
For additional information see also <a href="https://netbeans.apache.org/wiki/TaskDashboardDesignSpec">Tasks Dashboard UI spec</a><br/>
</p>
<usecase id="1" name="Registration and setup">
The Bugtracking SPI provides a way to register bugtracking plugins and
to setup remote Repository configurations of one kind.
</usecase>
<usecase id="2" name="Accessing Issues">
All registered plugins provide the capability to access Issues from a Repository via:<br/>
- their ID<br/>
- based on a simple text criteria<br/>
- the capability to create, edit and execute more complex Queries
</usecase>
<usecase id="3" name="Issue management">
For the needs of Issue Management all registered plugins provide:
- the capability to create and edit Issues<br/>
- basic Issue information like id, summary, priority, scheduling ...
</usecase>
<usecase id="4" name="Automated Issue Operations">
All registered plugins provide bugtracking functionality (if available)
to other IDE workflows via the Bugtracking API.
- e.g. attaching files, closing Issues, etc.
</usecase>
<!-- <questionid="arch-what"when="init"> Whatisthisprojectgoodfor? <hint> Pleaseprovidehereafewlinesdescribingtheproject, whatproblemitshouldsolve,providelinkstodocumentation, specifications,etc. </hint> </question>
-->
<answer id="arch-what">
<p>
The module allows to integrate Bugtracking systems into the IDE workflow.
</p>
</answer>
<!-- <questionid="compat-deprecation"when="init"> Howtheintroductionofyourprojectinfluencesfunctionality providedbypreviousversionoftheproduct? <hint> Ifyouareplanningtodeprecate/remove/changeanyexistingAPIs, listthemhereaccompaniedwiththereasonexplainingwhyyou aredoingso. </hint> </question>
-->
<answer id="compat-deprecation">
<p>
The module introduces a new SPI and API, it does not deprecate any old ones.
</p>
</answer>
<!-- <questionid="compat-standards"when="init"> Doesthemoduleimplementordefineanystandards?Isthe implementationexactordoesitdeviatesomehow? </question>
-->
<answer id="compat-standards">
<p>
The module does not implement or define any standards.
</p>
</answer>
<!-- <questionid="compat-version"when="impl"> Canyourmodulecoexistwithearlierandfuture versionsofitself?Canyoucorrectlyreadalloldsettings?Willfuture versionsbeabletoreadyourcurrentsettings?Canyouread orpolitelyignoresettingsstoredbyafutureversion? <hint> Veryhelpfulforreadingsettingsistostoreversionnumber there,sofutureversionscandecidewhetherhowtoread/convert thesettingsandolderversionscanignorethenewones. </hint> </question>
-->
<answer id="compat-version">
<p>
Yes, the module is designed to evolve over time.
Currently the module persists bugtracking repository properties (see
<code>o.n.m.bugtracking.spi.RepositoryInfo</code>) and some Tasks Dashboard
settings via the standard NbPreferences API and ignores all other settings.
It is expected, that it can live happily with future releases.
</p>
</answer>
<!-- <questionid="deploy-packages"when="init"> Arepackagesofyourmodulemadeinaccessiblebynotdeclaringthem public? <hint> BydefaultNetBeansbuildharnesstreatsallpackagesareprivate. Ifyouexportsomeofthem-eitheraspublicorfriendpackages, youshouldhaveareason.Ifthereasonisdescribedelsewhere inthisdocument,youcanignorethisquestion. </hint> </question>
-->
<answer id="deploy-packages">
<p>
Packages <code>org.netbeans.modules.bugtracking.spi</code>
and <code>org.netbeans.modules.bugtracking.api</code> are declared as public,
all others are left private.
</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>
Does not matter.
</p>
</answer>
<!-- <questionid="exec-component"when="impl"> Isexecutionofyourcodeinfluencedbyany(string)property ofanyofyourcomponents? <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">
<p>
No, the module does not depend on any such public property. Maybe worth to mention,
that on Issue editors, provided by the particular implementations,
<code> setClientProperty("highlights.property", ...) </code>is used internaly
to store text higlight relevant information on TextPanes contained in those editor components.
</p>
</answer>
<!-- <questionid="exec-introspection"when="impl"> Doesyourmoduleuseanykindofruntimetypeinformation(<code>instanceof</code>, workwith<code>java.lang.Class</code>,etc.)? <hint> CheckforcaseswhenyouhaveanobjectoftypeAandyoualso expectitto(possibly)beoftypeBanddosomespecialaction.That shouldbedocumented.Thesameappliesonoperationsinmeta-level (Class.isInstance(...),Class.isAssignableFrom(...),etc.). </hint> </question>
-->
<answer id="exec-introspection">
<p>
Yes:<br/>
- the<code> instanceof </code>operator is used on several places, but all checks switching
the control flow are made either on module private types or in cases like e.g.<code> .equals(Object) </code>.<br/>
- <code> Class.getName() </code> is used a couple of time, typicaly to use it for a Logger name.
Otherwise no type relevant<code> Class.* </code>methods are not used.<br/>
</p>
</answer>
<!-- <questionid="exec-property"when="impl"> Isexecutionofyourcodeinfluencedbyanyenvironmentor Javasystem(<code>System.getProperty</code>)property? Onasimilarnote,istheresomethinginterestingthatyou passto<code>java.util.logging.Logger</code>?Ordoyouobserve whatotherslog? <hint> Ifthereisapropertythatcanchangethebehaviorofyour code,somebodywilllikelyuseit.Youshoulddescribewhatitdoes andthe<ahref="http://wiki.netbeans.org/API_Stability">stabilitycategory</a> ofthisAPI.Youmayuse <pre> <apitype="export"group="property"name="id"category="private"url="http://..."> descriptionoftheproperty,whereitisused,whatitinfluence,etc. </api> </pre> </hint> </question>
-->
<answer id="exec-property">
<p>
Yes:<br/>
- <code>System.getProperty("netbeans.bugtracking.noOpenProjects")</code> to block
creating of team repositories based on open project beineg checked out from a Team Server
(e.g. kenai.com, java.net).<br/>
- <code>System.getProperty("netbeans.bugzilla.url")</code> to override the hardcoded netbeans bugzilla url.
Testing purposes only.<br/>
- <code>System.getProperty("org.netbeans.modules.bugtracking.logPasswords")</code> when logging repository
information, the password isn't obfuscated. Diagnostic purposes only.<br/>
</p>
</answer>
<!-- <questionid="exec-threading"when="init"> Whatthreadingmodels,ifany,doesyourmoduleadhereto?Howthe projectbehaveswithrespecttothreading? <hint> IsyourAPIthreadsafe?Canitbeaccessedfromanythreadsor justfromsomededicatedones?AnyspecialrelationtoAWTand itsEventDispatchthread?Also ifyourmodulecallsforeignAPIswhichhaveaspecificthreadingmodel, indicatehowyoucomplywiththerequirementsformultithreadedaccess (synchronization,mutexes,etc.)applicabletothoseAPIs. IfyourmoduledefinesanyAPIs,orhascomplexinternalstructures thatmightbeusedfrommultiplethreads,declarehowyouprotect dataagainstconcurrentaccess,raceconditions,deadlocks,etc., andwhethersuchrulesareenforcedbyruntimewarnings,errors,assertions,etc. Examples:aclassmightbenon-thread-safe(likeJavaCollections);might befullythread-safe(internallocking);mightrequireaccessthroughamutex (andmayormaynotautomaticallyacquirethatmutexonbehalfofaclientmethod); mightbeabletorunonlyintheeventqueue;etc. Alsodescribewhenanyeventsarefired:synchronously,asynchronously,etc. Ideas:<ahref="http://core.netbeans.org/proposals/threading/index.html#recommendations">ThreadingRecommendations</a>(inprogress) </hint> </question>
-->
<answer id="exec-threading">
<p>
The SPI defines entry points from the IDE to bugtracking implementors. There is no guarantee about threading,
SPI methods can be called by any thread in any order, the SPI implementors must synchronize access to
their structures as needed. All callbacks back to SPI are threadsafe.
</p>
<p>
In cases in the SPI (and accordingly and the API) where it is expected from the implementation to block for the whole time of execution
it is pointed out in the javadoc.
</p>
<p>
In cases in the SPI where the call might be done in AWT and a fast exection is essential it is explicitely
pointed out in the javadoc.
</p>
</answer>
<!-- <questionid="perf-huge_dialogs"when="final"> Doesyourmodulecontainanydialogsorwizardswithalargenumberof GUIcontrolssuchascomboboxes,lists,trees,ortextareas? </question>
-->
<answer id="perf-huge_dialogs">
<p>
Yes, the Tasks Dashboard provides a tree of all known Repositories,
Queries associated with those Repositories and Issues coming from those Queries.
Typicaly it is not expected that a big amout of Queries is registered and only the first 50 of issues are listed,
though it is possible for the user to change this setup.
</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>
No limits hardcoded. In extreme situations it might happen that a particular bugtracking
implementation provides a too big amount of issues (tested with thousands
without running into problems). Considering the fact, that the significant amount of involved data
is generated in the involved bugtracking plugin, it is seen as its problem
to handle such scenarious. The additional memory overhead caused by wrapping and handling
the provided Issues in the bugtracking module is not relevant in the overall scheme of things.
</p>
</answer>
<!-- <questionid="perf-mem"when="final"> Howmuchmemorydoesyourcomponentconsume?Estimate witharelationtothenumberofwindows,etc. </question>
-->
<answer id="perf-mem">
<p>
Amount of memory is proportional to the size of opened issue and query
editors as well as to the amount of registered repositories, queries and issues listed in the Tasks Dashboard.
Exact memory consumption depends on the underlying bugtracking system implementations.<br/>
</p>
</answer>
<!-- <questionid="perf-progress"when="final"> Doesyourmoduleexecuteanylong-runningtasks? <hint>Longrunningtasksshouldneverblock AWTthreadasitbadlyhurtstheUI <ahref="http://performance.netbeans.org/responsiveness/issues.html"> responsiveness</a>. Taskslikeconnectingover network,computinghugeamountofdata,compilation bedoneasynchronously(forexample using<code>RequestProcessor</code>),definitivelyitshould notblockAWTthread. </hint> </question>
-->
<answer id="perf-progress">
<p>
All long-running task (e.g. like executing and underlying query implementation) are done by using RequestProcessor.
</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>
The amount of Issues listed in the Tasks Dashboard, though the relevant computations ( e.g. when expanding container
nodes) aren't done in AWT.
</p>
</answer>
<!-- <questionid="perf-spi"when="init"> Howtheperformanceofthepluggedincodewillbeenforced? <hint> Ifyouallowforeigncodetobepluggedintoyourownmodule,how doyouenforcethatitwillbehavecorrectlyandquicklyandwillnot negativelyinfluencetheperformanceofyourownmodule? </hint> </question>
-->
<answer id="perf-spi">
<p>
SPI will log (on demand) performance of calls on plugged-in implementations such like e.g. query.refresh(), issue.refresh(), ...
</p>
</answer>
<!-- <questionid="perf-startup"when="final"> Doesyourmodulerunanycodeonstartup? </question>
-->
<answer id="perf-startup">
<p>
No, also that the infrastructure waits until all projects are opened before
populating the Tasks Dashboard in case it was opened from a previous session.
</p>
</answer>
<!-- <questionid="perf-wakeup"when="final"> Doesanypieceofyourcodewakeupperiodicallyanddosomething evenwhenthesystemisotherwiseidle(nouserinteraction)? </question>
-->
<answer id="perf-wakeup">
<p>
Registered queries are periodicaly refeshed by a customizable interval with a default value.
</p>
</answer>
<!-- <questionid="resources-file"when="final"> Doesyourmoduleuse<code>java.io.File</code>directly? <hint> NetBeansprovidealogicalwrapperoverplainfilescalled <code>org.openide.filesystems.FileObject</code>that providesuniformaccesstosuchresourcesandisthepreferred waythatshouldbeused.Butofcoursetherecanbesituationswhen thisisnotsuitable. </hint> </question>
-->
<answer id="resources-file">
<p>
Yes it does, but FileObject-s are used in cases, when working with IDE relevant files.
</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>
Not explicitely. Registration of some actions and the Tasks Dashboard Window
is done via annotations.
</p>
</answer>
<!-- <questionid="resources-preferences"when="final"> DoesyourmoduleusespreferencesviaPreferencesAPI?DoesyourmoduleuseNbPreferencesor orregularJDKPreferences?Doesitread,writeorboth? Doesitsharepreferenceswithothermodules?Ifso,thenwhy? <hint> Youmayuse <apitype="export"group="preferences" name="preferencenodename"category="private"> descriptionofindividualkeys,whereitisused,whatit influences,whetherthemodulereads/writeit,etc. </api> DuetoXMLIDrestrictions,ratherthan/org/netbeans/modules/foogivethe"name"asorg.netbeans.modules.foo. NotethatifyouuseNbPreferencesthisnamewillthenbethesameasthecodenamebaseofthemodule. </hint> </question>
-->
<answer id="resources-preferences">
<p>
Yes, using NbPreferences for its own settings. It does not share them.
</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.32Bemerkung:
(vorverarbeitet am 2026-06-10)
¤
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.