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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
@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.