/*
* Hibernate Validator, declare and validate application constraints
*
* License: Apache License, Version 2.0
* See the license.txt file in the root directory or <http://www.apache.org/licenses/LICENSE-2.0>.
*/
package org.hibernate.validator.test.internal.xml;
import java.util.List;
import java.util.Set;
import javax.validation.Configuration;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import javax.validation.metadata.BeanDescriptor;
import javax.validation.metadata.MethodDescriptor;
import javax.validation.metadata.MethodType;
import javax.validation.metadata.ParameterDescriptor;
import org.hibernate.validator.testutils.ValidatorUtil;
import org.testng.annotations.Test;
import static org.testng.Assert.assertTrue;
/**
* Test that arrays and varargs can be specified in XML with and without default package
*
* @author Hardy Ferentschik
*/
public class DefaultPackageInVarargParameterTest {
Validator validator;
@Test
public void testArrayParametersAreConfigurableWithAndWithoutDefaultPackage() {
Configuration<?> configuration = ValidatorUtil.getConfiguration();
configuration.addMapping(
DefaultPackageInVarargParameterTest.class.getResourceAsStream(
"array-and-vararg-parameter-mapping.xml"
)
);
ValidatorFactory validatorFactory = configuration.buildValidatorFactory();
validator = validatorFactory.getValidator();
BeanDescriptor beanDescriptor = validator.getConstraintsForClass( Foo.class );
Set<MethodDescriptor> methodDescriptors = beanDescriptor.getConstrainedMethods( MethodType.NON_GETTER );
assertTrue( methodDescriptors.size() == 2, "There should be two constrained methods" );
for ( MethodDescriptor methodDescriptor : methodDescriptors ) {
assertTrue( methodDescriptor.hasConstrainedParameters(), "Parameter should be constrained" );
List<ParameterDescriptor> parameterDescriptorList = methodDescriptor.getParameterDescriptors();
for ( ParameterDescriptor parameterDescriptor : parameterDescriptorList ) {
assertTrue( parameterDescriptor.isCascaded(), "Parameter should be constrained" );
}
}
}
public static class Foo {
public void fubar(Bar[] barArray) {
}
public void snafu(Bar... barVarArg) {
}
}
public static class Bar {
}
}