diff --git a/bean-validation/impl/src/main/java/org/jboss/addon/validation/ui/ValidationInputComponentEnricher.java b/bean-validation/impl/src/main/java/org/jboss/addon/validation/ui/ValidationInputComponentEnricher.java index 5d5ab8def9..ee25e6a341 100644 --- a/bean-validation/impl/src/main/java/org/jboss/addon/validation/ui/ValidationInputComponentEnricher.java +++ b/bean-validation/impl/src/main/java/org/jboss/addon/validation/ui/ValidationInputComponentEnricher.java @@ -32,6 +32,6 @@ public void enrich(InjectionPoint injectionPoint, InputComponent input) { Class beanType = injectionPoint.getBean().getBeanClass(); UIValidationAdapter adapter = new UIValidationAdapter(validator, input, (Class) beanType); - input.setValidator(adapter); + input.addValidator(adapter); } } diff --git a/bean-validation/tests/pom.xml b/bean-validation/tests/pom.xml index 27fc52f371..2effa95c3e 100644 --- a/bean-validation/tests/pom.xml +++ b/bean-validation/tests/pom.xml @@ -24,6 +24,12 @@ ui forge-addon + + org.jboss.forge.addon + ui-test-harness + forge-addon + test + org.jboss.forge.furnace.test furnace-test-harness diff --git a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedExportedObject.java b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedObject.java similarity index 81% rename from bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedExportedObject.java rename to bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedObject.java index 0fb11d12d0..9815772463 100644 --- a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedExportedObject.java +++ b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ManagedObject.java @@ -9,14 +9,11 @@ import javax.validation.constraints.NotNull; -import org.jboss.forge.furnace.services.Exported; - /** * * @author George Gastaldi */ -@Exported -public class ManagedExportedObject +public class ManagedObject { public String sayHello(@NotNull String name) { diff --git a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/MethodValidatorTest.java b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/MethodValidatorTest.java index 80192b620d..00c9e684d6 100644 --- a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/MethodValidatorTest.java +++ b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/MethodValidatorTest.java @@ -35,7 +35,7 @@ public static ForgeArchive getDeployment() { ForgeArchive archive = ShrinkWrap .create(ForgeArchive.class) - .addClass(ManagedExportedObject.class) + .addClass(ManagedObject.class) .addBeansXML() .addAsAddonDependencies( AddonDependencyEntry.create("org.jboss.forge.addon:bean-validation"), @@ -45,7 +45,7 @@ public static ForgeArchive getDeployment() } @Inject - private ManagedExportedObject exportedObject; + private ManagedObject exportedObject; @Test public void testInjection() throws Exception diff --git a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationCommand.java b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationCommand.java new file mode 100644 index 0000000000..9319d4ccbf --- /dev/null +++ b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationCommand.java @@ -0,0 +1,44 @@ +/** + * Copyright 2014 Red Hat, Inc. and/or its affiliates. + * + * Licensed under the Eclipse Public License version 1.0, available at + * http://www.eclipse.org/legal/epl-v10.html + */ + +package org.jboss.forge.addon.validation.ui; + +import javax.inject.Inject; +import javax.validation.constraints.Size; + +import org.jboss.forge.addon.ui.AbstractUICommand; +import org.jboss.forge.addon.ui.context.UIBuilder; +import org.jboss.forge.addon.ui.context.UIExecutionContext; +import org.jboss.forge.addon.ui.input.UIInput; +import org.jboss.forge.addon.ui.metadata.WithAttributes; +import org.jboss.forge.addon.ui.result.Result; +import org.jboss.forge.addon.ui.result.Results; + +/** + * + * @author George Gastaldi + */ +public class ValidationCommand extends AbstractUICommand +{ + @Inject + @WithAttributes(label = "Name", required = true) + @Size(min = 1, max = 5) + private UIInput name; + + @Override + public void initializeUI(UIBuilder builder) throws Exception + { + builder.add(name); + } + + @Override + public Result execute(UIExecutionContext context) throws Exception + { + return Results.success(); + } + +} diff --git a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationUITest.java b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationUITest.java index 9c96b62bef..defaa98d02 100644 --- a/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationUITest.java +++ b/bean-validation/tests/src/test/java/org/jboss/forge/addon/validation/ui/ValidationUITest.java @@ -10,21 +10,16 @@ import java.util.List; import javax.inject.Inject; -import javax.validation.constraints.Size; import org.jboss.arquillian.container.test.api.Deployment; import org.jboss.arquillian.junit.Arquillian; -import org.jboss.forge.addon.ui.context.AbstractUIContext; -import org.jboss.forge.addon.ui.context.AbstractUIValidationContext; -import org.jboss.forge.addon.ui.context.UIContext; -import org.jboss.forge.addon.ui.context.UISelection; -import org.jboss.forge.addon.ui.input.UIInput; -import org.jboss.forge.addon.ui.metadata.WithAttributes; -import org.jboss.forge.addon.ui.util.Selections; +import org.jboss.forge.addon.ui.controller.CommandController; +import org.jboss.forge.addon.ui.output.UIMessage; import org.jboss.forge.arquillian.AddonDependency; import org.jboss.forge.arquillian.Dependencies; import org.jboss.forge.arquillian.archive.ForgeArchive; import org.jboss.forge.furnace.repositories.AddonDependencyEntry; +import org.jboss.forge.ui.test.UITestHarness; import org.jboss.shrinkwrap.api.ShrinkWrap; import org.junit.Assert; import org.junit.Test; @@ -46,6 +41,7 @@ public static ForgeArchive getDeployment() ForgeArchive archive = ShrinkWrap .create(ForgeArchive.class) .addBeansXML() + .addClass(ValidationCommand.class) .addAsAddonDependencies( AddonDependencyEntry.create("org.jboss.forge.addon:ui"), AddonDependencyEntry.create("org.jboss.forge.addon:bean-validation"), @@ -55,32 +51,18 @@ public static ForgeArchive getDeployment() } @Inject - @WithAttributes(label = "Name", required = true) - @Size(min = 1, max = 5) - private UIInput name; + UITestHarness testHarness; @Test - public void testValidation() + public void testValidation() throws Exception { - name.setValue("A very long string"); - final UIContext uiContext = new AbstractUIContext() + try (CommandController controller = testHarness.createCommandController(ValidationCommand.class)) { - @Override - public UISelection getInitialSelection() - { - return Selections.emptySelection(); - } - }; - AbstractUIValidationContext validationContext = new AbstractUIValidationContext() - { - @Override - public UIContext getUIContext() - { - return uiContext; - } - }; - name.validate(validationContext); - List errors = validationContext.getErrors(); - Assert.assertFalse("An error should have been captured", errors.isEmpty()); + controller.initialize(); + controller.setValueFor("name", "A Very Long String"); + Assert.assertFalse("Controller should not be valid", controller.isValid()); + List messages = controller.validate(); + Assert.assertFalse("An error should have been captured", messages.isEmpty()); + } } }