Hi everybody,

Believe it or not, but I resumed my work on the Servlet Security addon for Forge (https://issues.jboss.org/browse/FORGEPLUGINS-152) :)

And I found something that I don't know whether is a bug or a feature. If my Command class implements the PrerequisiteCommandsProvider and if I try to use the CommandController in my integration test, then I have a problem. Here is a sample code:

try (CommandController commandController = testHarness
               .createCommandController(SecuritySetupCommand.class, project.getRoot()))
      {
         commandController.initialize();
         commandController.setValueFor("securityRealm", realm);
         commandController.setValueFor("authMethod", authenticationMethod);
         commandController.execute();
      }

This code fails at the setValueFor method simply because the UI was not initialized in the initialize method above it and there are no such inputs like securityRealm and authMethod.

I did some debugging and found that if SecuritySetupCommand implements the PrerequisiteCommandsProvider interface, the commandController.initialize() method does not call PrerequisiteCommandsProvider#initializeUI method. Instead it triggeres PrerequisiteCommandTransformer.DelegateWizard#initializeUI. Which is empty and does nothing. And that's the reason why there are no securityRealm and authMethod controls.

I guess that it is caused by some CDI "magic"? So I wonder is it a bug or a feature? Can I use CommandController to test commands that implement PrerequisiteCommandsProvider?

Thanks,
Ivan