RCP Problem mit Plugin Interaktion

TheWhiteShadow

Bekanntes Mitglied
Hallo zusammen,

ich hab ein kleines Problem und brauche mal kreative Hilfe.
Es geht um einen Editor für eine Spiele-Engine, nur so als Info.

Ich habe 2 Plugins (Orange) die je eine Datenklasse (Blau) verwalten, was als POJO realisiert ist.
- SpielObjekte (Objekt)
- ObjektModels (Model)

Abhängigkeit: ObjektModels benötigt SpielObjekte.
Ein Objekt besitzt ein Model ohne dessen Typ zu kennen.

Jetzt erweitert das Plugin SpielObjekte eine Extension um Objekte auf einer Karte zu platzieren.
Dazu muss das Objekt gezeichnet werden. Die Informationen dazu stecken im Model.
Jetzt muss ich irgendwie an die Daten von Model kommen, ohne die Klasse zu kennen.
Wegen der Abhängigkeit darf das Plugin SpielObjekte beliebige API-Schnittstellen anbieten.
Die Datenklassen dürfen als POJOs keine Interfaces oder Annotationen besitzen.

Wie kann ich das am besten realisieren?
Ich weiß, dass Eclipse viele Mechanismen hat um Abhängiggkeiten zu entkoppeln, aber mir fällt grad nichts für mein konkretes Problem ein.
 
1. Wie wärs mit einem OSGi-Service?
2. So wenig wie möglich in die plugin.xml, das ist keine gute Idee nutze lieber OSGI- Mechanismen. Auch Eclipse (siehe e4) arbeitet immer weniger damit.

3. Außerdem würde ich die Daten(Model) als eigenes Plugin auslagern. Wenn du eh mit Eclipse Mechanismen arbeitest bietet sich hier EMF zum generieren deiner Models an.
Eclipse Modeling Framework (EMF) - Tutorial
 
1: Brauch ich bei einem Service nicht ein Interface?
Weil es doch dort so gemacht wird:
Code:
Interface implementierung = ServiceStelle.getService(Interface.class)

2: Und warum sollte die plugin.xml jetzt wider "aus der Mode" kommen?
Dachte, dass die dazu dient um konkrete Plugin-Abhängigkeiten zu reduzieren.
Weil man dort Klassen als String angibt ohne dass die im Classpath des Plugins zu sein brauchen.

3: Ich hab doch mein Model als eigenes Plugin ausgelagert, oder was meinst du?
Etwa die eine Klasse ganz allein als Plugin? Erscheint mir recht Sinnfrei. Und von EMF halte ich nichts.
 
Ich hab jetzt eine Lösung gefunden.
Ich benutze den Extensionpoint "org.eclipse.core.runtime.adapters" um eine AdapterFactory zu registrieren. Diese soll das Model auf eine API in SpielObjekte adaptieren.

Auch wenn ich dazu wieder die plugin.xml nehme, aber was anderes fällt mir auch nicht ein.
 
Vielleicht verstehe ich auch nicht was du erreichen willst, aber wenn man Daten von einem Model will nimmt man meistens Services um diese abzurufen. Mit oder ohne Interface ist da erstmal egal.

Ich glaub das mit der plugin.xml solltest du dir nochmal durchlesen. Aber wie gesagt wird die plugin.xml hoffentlich über kurz oder lange sterben, sieht man ja schon an Eclipse e4, dass Sie immer weniger eingesetzt wird.
 
Vielleicht versteh ich das Service-Model noch nicht ganz. Die Tuts die ich kenne, arbeiten alle mit Interface und Implementierung.

Hab mir das mit dem e4 noch mal angeguckt. Da wird das meißte über die Reflektion-Dependency-Injekten gehandhabt. Auch so ein Konzept, von dem ich nicht viel halte. Seit EE6 das nutzt ist wohl irgendwie im Trend.
 
Sorry ich weiß nicht was du redest, DI macht ja wohl immer Sinn und hat wenig mit Mode zu tun und wie kommst auf Reflektion?

Was soll ein Service-Model sein? Ich hab das Gefühl du solltest dich mal ein wenig mit OSGi beschäftigen 🙂 und warum du sowas einsetzt...

Aber ich weiß grad auch noch was das Problem ist einfach einen Service zu machen der deine Daten bereit stellt oder etwas verarbeitet. Was gefällt dir daran nicht? Ist doch ein ganz normales vorgehen
 

Neue Themen


Zurück
Oben