Bonjour,
J'ai un problème avec l’exécution d'une Command / Handler.
Effectivement, j'ai un Handler lié à une classe de ce type :
1 2 3 4 5 6 7 8
| public class RefreshHandler
{
@Execute
public void execute(EPartService partService, MApplication application, EModelService modelService)
{
[...]
}
} |
Cette classe est bien évidemment liée à un "Handler" dans mon Application.e4xmi et ce Handler est aussi lié à une "Command".
J'avais besoin d'appeler la fonction execute du RefreshHandler dans une de mes classes lors d'un événement particulier, pour cela, lors de l'événement en question j'ai fait comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13
| // activate handler
handlerService.activateHandler("net.zephyr.graphicInterface.command.refresh", new RefreshHandler());
// prepare execution of command
ParameterizedCommand cmd = commandService.createCommand("net.zephyr.graphicInterface.command.refresh", null);
// check if the command can get executed
if (handlerService.canExecute(cmd))
{
System.out.println("pretest");
// execute the command
handlerService.executeHandler(cmd);
} |
Sachant que je récupère les variables "handlerService" et "commandService" grâce à ceci
@Inject private static ECommandService commandService; @Inject private static EHandlerService handlerService;
Mon problème est que ces lignes de code ne marchent qu'une seule fois et je ne comprends pas pourquoi. La première fois que l'on rentre dans l'événement tout se passe comme prévu et la fonction "execute" s'exécute correctement, mais lorsqu'on passe une deuxième fois dans l’événement, la fonction "execute" n'est plus appelée, sans aucune raison. Pourtant, il n'y a aucune erreur de signalée.
J'ai exécuté en mode debug, il n'y a aucune différence entre la première et la deuxième fois, si ce n'est qu'on ne passe pas dans le execute la deuxième fois. Les adresses des variables sont les mêmes, tout est similaire.
Ce qui me chagrine le plus, c'est que j'utilise exactement le même concept ailleurs dans mon programme pour un autre handler et cela marche autant de fois que je veux.
Une idée d'où vient mon erreur ?
Merci d'avance pour votre aide.
Partager