Ohjelman lähdekoodin nouto

Joidenkin aloitustilojen kannalta voi olla tärkeää, että niitä varten noudetaan lähdekoodi, joka vastaa koodin kulloinkin suoritettavaa kohtaa. Näin toimitaan yleensä ohjelman vianmäärityksen tai profiloinnin aikana. Vianmäärityslisäosassa on useita eri laajennuspisteitä, joiden avulla lisäosat voivat rekisteröidä luokkia, jotka puolestaan auttavat lähdekoodin paikantamisessa.

Lähteen paikantimet

ISourceLocator ja IPersistableSourceLocator määrittävät ne rajapinnat, jotka puolestaan määrittävät suoritettavan ohjelman ja lähdekoodin vastaavuudet.

Lähteen paikantimet toimivat yleensä yhdessä vastaavan aloituskokoonpanon ja aloituskokoonpanon delegaatin kanssa. Lähteen paikantimen tunnus voidaan määritellä samalla kuin aloituskokoonpanon lajikin tai tunnus voidaan liittää ohjelmallisesti aloituskokoonpanoon määritteen ILaunchConfiguration.ATTR_SOURCE_LOCATOR_ID avulla. Kummassakin tapauksessa aloituskokoonpanon lähteen paikantimen tunnus pitää jossain vaiheessa tulkita luokaksi, joka toteuttaa IPersistableSourceLocator-rajapinnan. Lähteen paikantimen tunnuksen ja sen luokan välinen yhteys luodaan laajennuspisteen org.eclipse.debug.core.sourceLocators avulla.

Seuraavat merkinnät ovat Java-työvälinejärjestelmästä:

<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>

Koska aloituskokoonpanot voidaan tallentaa, lähteen paikantimen tunnukset tallennetaan aloituskokoonpanoon. Kun lähteen paikantimelle pitää luoda ilmentymä, vianmäärityslisäosa etsii lähteen paikantimen tunnuksen määritteen ja luo ilmentymän tunnukseen liitetylle luokalle.

Lähteen haun toteutus riippuu aina käynnistettävästä ohjelmasta. Eclipse-ympäristö määrittää kuitenkin abstraktin toteutuksen sellaiselle lähteen paikantimelle, joka hakee lähdetiedostoja määrätyltä polulta, johon kuuluu esimerkiksi hakemistoja, zip-tiedostoja ja jar-tiedostoja. Lisäosa voi hyödyntää tätä toteutusta laajentamalla luokkaa AbstractSourceLookupDirector. Toteutuksen pitää vain pystyä tarjoamaan sopiva ISourceLookupParticipant-rajapinta, joka voi jäljittää pinokehyksen nimen tiedoston nimeen. Lisätietoja on kohdan AbstractSourceLookupDirector laajennusosissa .

Lähdepolun tietokoneet

AbstractSourceLookupDirector-luokka etsii lähdetiedostoja tietyn lähdekoodin hakupolun perusteella. Tämä polku ilmaistaan ISourceContainer-rajapinnan taulukkona. Lähdesäilöt, joista lähdettä etsitään, lasketaan yleensä käynnistettävän lähdekokoonpanon perusteella. ISourcePathComputer määrittää rajapinnan objektille, joka laskee aloituskokoonpanon lähdepolun. Kuten lähteen paikantimellakin, lähdepolun tietokoneella on tunnus, ja aloituskokoonpanolajille voidaan laajennusmäärityksessä määrittää lähdepolun tietokone. Lähdepolun tietokoneen voi myös yhdistää ohjelmallisesti antamalla aloituskokoonpanolle määritteen ISourceLocator.ATTR_SOURCE_PATH_COMPUTER_ID. Lähdepolun tietokoneen tunnus liitetään sitä toteuttavaan luokkaan laajennuspisteessä org.eclipse.debug.core.sourcePathComputers. Seuraavat merkinnät näyttävät Java-kehitystyökalujen Java-lähdepolun tietokoneellaan käyttämän tunnuksen:

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

Lähdepolun tietokone laskee ISourceContainer-rajapinnan taulukon, joka esittää lähteen hakupolkua. Esimerkiksi Java-lähdepolun tietokone esimerkiksi tarvitsee luokkapolkua polun kokoamiseen.

Lähdesäilön lajit

Lähteen hakupolun osaksi määriteltyjen säilöjen täytyy toteuttaa ISourceContainer-rajapinta, joka voi etsiä säilöstä nimettyä lähde-elementtiä. Erilaisten lähdekoodin tallennuspaikkojen edustajiksi voidaan tarvita erilaisia lähdesäilöjä. Esimerkiksi Java-kehitystyökalut määrittävät lähdesäilöt, jotka edustavat lähdettä Java-projektissa, luokkapolussa ja pakettifragmentissa. Aloituskokoonpanossa käytetyt lähdesäilöt voi tallentaa tunnuksella aloituskokoonpanoon. Koska aloituskokoonpanon voi tallentaa, lähdesäilön tunnus ja sen toteutusluokka on liitettävä toisiinsa jollakin tavalla. Sen voi tehdä laajennuspisteen org.eclipse.debug.core.sourceContainerTypes avulla. Seuraava esimerkki on Java-kehitystyökaluista:

<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> 
	...