Ich habe einen großen Part
Quellcode, den ich an 1 Stelle berühren muss. Es verstößt gegen viele Prinzipien, daher möchte ich zumindest die Funktion, die ich ändern musste, extrahieren, die ein @UIEventTopic
Handler ist. Es gibt keine Tests und ich möchte sie hier hinzufügen, also weiß ich, dass ich bestehende Funktionalität nicht zerbrich.Trennen der UI-Ereignisüberwachung von einem Part in Eclipse RCP: Wie wird es richtig gemacht?
Ich möchte von dieser weg bewegen:
public class MyPart {
...
@Inject
@Optional
public void event(@UIEventTopic(EVENT) EventParam p) {
...
}
}
Um so etwas wie dieses:
public class MyPart {
...
}
public class MyEventHandler {
@Inject
@Optional
public void event(@UIEventTopic(EVENT) EventParam p, MyPart part) {
...
}
}
Mit dem Eclipse-DI sehe ich keine einfache Möglichkeit, eine Instanz der Handler-Klasse zu schaffen. Es kann kein @Singleton
sein, weil es ein Part
ist, der mehrere Instanzen haben kann, und das Hinzufügen des Handlers zu dem IEclipseContext
in ist hässlich, da es eine zirkuläre Abhängigkeit zwischen dem Teil und dem Handler hinzufügt. Gibt es eine Magie, wie ich die Instanziierung durch die e4xmi-Dateien erzwingen kann, oder auf eine andere Art und Weise?
Meine aktuelle Lösung rein um die Funktionalität zu einem Dienstprogramm Bohne zu extrahieren und die Daten zurück, und es auf Seiten gesetzt, aber das ist auch etwas, das nicht zu schön (erfordert viel zusätzlicher Null-Kontrollen, ifs, usw.).
Hallo Rüdiger, Yeah, vielen Dank. Am Ende kam es zu einer ähnlichen Situation - wir haben die Prüfung bestanden, weil das Spotten die Tests etwas aufgebläht hätte. Also haben wir lieber ein Ergebnisobjekt erstellt und ich teste das. Danke für die Einsichten. – rlegendi