From 3c9c83061936c8abce4ab42e944234a0ce180d21 Mon Sep 17 00:00:00 2001 From: Antonio Goncalves Date: Thu, 19 Feb 2015 17:58:58 +0100 Subject: [PATCH] FORGE-2255: Adding helper methods in CommandController --- .../addon/ui/controller/CommandController.java | 14 ++++++++++++++ .../controller/NoUIWizardControllerDecorator.java | 14 +++++++++++++- .../controller/SingleCommandControllerImpl.java | 12 ++++++++++++ .../controller/WizardCommandControllerImpl.java | 14 +++++++++++++- .../addon/ui/controller/CommandControllerTest.java | 13 ++++++++----- .../ui/controller/WizardCommandControllerTest.java | 8 +++++--- 6 files changed, 65 insertions(+), 10 deletions(-) diff --git a/ui/api/src/main/java/org/jboss/forge/addon/ui/controller/CommandController.java b/ui/api/src/main/java/org/jboss/forge/addon/ui/controller/CommandController.java index 81526f62b6..0c27b92b79 100644 --- a/ui/api/src/main/java/org/jboss/forge/addon/ui/controller/CommandController.java +++ b/ui/api/src/main/java/org/jboss/forge/addon/ui/controller/CommandController.java @@ -96,6 +96,20 @@ public interface CommandController extends AutoCloseable */ Map> getInputs(); + /** + * Returns a {@link InputComponent} instances for this command given an input name. May be null. + * + * @throws IllegalStateException if {@link #initialize()} has not been called before invoking this method. + */ + InputComponent getInput(String inputName); + + /** + * Returns true if the {@link InputComponent} instances exists for this command given an input name. + * + * @throws IllegalStateException if {@link #initialize()} has not been called before invoking this method. + */ + boolean hasInput(String inputName); + /** * @return the result of the current {@link UICommand#getMetadata(UIContext)}. Does not require initialization. */ diff --git a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/NoUIWizardControllerDecorator.java b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/NoUIWizardControllerDecorator.java index e11f3fa390..86ce1df231 100644 --- a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/NoUIWizardControllerDecorator.java +++ b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/NoUIWizardControllerDecorator.java @@ -189,7 +189,19 @@ public Object getValueFor(String inputName) throws IllegalArgumentException return controller.getInputs(); } - @Override + @Override + public InputComponent getInput(String inputName) + { + return getInputs().get(inputName); + } + + @Override + public boolean hasInput(String inputName) + { + return getInputs().containsKey(inputName); + } + + @Override public UICommandMetadata getMetadata() { return controller.getMetadata(); diff --git a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/SingleCommandControllerImpl.java b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/SingleCommandControllerImpl.java index c95349d435..d456eb9a40 100644 --- a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/SingleCommandControllerImpl.java +++ b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/SingleCommandControllerImpl.java @@ -111,6 +111,18 @@ public boolean canExecute() return uiBuilder.getInputs(); } + @Override + public InputComponent getInput(String inputName) + { + return getInputs().get(inputName); + } + + @Override + public boolean hasInput(String inputName) + { + return getInputs().containsKey(inputName); + } + @SuppressWarnings("unchecked") @Override public CommandController setValueFor(String inputName, Object value) diff --git a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/WizardCommandControllerImpl.java b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/WizardCommandControllerImpl.java index aaba4f17f0..68e0d02585 100644 --- a/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/WizardCommandControllerImpl.java +++ b/ui/impl/src/main/java/org/jboss/forge/addon/ui/impl/controller/WizardCommandControllerImpl.java @@ -239,7 +239,19 @@ public Object getValueFor(String inputName) throws IllegalArgumentException return getCurrentController().getInputs(); } - @Override + @Override + public InputComponent getInput(String inputName) + { + return getInputs().get(inputName); + } + + @Override + public boolean hasInput(String inputName) + { + return getInputs().containsKey(inputName); + } + + @Override public UICommandMetadata getMetadata() { return getCurrentController().getMetadata(); diff --git a/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/CommandControllerTest.java b/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/CommandControllerTest.java index 143b1ae335..34c66e7f23 100644 --- a/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/CommandControllerTest.java +++ b/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/CommandControllerTest.java @@ -14,11 +14,7 @@ import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; import org.jboss.forge.addon.ui.command.ValidateRequiredCommand; -import org.jboss.forge.addon.ui.controller.mock.ExampleCommand; -import org.jboss.forge.addon.ui.controller.mock.ExampleNoUICommand; -import org.jboss.forge.addon.ui.controller.mock.FlowExampleStep; -import org.jboss.forge.addon.ui.controller.mock.FlowExampleWizard; -import org.jboss.forge.addon.ui.controller.mock.MockPreStepsCommand; +import org.jboss.forge.addon.ui.controller.mock.*; import org.jboss.forge.addon.ui.impl.mock.MockUIContext; import org.jboss.forge.addon.ui.impl.mock.MockUIRuntime; import org.jboss.forge.addon.ui.result.Result; @@ -93,6 +89,10 @@ public void testSingleCommandController() throws Exception controller.initialize(); Assert.assertFalse(controller.getInputs().isEmpty()); Assert.assertTrue(controller.getInputs().containsKey("firstName")); + Assert.assertNotNull(controller.getInput("firstName")); + Assert.assertTrue(controller.hasInput("firstName")); + Assert.assertNull(controller.getInput("dummy")); + Assert.assertFalse(controller.hasInput("dummy")); controller.setValueFor("firstName", "Forge"); Assert.assertEquals("Forge", controller.getValueFor("firstName")); Assert.assertTrue(controller.isValid()); @@ -116,6 +116,9 @@ public void testExampleNoUI() throws Exception exampleNoUICommand); controller.initialize(); Assert.assertTrue(controller.getInputs().isEmpty()); + Assert.assertEquals(0, controller.getInputs().size()); + Assert.assertNull(controller.getInput("firstName")); + Assert.assertFalse(controller.hasInput("firstName")); Assert.assertTrue(controller.isValid()); Assert.assertTrue(controller.canExecute()); Result result = controller.execute(); diff --git a/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/WizardCommandControllerTest.java b/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/WizardCommandControllerTest.java index c12bac169b..ef87e18b69 100644 --- a/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/WizardCommandControllerTest.java +++ b/ui/tests/src/test/java/org/jboss/forge/addon/ui/controller/WizardCommandControllerTest.java @@ -7,9 +7,7 @@ package org.jboss.forge.addon.ui.controller; -import static org.hamcrest.CoreMatchers.instanceOf; -import static org.hamcrest.CoreMatchers.is; -import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.*; import java.util.List; @@ -220,6 +218,10 @@ public void testDynamicInputs() throws Exception controller.next().initialize(); Assert.assertTrue("Should have added one input", controller.getInputs().size() == 1); Assert.assertTrue("Input inputOne not added", controller.getInputs().containsKey("inputOne")); + Assert.assertNotNull(controller.getInput("inputOne")); + Assert.assertTrue(controller.hasInput("inputOne")); + Assert.assertNull(controller.getInput("dummy")); + Assert.assertFalse(controller.hasInput("dummy")); Assert.assertTrue(controller.canMoveToPreviousStep()); controller.previous(); controller.setValueFor("chooseInputTwo", Boolean.TRUE);