Hey George,

Thanks for your answer! :)

Well, maybe I am mismatching two concepts. So, my command that implements PrerequisiteCommandsProvider does this:

    @Override
    public NavigationResult getPrerequisiteCommands(UIContext context) {
        NavigationResultBuilder builder = NavigationResultBuilder.create();

        builder.add(ServletSetupWizard.class);

        return builder.build();
    }

Then, just before I execute the command controller thing, I install the Servlet facet for the corresponding Servlet version.

But most probably installing a facet does not disable the prerequisite command?

Cheers,
Ivan

On Fri, Jul 3, 2015 at 5:23 PM, George Gastaldi <ggastald@redhat.com> wrote:
Hi Ivan,

Glad you decided to resume your work on the servlet security addon.

When your command use a PreRequisiteCommandProvider, the initial step might not be your command in question, but the commands to be executed before that. That's why your setValueFor method might fail.

What are the inputs returned in your test after you call initialize() (commandController.getInputs()) ?

Best Regards,

George Gastaldi


On 07/03/2015 09:36 AM, Ivan St. Ivanov wrote:
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


_______________________________________________
forge-dev mailing list
forge-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev


_______________________________________________
forge-dev mailing list
forge-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/forge-dev