Skip to content

Commit

Permalink
Upgrades to BV 5.2.2.Final and adds tests using JDK8
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Oct 14, 2015
1 parent 0041525 commit e40ee40
Show file tree
Hide file tree
Showing 6 changed files with 199 additions and 1 deletion.
2 changes: 1 addition & 1 deletion bean-validation/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
</modules>

<properties>
<version.hibernate.validator>5.2.1.Final</version.hibernate.validator>
<version.hibernate.validator>5.2.2.Final</version.hibernate.validator>
</properties>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Copyright 2015 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 static java.lang.annotation.ElementType.ANNOTATION_TYPE;
import static java.lang.annotation.ElementType.CONSTRUCTOR;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.ElementType.TYPE_USE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.ReportAsSingleViolation;

/**
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*/
@Documented
@Constraint(validatedBy = { NotFooValidator.class })
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE })
@Retention(RUNTIME)
@ReportAsSingleViolation
public @interface NotFoo
{
String message() default "My Error Message";

Class<?>[] groups() default {};

Class<? extends Payload>[] payload() default {};

/**
* Defines several {@code @Email} annotations on the same element.
*/
@Target({ METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
@Documented
public @interface List
{
NotFoo[] value();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright 2015 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.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

/**
*
* @author <a href="mailto:ggastald@redhat.com">George Gastaldi</a>
*/
public class NotFooValidator implements ConstraintValidator<NotFoo, Object>
{

@Override
public void initialize(NotFoo constraintAnnotation)
{
}

@Override
public boolean isValid(Object value, ConstraintValidatorContext context)
{
return !"Foo".equals(value);
}

}
Original file line number Diff line number Diff line change
@@ -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 org.hibernate.validator.valuehandling.UnwrapValidatedValue;
import org.jboss.forge.addon.ui.command.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 <a href="ggastald@redhat.com">George Gastaldi</a>
*/
public class ValidationJDK8Command extends AbstractUICommand
{
@Inject
@WithAttributes(label = "Name")
@UnwrapValidatedValue
private UIInput<@NotFoo String> name;

@Override
public void initializeUI(UIBuilder builder) throws Exception
{
builder.add(name);
}

@Override
public Result execute(UIExecutionContext context) throws Exception
{
return Results.success();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
/**
* Copyright 2013 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 java.util.List;

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.ui.controller.CommandController;
import org.jboss.forge.addon.ui.output.UIMessage;
import org.jboss.forge.addon.ui.test.UITestHarness;
import org.jboss.forge.arquillian.AddonDependencies;
import org.jboss.forge.arquillian.AddonDependency;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;

/**
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
@RunWith(Arquillian.class)
@Ignore("HV-1022")
public class ValidationJDK8UITest
{
@Deployment
@AddonDependencies({
@AddonDependency(name = "org.jboss.forge.addon:bean-validation"),
@AddonDependency(name = "org.jboss.forge.addon:ui-test-harness"),
@AddonDependency(name = "org.jboss.forge.furnace.container:cdi")
})
public static AddonArchive getDeployment()
{
AddonArchive archive = ShrinkWrap
.create(AddonArchive.class)
.addBeansXML()
.addClass(ValidationJDK8Command.class)
.addClass(NotFoo.class)
.addClass(NotFooValidator.class);

return archive;
}

@Inject
UITestHarness testHarness;

@Test
public void testValidation() throws Exception
{
try (CommandController controller = testHarness.createCommandController(ValidationJDK8Command.class))
{
controller.initialize();
controller.setValueFor("name", "Foo");
Assert.assertFalse("Controller should not be valid", controller.isValid());
List<UIMessage> messages = controller.validate();
Assert.assertEquals("An error should have been captured", 1, messages.size());
Assert.assertEquals("My Error Message", messages.get(0).getDescription());
}
}
}

0 comments on commit e40ee40

Please sign in to comment.