В настоящее время я внедряю приложение Eclipse 4.3 и сталкиваюсь с проблемой. Я пытаюсь параметризовать команду для удаления определенных файлов. Мой подход соответствует Getting parameter of parameterized command in Eclipse RCP 4.2, но я как-то не понимаю, как он работает.Как ввести параметр ParameterizedCommand в Eclipse 4.3?
В моей Application.e4xmi я добавил команду с параметром:
<commands xmi:id="_K1MVgDGKEeOO8o2ChqdHMA" elementId="first.application.command.deleteproject" commandName="deleteProjectCommand">
<parameters xmi:id="_Hr4FEDGTEeOO8o2ChqdHMA" elementId="cmd0" name="cmd0" typeId="" optional="false"/>
</commands>
В один момент в моем коде я создаю команду, установите параметр, и выполнить его:
Map<String, String> parameters = new HashMap<String, String>();
parameters.put("cmd0", "test");
final Command command =commandService.getCommand("first.application.command.deleteproject");
final ParameterizedCommand pcmd = ParameterizedCommand.generateCommand(command, parameters);
pcmd.executeWithChecks(null, null);
у меня есть обработчик, который связан с командой, которая имеет следующий выполнить метод:
@Execute
public void execute(@Optional @Named("cmd0") String file) {
System.out.println("delete project " + file);
}
Все работает нормально, только file
не вводится, он остается null
. Когда я проверяю переменную pcmd
перед ее выполнением, она сообщает мне, что она правильно установила параметры {cmd0=test}
(используя System.out.println(pcmd.getParameterMap());
). Когда я удаляю @Optional
, метод execute вообще не вызывается.
Где-то параметр cmd0
утерян. Где ошибка в моем коде?
Спасибо!