J'ai un énorme code source Part
Je dois toucher à 1 place. Il viole beaucoup de principes donc je voudrais extraire au moins la fonction que j'ai dû modifier qui est un gestionnaire @UIEventTopic
. Il n'y a pas de tests et je voudrais les ajouter ici, donc je sais que je ne casse pas les fonctionnalités existantes.Séparation d'un événement de l'interface utilisateur écoutant une pièce dans Eclipse RCP: comment le faire correctement?
Je voudrais sortir de cette:
public class MyPart {
...
@Inject
@Optional
public void event(@UIEventTopic(EVENT) EventParam p) {
...
}
}
à quelque chose comme ceci:
public class MyPart {
...
}
public class MyEventHandler {
@Inject
@Optional
public void event(@UIEventTopic(EVENT) EventParam p, MyPart part) {
...
}
}
Avec l'Eclipse DI je ne vois aucun moyen facile de créer une instance de la classe de gestionnaire. Il ne peut pas être un @Singleton
parce que c'est un Part
qui peut avoir plusieurs instances, et ajouter le gestionnaire au IEclipseContext
dans le @PostConstruct
est moche car il ajoute une dépendance circulaire entre la pièce et le gestionnaire. Y a-t-il une magie pour que je puisse appliquer l'instanciation à travers les fichiers e4xmi, ou d'une autre manière? Ma solution actuelle est d'extraire purement la fonctionnalité à un bean utilitaire et de renvoyer les données et de les paramétrer sur la pièce, mais c'est aussi quelque chose de pas très sympa (nécessite beaucoup de vérifications supplémentaires, ifs, etc.).
Salut Rüdiger, Ouais, merci beaucoup. À la fin, nous nous sommes retrouvés dans une situation similaire - en passant la partie parce que le fait de se moquer aurait rendu les tests un peu gonflés. Nous avons donc plutôt créé un objet résultat et je le mets à l'épreuve. Merci pour les idées. – rlegendi