Lerakatszolgáltatók

A lerakatszolgáltató (RepositoryProvider) a központi osztály a lerakat megvalósításában. Ez az osztály felelős a lerakatkezelő projektjének beállításáért és az erőforrás-módosítás szükséges csatlakozópontjainak biztosításáért. A szolgáltatók a projekt állandó tulajdonságok segítségével kerülnek leképezésre a projektre. A szolgáltatók projektre leképezésének mechanizmusa nem központi a csapat API számára, de ezt az erőforrások UI-ban kiszűrésekor Önnek tudnia kell.  A legtöbb rész esetén a csapat API segítségével kezeli a projekteket és társítja őket a szolgáltatóval.  

A szolgáltató megvalósításához az org.eclipse.team.core.repository segítségével meg kell adnia egy lerakatot, és biztosítani kell egy   RepositoryProvider elemből származtatott osztályt.  A működés megmutatásához példaként a CVS ügyfelet használjuk.

Kiterjesztési pont

Az org.eclipse.team.core.repository kiterjesztési pont megad egy lerakatdefiníciót.  Az alábbiakban látható a CVS ügyfél leírónyelve.

<extension
point="org.eclipse.team.core.repository">
<repository
class="org.eclipse.team.internal.ccvs.core.CVSTeamProvider"
id="org.eclipse.team.cvs.core.cvsprovider">
</repository>
</extension>

Ez bejegyzi a csapatszolgáltatót a csapattámogatás-bedolgozóval és hozzárendel egy azonosítót, amelyet akkor kell használni, ha a szolgáltató egy projekthez van társítva.  A lerakathoz megadott osztálynak ki kell terjesztenie a RepositoryProvidert.

RepositoryProvider megvalósítása

A kiterjesztésben azonosított osztálynak a RepositoryProvider alosztályának kell lennie. Ennek elsődleges felelőssége a projekt konfigurálása a lerakattámogatáshoz és ezen konfiguráció megszüntetése, valamint a szükséges erőforrásmódosítási csatlakozópontok biztosítása.  A CVS ügyfél jó példaként szolgál.  Ennek lerakatszolgáltatója a CVSTeamProvider.

public class CVSTeamProvider extends RepositoryProvider {
...

A RepositoryProvider két absztrakt metódust ad meg, a configureProject és deconfigure metódust.  Minden szolgáltatónak meg kell valósítani ezeket a metódusokat. 

A projekt akkor kerül beállításra, amikor először társításra kerül egy adott lerakatszolgáltatóval. Ez jellemzően akkor történik, ha a felhasználó kiválaszt egy projektet, és a csapatvarázslók segítségével projekthez egy lerakatot társít. A művelet aktiválási módjától függetlenül ez a megfelelő időpont a projekttel kapcsolatos adatok feldolgozására és ideiglenes tárolására, amelyeket a lerakatfunkcióhoz biztosítani kell.  (Tételezzük fel, hogy a projekt szolgáltatóra leképezése már megtörtént.  Ezzel a konfigurációs varázslóban foglalkozunk.)

A CVS szolgáltató üzenetszórással elküldi azt a tényt, hogy a projekt beállításra kerül:

public void configureProject() throws CoreException {
CVSProviderPlugin.broadcastProjectConfigured(getProject());
}

Nem követjük a bedolgozó üzenetszórási mechanizmus megvalósítását.  Elég annyi, hogy a részek, amelyeknek fel kell dolgozniuk vagy inicializálniuk kell a projektspecifikus adatokat, ezt ebben az időpontban megtehetik.

A projekt megszűntetésre kerül, ha a felhasználó a továbbiakban nem kívánja a csapatszolgáltatót a projektet társítani.  A bedolgozó feladata a felhasználói tevékenység megvalósítása, amelynek hatására ez megtörténik (a projekt és csapatszolgáltató leképezésének megszüntetése is itt történik).  A megszűntetés metódus   a megfelelő időpont a projekttel kapcsolatos gyorsítótárak törlésére vagy a projekthivatkozások eltávolítására az UI-ban.  A CVS szolgáltató kiüríti a nézetekben tárolt projekthez kapcsolódó gyorsítótárakat és üzenetszórással elküldi a tényt, hogy a projekt megszűnt.

public void deconfigure() throws CoreException {
...
try {
EclipseSynchronizer.getInstance().flush(getProject(), true, true /*flush deep*/, null);
} catch(CVSException e) {
throw new CoreException(e.getStatus());
} finally {
CVSProviderPlugin.broadcastProjectDeconfigured(getProject());
}
}

Projekt beállítása

A csapat UI összeépítésének első lépése jellemzően a varázslóoldal megvalósítása, amelynek segítségével a felhasználók beállíthatnak egy projektet a bedolgozó csapattámogatásához.  A csapatszolgáltató azonosítója itt adódik hozzá a projekt tulajdonságaihoz. Az org.eclipse.team.ui.configurationWizards kiterjesztési pont kiegészítésével Ön is részt vesz a projektkonfigurációban. Ez a varázsló akkor jelenik meg, amikor a felhasználó kiválasztja a Csapat->Projektmegosztás ... lehetőséget.

Ezt a CVS ügyfél megvalósítás kontextusában nézzük meg.  Az alábbiakban található a konfigurációs varázsló CVS UI leírónyelve:

<extension
point="org.eclipse.team.ui.configurationWizards">
<wizard
name="%SharingWizard.name"
icon="icons/full/wizards/newconnect_wiz.png"
class="org.eclipse.team.internal.ccvs.ui.wizards.SharingWizard"
id="org.eclipse.team.ccvs.ui.SharingWizard">
</wizard>
</extension>

A bedolgozók általában biztosítanak egy osztályt, amely megvalósítja a kiterjesztést és egy egyedi azonosítót a kiterjesztések azonosításához.  Ha több szolgáltató közül lehet választani, akkor a név és ikon megjelenik a projekt konfigurációs varázsló első oldalán.

Ha a felhasználó kiválasztott egy szolgáltatót, akkor a következő oldal megjeleníti a szolgáló-specifikus konfigurációs információkat.  (Ha a szolgáltató az egyetlen telepített csapatszolgáltató-bedolgozó, akkor a varázsló közvetlenül a saját oldalra ugrik.) A varázslónak meg kell valósítani egy IConfigurationWizard, elemet, amely inicializálja a varázslót a megadott munkaterülethez és projekthez. A megvalósítás hátralevő része a varázsló kivitelétől függ. Össze kell gyűjteni a projekt csapattámogatáshoz társításához szükséges információkat.

Ha a varázsló befejezte a működését, akkor a RepositoryProvider.map(IProject, String) segítségével le kell képezni a csapatszolgáltatót a projektre. A leképezés kezeli a megfelelő projekt állandó tulajdonság és a projekt társítását.

A CVS ügyfél ezt a szolgáltató setSharing metódusában végzi el ezt, amely a varázsló befejezésekor kerül meghívásra:

public void setSharing(IProject project,
FolderSyncInfo info, IProgressMonitor monitor) throws TeamException {

// Ellenőrizze, hogy a biztosított információk megfelelnek-e a projektnek
...
// Ellenőrizze, hogy a biztosított hely felügyelve van-e
...
// Regisztrálja a projektet a csapattal
RepositoryProvider.map(project, CVSProviderPlugin.getTypeId());
}

Szolgáltató megkeresése

A RepositoryProvider statikus metódusai leegyszerűsítik az ügyfelek számára a projektek leképezését a szolgáltatókra és az adott projekthez társított szolgáltatók megkeresését.

Lerakatszolgáltatók és képességek

Ha a termék hozzáad egy Lerakatbedolgozót egy képességhez, akkor ennek hozzá kell kötnie a képességet a lerakatazonosítóhoz. A RepositoryProvider képességként engedélyezéséhez az alábbi két lépést kell végrehajtani:

  1. Kösse a képességet a lerakatszolgáltató-azonosítóhoz. Ez lehetővé teszi a Csapatbedolgozó aktiválását/letiltását a lerakatszolgáltató-azonosítók alapján.
    <activityPatternBinding
        activityId="org.eclipse.team.cvs"
        pattern="org\.eclipse\.team\.cvs\.core/.*cvsnature">
    </activityPatternBinding>
  2. Következőnek kösse a képességet a szolgáltató összes UI csomagjához:
    <activityPatternBinding
         activityId="org.eclipse.team.cvs"
         pattern="org\.eclipse\.team\.cvs\.ui/.*">
    </activityPatternBinding>

A Csapatbedolgozók két képességaktiválási pontot adnak meg. Az első a Csapat > Projektmegosztás... varázsló, amely lehetővé teszi a lerakatszolgáltatók szűrését a munkaterület-képességek engedélyezett/letiltott állapota alapján, a másik pedig a Csapat bedolgozó automatikus engedélyezési aktiváló.

Erőforrásmódosítási csatlakozópontok

A lerakatszolgáltatóhoz rendelt érdekes funkciók nagy része akkor történik, ha a felhasználó a szolgáltatóhoz beállított projektben lévő erőforrásokat használja. Annak érdekében, hogy tudjon a felhasználó által végzett erőforrás-módosításokról, a szolgáltató erőforrás-módosítási csatlakozópontokat valósíthat meg. Az erőforrások bedolgozó ezeket a csatlakozópontokat kiterjesztési pontokként biztosítja.  Az IMoveDeleteHook, IFileModificationValidator és ResourceRuleFactory dokumentációja a csatlakozópontok megvalósításának részleteit írja le.

A csapatbedolgozó optimalizálja és egyszerűsíti a csatlakozópontok megfelelő erőforrásokkal társítását az általános csatlakozópontok erőforrások bedolgozóhoz bejegyzésével.  Ezek az általános csatlakozópontok egyszerűen megkeresik a lerakatszolgáltatót egy adott erőforráshoz, és lekérik a csatlakozópontjait. Ennek meg van az az előnye, hogy csak egy szolgáltató-csatlakozópontot hív meg ahelyett, hogy minden szolgáltatómegvalósítás bejegyezne egy csatlakozópontot, amelynek először ellenőriznie kell, hogy az erőforrást a szolgáltató kezeli-e.

Ez azt jelenti, hogy a bedolgozó a RepositoryProvider metódusainak újradefiniálásával biztosítja a szükséges csatlakozópontokat.   Ezen metódusok alapértelmezett megvalósítása nullát ad vissza jelezve, hogy nincs szükség csatlakozópontra (az erőforrásszabály-gyár kivételével, ahogy ez az alább le van írva):