Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Plugin fejlesztés – tervezési minták.

Slides:



Advertisements
Hasonló előadás
Tamás Kincső, OSZK, Analitikus Feldolgozó Osztály, osztályvezető A részdokumentumok szolgáltatása az ELDORADO-ban ELDORADO konferencia a partnerkönyvtárakkal.
Advertisements


Kamarai prezentáció sablon
ADATBÁZISOK.
Weblap szerkesztés HTML oldal felépítése Nyitó tag Záró tag Nyitó tag Záró tag oldalfej tözs.
A társadalmi tényezők hatása a tanulásra
C++ programozási nyelv Gyakorlat hét
Erőállóképesség mérése Találjanak teszteket az irodalomban
MATEMATIKA Év eleji felmérés 3. évfolyam
Humánkineziológia szak
Programozás III KOLLEKCIÓK 2..
Mellár János 5. óra Március 12. v
10 állítás a gyerekek internethasználatáról
6) 7) 8) 9) 10) Mennyi az x, y és z értéke? 11) 12) 13) 14) 15)
Műveletek logaritmussal
Elektromos mennyiségek mérése
Az új történelem érettségiről és eredményeiről augusztus Kaposi József.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Domain specifikus nyelvek Eclipse Modeling.
Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Eclipse architektúra.
Utófeszített vasbeton lemez statikai számítása Részletes számítás
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Objective-C Készítette: Fahmi Arman B5EXTQ
A tételek eljuttatása az iskolákba
Vizuális modellezés Uml és osztálydiagram UML eszközök
Elektronikai Áramkörök Tervezése és Megvalósítása
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Mutatók, tömbök, függvények
Ember László XUBUNTU Linux (ami majdnem UBUNTU) Ötödik nekifutás 192 MB RAM és 3 GB HDD erőforrásokkal.
VÁLOGATÁS ISKOLÁNK ÉLETÉBŐL KÉPEKBEN.
Védőgázas hegesztések
1. IS2PRI2 02/96 B.Könyv SIKER A KÖNYVELÉSHEZ. 2. IS2PRI2 02/96 Mi a B.Könyv KönyvelésMérlegEredményAdóAnalitikaForintDevizaKönyvelésMérlegEredményAdóAnalitikaForintDeviza.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
A C++ programozási nyelvSoós Sándor 1/12 C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
JSP és JavaBean JavaServer Pages és Java Beans Fabók Zsolt Általános Informatikai Tanszék Miskolci Egyetem.
© Kozsik Tamás Csomagok. © Kozsik Tamás A program tagolása Típusdefiníciók (osztályok, interfészek) Metódusok Blokk utasítások Csomagok.
Szerkezeti elemek teherbírásvizsgálata összetett terhelés esetén:
Sárgarépa piaca hasonlóságelemzéssel Gazdaság- és Társadalomtudományi kar Gazdasági és vidékfejlesztési agrármérnök I. évfolyam Fekete AlexanderKozma Richárd.
NOVÁK TAMÁS Nemzetközi Gazdaságtan
DRAGON BALL GT dbzgtlink féle változat! Illesztett, ráégetett, sárga felirattal! Japan és Angol Navigáláshoz használd a bal oldali léptető elemeket ! Verzio.
A közép- és emelt szintű vizsga tanári értékelése
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
szakmérnök hallgatók számára
Logikai szita Izsó Tímea 9.B.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
Adatszerkezetek 1. előadás
2007. május 22. Debrecen Digitalizálás és elektronikus hozzáférés 1 DEA: a Debreceni Egyetem elektronikus Archívuma Karácsony Gyöngyi DE Egyetemi és Nemzeti.
Hernyák Zoltán Programozási Nyelvek II.
A pneumatika alapjai A pneumatikában alkalmazott építőelemek és működésük vezérlő elemek (szelepek)
Csurik Magda Országos Tisztifőorvosi Hivatal
A klinikai transzfúziós tevékenység Ápolás szakmai ellenőrzése
2006. Peer-to-Peer (P2P) hálózatok Távközlési és Médiainformatikai Tanszék.
QualcoDuna interkalibráció Talaj- és levegövizsgálati körmérések évi értékelése (2007.) Dr. Biliczkiné Gaál Piroska VITUKI Kht. Minőségbiztosítási és Ellenőrzési.
XML Mi az XML?  Extensible Markup Language  Kiterjeszthető jelölő nyelv  Adatok, adatstruktúrák leírására szolgál  A HTML és az SGML tapasztalataira.
Objektumvezérelt rendszerek tervezése 7. óra – Iterator, State, Interpreter © Szőke Gábor.
1. Melyik jármű haladhat tovább elsőként az ábrán látható forgalmi helyzetben? a) A "V" jelű villamos. b) Az "M" jelű munkagép. c) Az "R" jelű rendőrségi.
Virtuális Méréstechnika Sub-VI és grafikonok 1 Makan Gergely, Vadai Gergely v
Mérés és adatgyűjtés laboratóriumi gyakorlat - levelező Sub-VI és grafikonok 1 Mingesz Róbert V
Objektumvezérelt rendszerek tervezése 9.óra – Builder, Observer © Nagy Csaba.
Adamkó Attila UML2 Adamkó Attila
Objektumvezérelt rendszerek tervezése 5.óra – Singleton, Visitor, Abstract Factory © Nagy Csaba.
> aspnet_regiis -i 8 9 TIPP: Az „Alap” telepítés gyors, nem kérdez, de később korlátozhat.
A KÖVETKEZŐKBEN SZÁMOZOTT KÉRDÉSEKET VAGY KÉPEKET LÁT SZÁMOZOTT KÉPLETEKKEL. ÍRJA A SZÁMOZOTT KÉRDÉSRE ADOTT VÁLASZT, VAGY A SZÁMOZOTT KÉPLET NEVÉT A VÁLASZÍV.
Haladó C++ Programozás Programtervezési minták – alapok Sonkoly Balázs
1 Az igazság ideát van? Montskó Éva, mtv. 2 Célcsoport Az alábbi célcsoportokra vonatkozóan mutatjuk be az adatokat: 4-12 évesek,1.
.NET FRAMEWORK Röviden Krizsán Zoltán 1.0. Tulajdonságok I Rövidebb fejlesztés 20 támogatott nyelv (nyílt specifikáció) 20 támogatott nyelv (nyílt specifikáció)
Programozás III JPA.
Strukturális tervezési minták
Programtervezési minták
Viselkedési minták Behavioral patterns.
Előadás másolata:

Budapest University of Technology and Economics Fault-tolerant Systems Research Group Nyílt Fejlesztőrendszerek Plugin fejlesztés – tervezési minták

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 2 Eclipse platform  Sok fejlesztő  Hatalmas API  Sok komponens  Rengeteg extension point  Rengeteg funkció  Hogyan lehet kézben tartani a fejlesztést? −Szabályok! −Tervezési minták!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 3 Patternek  Szoftver újrafelhasználás −Fejlesztési célok ●Gyorsaság ●Minőség ●Elfogadható ár −Újrafelhasználhatóság céljai és lehetőségei ●Gyorsítja a fejlesztést ●Biztonságosabb megoldásokat kínál ●Megkönnyíti a fejlesztők dolgát

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 4 Újrafelhasználás - alapkoncepció

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 5 Újrafelhasználás - evolúció  0. „mindent a kályhától”  1. Copy-paste  2. Függvény könyvtárak  3. Objektumok  4. Osztály könyvtárak (class libraries)  5. Tervezési minták, minta nyelvek  6. Komponens technológiák  7. Keretrendszerek (frameworks), vállalati sablonok

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 6 Minták - alapfogalom  Általános minták: −Olyan, sokak által ismert formátumban dokumentált megoldásváz, amelynek alkalmazhatósága könnyen eldönthető egy adott probléma esetén, a végleges megoldás útmutató segítségével könnyen létrehozható.  SW minták: −Egymással kapcsolatban álló osztályok és objektumok, amelyek együtt egy adott objektum-orientált tervezési feladat vagy probléma megoldását szolgálják.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 7 Tervezési minta - adatok 1.Azonosítás 1.Név 2.Kategorizálás 3.Kulcsszavak 4.Ismert alkalmazások 5.Kapcsolódó minták 2.Probléma 1.Motiváció 2.Cél 3.Megoldás 1.Struktúra 2.Résztvevők 3.Együttműködésük 4.Implementáció 5.Kód minták 4.Következmények 1.Előnyök 2.Hátrányok 3.Alkalmazhatóság

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 8 Tervezési minta megadás -példa

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 9 Tervezési minta felhasználás  Implementálás fázisai: −Keresés ●Név ●Felhasználási terület ●Kulcsszavak −Kiválasztás ●Előnyök, hátrányok ●Alkalmazhatóság −Készítés – jól bevált ötletek −Felhasználás - implementálás

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 10 Tervezési minták leírása  Hagyományos −Szövegszerkesztő + rajzolóprogram −Szabad kéz a kötelező és opcionális elemek terén  Törekvések −Egységes formátum, tool támogatás, katalogizálás és visszakereshetőség segítése  Nyelvek −PCML (Pattern & Component Markup Lang.) −RAS (Reusable Asset Specification)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 11 Alapvető tervezési minták

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 12 Factory method  Egy objektum létrehozásakor egy interfészt definiálunk, de a leszármazott osztályok eldönthetik, hogy milyen oszályt példányosítanak valójában

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 13 Factory method  Cél: −Komplex objektum létrehozása −Egy specifikus implementációból −Azonos konstruktor különböző implementációkhoz  Megoldott esetek: −Ha egy t kell példányosítania −Ha egy osztály a gyerekeire akarja hagyni a példányosítandó osztály meghatározását

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 14 Factory method  Megoldás: elkerülhető a specifikus osztályok bedrótozása a kódba

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 15 Tervezési minták  Még sok, jól bevált van −Általános minták −Vállalati minták −…  Ajánlott irodalom: −Gamma et. Al.: Design Patterns

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 16 Tervezési minták - Eclipse  A legfontosabb részek mintákat kínálnak  És mintákat használnak  A kiterjesztések megvalósításához

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 17 Core runtime - IAdaptable  Alapprobléma −Az Eclipse kiterjeszthető platform ●Új funkciók, új komponensek jönnek létre −Az új elemek feldolgozásához meg kellene változtatni az API-t? ●Nem lenne elég stabil az interfész −A már meglevő részek működését is befolyásolni kell – hogyan? ●Az alap Java nem segít

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 18 Core runtime - IAdaptable  Példa −Az Eclipse elválasztja a megjelenítést a működéstől −Pl. IFile, IFolder, IProject – a fájlrendszer elemeinek absztrakciói – nincs megjelenítés −Lehetne: IUIFile, … ●Nem jó, mert minden új elemhez új UI interfész is kellene (overhead) −Hogyan jelenítsük meg az elemeket?

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 19 Core runtime - IAdaptable  Megoldás - IPropertySource −Egy interfész, melyen keresztül lekérdezhetők az elem megjelenítés-specifikus tulajdonságai −Hogyan implementáljuk? ●Közvetlenül… -> nem jó!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 20 Core runtime - IAdaptable  Közvetlen implementáció −Túl sok örökölt interfészhez vezethet, nem jó −Az interfész átvételével változik az API, ami nem jó −Ha pl. az IFile tudna a Properties viewról, akkor beépítettünk egy nem kívánatos GUI – Core linket…

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 21 Core runtime - IAdaptable  Konklúzió −Szükség van egy megoldásra, mely lehetővé teszi: ●Egy interfész hozzáadását egy típushoz, anélkül hogy a típust belőle örököltetnénk ●Új viselkedést adjunk meglevő típusokhoz (pl. IFile)  Megoldás: Extension Object pattern

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 22 Core runtime - IAdaptable  Extension Object pattern −Cél: különböző interfészek támogatása anélkül, hogy a típusunknak örökölnie kellene őket −A kliens egy típuskód alapján kérheti le a megfelelő interfészt −Dinamikusan nőhet az interfészek száma −Futásidejű kötés lehetséges az extension- öknél

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 23 Core runtime - IAdaptable  Extension Object pattern −Kérdések ●Objektum vagy osztály szintű extension kezelés -> az Eclipse osztályt szintűt definiál  Új viselkedés megadható, de új tulajdonságok nem! ●Hogy adjuk meg a lehetséges extension-öket? -> 2 megoldás  A kiterjeszthető osztály maga adja meg (programozott)  Külső kiterjesztés esetén a Platform osztály segíségével regisztrálunk egy Adapter Factory-t az osztályhoz.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 24 Core runtime - IAdaptable  Példa – bedrótozott kiterjesztés

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 25 Core runtime - IAdaptable  Példa – bedrótozott kiterjesztés Interfészt ad meg a kliens

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 26 Core runtime - IAdaptable  Példa – bedrótozott kiterjesztés Az implementáló osztályt példányosítjuk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 27 Core runtime - IAdaptable  Példa – utólagos kiegészítés Az utólag elkészült extension osztály

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 28 Core runtime - IAdaptable  Példa – utólagos kiegészítés Az adapter factory, mely tartalmaz egy listát az extension-ökről

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 29 Core runtime - IAdaptable  Példa – utólagos kiegészítés Az adapter factory getAdapter metódusa. Az adott objektumhoz és adapterhez tartozó extension példányt kell visszaadni.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 30 Core runtime - IAdaptable  Példa – utólagos kiegészítés Regisztrálni kell az AdapterFactory- t. Ezt a plugin start metódusában vagy statikus inicializáló blokkjában érdemes megtenni.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 31 Core runtime - IAdaptable  Példa – utólagos kiegészítés – összefoglaló modell

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 32 Core runtime - IAdaptable  Elemek −IAdaptable – a kiegészítendő osztálynak implementálni kell −AdapterFactory – utólagos bővétményeket tárol és példányosít

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 33 Erőforrások  Erőforrások −Az Eclipse erősen fájlrendszer alapú ●Nincs köztes repository ●A fájlt vagy közvetlenül (kívülről) vagy az Eclipse- ből módosíthatjuk −Erőforrások ●Létrejönnek/módosulnak/törlődnek ●Nem akarjuk az állapotot több helyen tárolni  Állapotmentes referencia kell  Eclipse: csak Handle-t kap a kliens

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 34 Erőforrások  Handle −Két minta összekötése: Proxy és Bridge −Proxy: helyettes létrehozása egy objektum számára, hogy kontrolláljuk a hozzáférést ●Hozzáférés kezelés -> érvénytelen állapot kialakulásának elkerülése −Bridge: leválasztja az interfészt és az implementációt, hogy függetlenül módosulhassanak ●Az interfész és implementáció erős elválasztása

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 35 Erőforrások  Alkalmazás a fájlrendszerre: −Egy handle, ami kulcs a fájlhoz −Egy info objektum, mely a fájl állapotát tárolja. Csak egy info implementáció van minden handle-hez. −Handle: IFile, IFolder, IProject, IWorkspaceRoot ●Nem implementálandóak!

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 36 Erőforrások  Példa: IFile Csak az elérési utat és a workspace-t ismeri

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 37 Erőforrások  Handle −Érték típusok, az egyenlőséget qz equals() metódussal vizsgáljuk ●Hash-elhetőek ●Több handle mutathat ugyanarra az erőforrásra −Definiálhatják az erőforrás viselkedését, de az állapotát nem tárolhatják −Egy handle mutathat nem létező erőforrásra −Néhány művelet csak a handle-ben levő információkra alapoz, ezek nem létező erőforrás esetén is sikeresek

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 38 Erőforrások  Handle −Ha egy műveletnek szüksége van az erőforrásra, CoreException-t dob, ha az nem létezik −Létezés tesztelése: exists() −A handle egy szülő handle-ből keletkezik −A handle használható az erőforrás létrehozására is

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 39 Erőforrások  Handle −Mivel a handle állapot nélküli, biztosan nem tárol érvénytelen állapotot a kliensben.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 40 Erőforrások  ResourceInfo −Az elemek állapotát tárolja −Leszármazott osztályok (pl. ProjectInfo) a speciális állapot tárolására −Fa struktúrában tárolódik a teljes workspace információja a memóriában −->”element tree” −Az info visszaadása a fa bejárásával történik a handle-ben levő path segítségével ●Lemezművelet nélkül megtalálhatjuk a keresett elemet

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 41 Workspace – composite pattern  Az erőforrás fa a composite mintát követi −A composite minta lényege: Fastruktúrába szervezni az elemeket, a köztük levő rész/egész viszony felhasználásával.  A fa gyökere: IWorkspaceRoot −ResourcePlugin.getWorkspace()

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 42 Workspace – composite pattern Az IResource közös ős A getParent() művelet csak a handle-kre alapozva teszi lehetővé a navigációt

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 43 Workspace – composite pattern Közös ős az összetett objektumok számára A gyerekek bejárhatóak a members() hívással De van jobb megoldás…

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 44 Erőforrás bejárás - Visitor  A kódolás elkerülésére alkalmazzuk  Visitor: Egy műveletet valósít meg, melyet egy objektum struktúrán akarunk megvalósítani.  A fa bejárást nem kell megvalósítani, csak egyszer

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 45 Erőforrás bejárás - Visitor  Struktúra  Az accept() metódus valósítja meg a bejárást, és visszahívja a visitor-t minden elemre  Ha a visit() true-val tér vissza, akkor az elem gyerekeit is be kell járni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 46 Erőforrásváltozások követése - Observer  Az erőforrások változhatnak −Az Eclipse-en belüli változtatások miatt −A fájlrendszerhez való újraszinkronizálás miatt  Az állapotváltozásokat követni kell −A klienseknek a hatékony állapot-frissítések miatt szükségük lehet rá −A Workspace-ben kel regisztrálni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 47 Erőforrásváltozások követése - Observer Tárolja a Listenereket

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 48 Erőforrásváltozások követése - Observer A listener megkapja az értesítést

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 49 Erőforrásváltozások követése - Observer  Kétféle módosítási minta −Push – a listener részletes információkat kap a változásokról −Pull – a listenernek kell lekérdezni az új állapotot −Eclipse: ResourceDelta ●Az erőforrás-fa állapot-változását írja le ●Önmaga is fa

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 50 Erőforrásváltozások követése - Observer  A resourceDelta az egyszeres és többszörös változásokat ugyanazzal a struktúrával írja le  Egyszerűen be lehet járni a delta tree-t  Mivel az erőforrások csak handle-k, törölt elemekre is hivatkozhatnak

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 51 Batch változtatások  Minden eseményvezérelt rendszerben veszélyes a túl sok esemény érkezése  Lehetőség van atomi kompozit akciók létrehozására −IWorkspaceRunnable −Atomi futtatás −Csak egy értesítés keletkezik, a futás végén

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 52 Batch változtatások - példa  Az „execute around method” minta alapján  A run() metódus az execute-around metódus

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 53 Erőforrások->Java elemek - Adapter  Az erőforrás-struktúra −Fájlok és mappák  A Java-centrikus nézet −A Java modell struktúrája – osztályok, csomagok, …  A Java nézetben más API-val akar dolgozni a felhasználó −Tipikus eset az adapter mintának

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 54 Erőforrások->Java elemek - Adapter  IJavaElement.getCorrespondingResource() – a mögöttes erőforrás – nem mindig van! −Vannak Java elemek, melyek a workspace-en kívül vannak, nincs erőforrás megfelelőjük −Java elemek, melyek metódusokat reprezentálnak

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 55 Erőforrások->Java elemek - Adapter  Az IJavaElement lehetővé teszi a mögöttes erőforrások elérését  Szükség lehet a másik irányra is! −Facade: JavaCore – factory metódusok erőforrásokból Java elem létrehozására -> ezek csak handle-k

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 56 Java elemek – (Virtuális) proxy  Hasonló struktúra, mint az erőforrások esetén

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 57 A Java modell bejárása  Nincs olyan Visitor megoldás, mint az erőforrásoknál −A Java fa lusta módszerrel épül fel −Ezért egy teljes bejárás költséges lenne ●A fordítási egységeket értelmezni kell… −Inkább egyedi keresést alkalmazzunk

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 58 A Java modell – változás figyelés  Nagyon hasonló az erőforrásoknál alkalmazotthoz

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 59 A Java modell – változás figyelés  Az erőforrás deltákkal ellentétben nem mindig a gyökérből indul  A delta csak az eseménykezelés alatt érvényes (erőforrás-felszabadítás)  ExecuteAround: JavaCore.run()

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 60 A Java modell – változás figyelés  A típushierarchia nem része a fának  Ezért külön változás-figyelés van hozzá

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 61 Eredmények gyűjtése - Builder  A Java Core több olyan elemet tartalmaz, melyek működése után egy eredménylista keletkezik −A search egy találati listát generál −A content assist a lehetséges folytatásokat adja vissza −A Java fordító hibaüzeneteket generál  A lista generálásának és megjelenítésének elválasztását meg kell oldani.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 62 Eredmények gyűjtése - Builder  Builder: Válasszuk el egy komplex objektum létrehozását és ábrázolását, hogy ugyanaz a konstruktor más-más reprezentációhoz vezethessen.  Hasonló a Factory-hoz.  A Builder komponensek neve Requestor- ra vagy Collector-ra végződik (Eclipse konvenció)

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 63 Eredmények gyűjtése – Builder Példa: Search A SearchEngine végzi a keresést, és értesíti az IJavaSearchResultCollector-t

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 64 Eredmények gyűjtése – Builder Példa: Search Gyűjti a találatokat. Az aboutToStart() a kezdést jelzi, az accept az egyes találatokat.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 65 Eredmények gyűjtése – Builder Példa: Content Assist Lehetséges folytatásokat keres

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 66 Eredmények gyűjtése – Builder Példa: Content Assist Az eredményeket típus szerint jelenti

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 67 UI Workbench – Lusta betöltés  A workbench számos extension point-ot definiál  Fontos a lazy load tulajdonság megteremtése, hogy ne kelljen minden extension-t betölteni  Példa: akciók  Csak a deklaráció töltődik be (plugin.xml) −Vrtuális proxy minta

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 68 Eredmények gyűjtése – Builder Példa: Content Assist Maga az Action a plugin.xml információi alapján készül. A run() kivételével mindent tud

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 69 Eredmények gyűjtése – Builder Példa: Content Assist Az implementáció csak a run() hívásakor töltődik be

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 70 UI Workbench – Állapotmegőrzés  User continuity rule: „Preserve the user interface state across sessions.”  Az állapot-tárolással kapcsolatos követelmények −Robosztus, könnyen bővíthető −Komplex struktúrákat is támogatnia kell −Tetszőleges objektumot el kell tudni menteni és visszatölteni

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 71 UI Workbench – Állapotmegőrzés  Memento: Az integritás megsértése nélkül tegyük lehetővé az objektum állapotának kimentését, amiből később az állapot visszaállítható.  Az Eclipse XML-alapú formátumot használ

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 72 UI Workbench – Editor és View visszaállítás  Sok editor és view lehet aktív  De csak kevés látszik egyszerre  Visszaállításkor nem kell mindet betölteni −Mert ez sok plugin aktiválásához vezetne  Proxy-kat kell használni  Kooperációt igényel: Ha le akarjuk kérni az editorok listáját, csak a proxy-kat kérjük le.

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 73 UI Workbench – Editor és View visszaállítás

Budapest University of Technology and Economics Fault-tolerant Systems Research Group 74 Példa: ISafeRunnable for (Iterator all=getListeners().iterator();all.hasNext()) { IMyExstension ext = (IMyExtension)all.next(); ISafeRunnable runnable = new ISAfeRunnable() { public void handleException(Throwable exception){ all.remove(); } public void run() throws Exception { ext.execute(); //hívom az extensiont } }; Platform.run(runnable); } Végigmegyünk az extension-ökön