Program forráskódjának megszerezése

Bizonyos típusú indítási konfigurációk esetén fontos lehet a kódban lévő aktuális végrehajtási pontnak megfelelő forráskód megszerezése. Ez jellemzően a program hibakeresésekor vagy profilkészítésekor fontos. Számos különböző kiterjesztési pontot biztosít a hibakeresési bedolgozó, amely lehetővé teszi a bedolgozók számára a forráskód megkeresését elősegítő osztályok bejegyezését.

Forrás-helymeghatározók

Az ISourceLocator és IPersistableSourceLocator felületeket ad meg a végrehajtási program forráskódra leképezéséhez.

A forrás-helymeghatározók jellemzően úgy vannak megvalósítva, hogy együttműködjenek a megfelelő indítási konfigurációval és elindítják a konfiguráció átruházását. A forrás-helymeghatározó azonosítója egy indítási konfiguráció típus meghatározásakor kerülhet megadásra, vagy programból társítható egy indítási konfigurációhoz az ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID attribútum használatával. Mindkét esetben ugyanazon a ponton egy konfiguráció forrás-helymeghatározójának azonosítóját fel kell bontani az IPersistableSourceLocator felületet valójában megvalósító osztályhoz. Egy forrás-helymeghatározó azonosítója és az osztálya közti társítás az org.eclipse.debug.core.sourceLocators kiterjesztési pont használatával kerül létrehozásra.

Az alábbi leírónyelv a Java eszközből származik:

<extension point = "org.eclipse.debug.core.sourceLocators">
	<sourceLocator
		id = "org.eclipse.jdt.debug.ui.javaSourceLocator"
	   	class="org.eclipse.jdt.debug.ui.JavaUISourceLocator"
	   	name="%javaSourceLocator"/>
</extension>

Mivel az indítási konfigurációk tárolhatók, ezért a forrás-helymeghatározók azonosítói tárolhatók az indítási konfigurációval. Egy forrás-helymeghatározó példányosításakor a hibakeresési bedolgozó kikeresi a forrás-helymeghatározó azonosítójának attribútumát és példányosítja az adott azonosítóhoz társított osztályt.

A forráskeresés megvalósítása szükségszerűen az indítandó program típusától függ. Azonban a platform meghatároz egy absztrakt megvalósítást egy forrás-helymeghatározó számára, amely kikeresi a forrásfájlokat egy adott útvonalon, amely könyvtárakat, valamint zip, jar és ehhez hasonló fájlokat tartalmaz. Ezen megvalósítás előnyeinek kihasználásához a bedolgozó kiterjesztheti az AbstractSourceLookupDirector kiterjesztési pontot. Az adott megvalósításnak csak egy megfelelő ISourceLookupParticipant felületet kell biztosítania, amely egy veremkeretet fájlnévvé tud leképezni. Tekintse meg példaként az AbstractSourceLookupDirector kiterjesztőit.

Forrásútvonal számítógépei

Az AbstractSourceLookupDirector egy adott forráskód keresési útvonala szerint forrásfájlokat keres. Ez az útvonal ISourceContainer felületek tömbjeként jelenik meg. A forrástárolók, amelyekben a források kereshetők, jellemzően az indítandó forráskonfiguráció jellemzői alapján kerülnek kiszámításra. Az ISourcePathComputer egy olyan objektum felületét határozza meg, amely egy indítási konfiguráció megfelelő forrásútvonalát számítja ki. Egy forrásútvonal-számítógép (ahogy egy forrás-helymeghatározó is) az azonosítója által kerül megadásra, és egy indítási konfiguráció típus kiterjesztési definíciójában adható meg, vagy programból társítható az indítási konfiguráció ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID attribútumának beállításával. Egy forrásútvonal-számítógép azonosítója és a megvalósító osztálya az org.eclipse.debug.core.sourcePathComputers kiterjesztési pontban kerül társításra. Az alábbi kódban a Java forrásútvonal-számítógép JDT által használt definíciója látható:

<extension point="org.eclipse.debug.core.sourcePathComputers">
	<sourcePathComputer
		id="org.eclipse.jdt.launching.sourceLookup.javaSourcePathComputer"
		class="org.eclipse.jdt.launching.sourcelookup.containers.JavaSourcePathComputer">
 	</sourcePathComputer>
 	...

A forrásútvonal-számítógép felelős a forráskeresési útvonalat ábrázoló ISourceContainer felületek tömbjének kiszámításáért. Például a Java forrásútvonal-számítógép figyelembe veszi az osztályútvonalat az útvonal összeállításakor.

Forrástároló típusok

A forráskereséi útvonal részeként megadott tárolóknak meg kell valósítaniuk az ISourceContainer felületet, amely kereshet egy megnevezett forráselemet ábrázoló tárolóban. Különböző típusú forrástárolókra lehet szükség a forráskódot tároló különböző helyek ábrázolásához. Például a JDT olyan forrástárolókat határoz meg, amelyek egy Java projektben, az osztályútvonalban vagy egy csomagtöredékben lévő forrást ábrázolnak. Az indítási konfigurációhoz használt forrástárolók azonosító alapján tárolhatók az indítási konfigurációban. Mivel az indítási konfigurációk tárolhatók, ezért kell lennie egy módszernek a forrástároló azonosítójának és a megvalósító osztályának társításához. Ez az org.eclipse.debug.core.sourceContainerTypes kiterjesztési pont használatával oldható meg. Az alábbi példa a JDT eszközből származik:

<extension point="org.eclipse.debug.core.sourceContainerTypes">
	<sourceContainerType
		id="org.eclipse.jdt.launching.sourceContainer.javaProject"
		name="%javaProjectSourceContainerType.name"
		description="%javaProjectSourceContainerType.description"
		class="org.eclipse.jdt.internal.launching.JavaProjectSourceContainerTypeDelegate">
	</sourceContainerType> 
	...