| /* | |
| * Copyright 2010 Google Inc. | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not | |
| * use this file except in compliance with the License. You may obtain a copy of | |
| * the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | |
| * License for the specific language governing permissions and limitations under | |
| * the License. | |
| */ | |
| package com.google.gwt.validation.client.impl; | |
| import com.google.gwt.validation.client.AbstractGwtValidatorFactory; | |
| import com.google.gwt.validation.client.GwtConstraintValidatorFactory; | |
| import com.google.gwt.validation.client.GwtMessageInterpolator; | |
| import com.google.gwt.validation.client.DefaultTraversableResolver; | |
| import com.google.gwt.validation.client.ValidationClientGwtTestCase; | |
| import java.util.Set; | |
| import javax.validation.ConstraintValidatorFactory; | |
| import javax.validation.ConstraintViolation; | |
| import javax.validation.MessageInterpolator; | |
| import javax.validation.TraversableResolver; | |
| import javax.validation.ValidationException; | |
| import javax.validation.ValidatorContext; | |
| import javax.validation.ValidatorFactory; | |
| import javax.validation.metadata.BeanDescriptor; | |
| /** | |
| * Tests for {@link GwtValidatorContext}. | |
| */ | |
| public class GwtValidatorContextTest extends ValidationClientGwtTestCase { | |
| private final class DummyGwtValidatorFactory extends | |
| AbstractGwtValidatorFactory { | |
| @Override | |
| public AbstractGwtValidator createValidator() { | |
| return new DummyValidator(); | |
| } | |
| } | |
| private static class DummyValidator extends AbstractGwtValidator { | |
| @Override | |
| public BeanDescriptor getConstraintsForClass(Class<?> clazz) { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @Override | |
| public <T> Set<ConstraintViolation<T>> validate( | |
| GwtValidationContext<T> context, Object object, Class<?>... groups) | |
| throws ValidationException { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @Override | |
| public <T> Set<ConstraintViolation<T>> validate(T object, | |
| Class<?>... groups) { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @Override | |
| public <T> Set<ConstraintViolation<T>> validateProperty(T object, | |
| String propertyName, Class<?>... groups) { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @Override | |
| public <T> Set<ConstraintViolation<T>> validateValue(Class<T> beanType, | |
| String propertyName, Object value, Class<?>... groups) { | |
| throw new UnsupportedOperationException(); | |
| } | |
| @Override | |
| protected ConstraintValidatorFactory getConstraintValidatorFactory() { | |
| return super.getConstraintValidatorFactory(); | |
| } | |
| @Override | |
| protected MessageInterpolator getMessageInterpolator() { | |
| return super.getMessageInterpolator(); | |
| } | |
| @Override | |
| protected TraversableResolver getTraversableResolver() { | |
| return super.getTraversableResolver(); | |
| } | |
| } | |
| private ValidatorFactory validatorFactory; | |
| private ValidatorContext validatorContext; | |
| public void testCustom() throws Exception { | |
| final TraversableResolver traversableResolver = new DefaultTraversableResolver(); | |
| final ConstraintValidatorFactory constraintValidatorFactory = new GwtConstraintValidatorFactory(); | |
| final MessageInterpolator messageInterpolator = new GwtMessageInterpolator(); | |
| validatorContext.constraintValidatorFactory(constraintValidatorFactory) | |
| .messageInterpolator(messageInterpolator) | |
| .traversableResolver(traversableResolver); | |
| assertContext(traversableResolver, constraintValidatorFactory, | |
| messageInterpolator); | |
| } | |
| public void testDefault() throws Exception { | |
| assertContext(validatorFactory.getTraversableResolver(), // | |
| validatorFactory.getConstraintValidatorFactory(), // | |
| validatorFactory.getMessageInterpolator()); | |
| } | |
| public void testNull() throws Exception { | |
| validatorContext.constraintValidatorFactory(null) // | |
| .messageInterpolator(null) // | |
| .traversableResolver(null); | |
| assertContext(validatorFactory.getTraversableResolver(), // | |
| validatorFactory.getConstraintValidatorFactory(), // | |
| validatorFactory.getMessageInterpolator()); | |
| } | |
| public void testReset() throws Exception { | |
| final TraversableResolver traversableResolver = new DefaultTraversableResolver(); | |
| final ConstraintValidatorFactory constraintValidatorFactory = new GwtConstraintValidatorFactory(); | |
| final MessageInterpolator messageInterpolator = new GwtMessageInterpolator(); | |
| validatorContext.constraintValidatorFactory(constraintValidatorFactory) | |
| .messageInterpolator(messageInterpolator) | |
| .traversableResolver(traversableResolver); | |
| validatorContext.constraintValidatorFactory(null) // | |
| .messageInterpolator(null) // | |
| .traversableResolver(null); | |
| assertContext(validatorFactory.getTraversableResolver(), // | |
| validatorFactory.getConstraintValidatorFactory(), // | |
| validatorFactory.getMessageInterpolator()); | |
| } | |
| @Override | |
| protected void gwtSetUp() throws Exception { | |
| super.gwtSetUp(); | |
| validatorFactory = new DummyGwtValidatorFactory(); | |
| validatorContext = validatorFactory.usingContext(); | |
| } | |
| private void assertContext(final TraversableResolver traversableResolver, | |
| final ConstraintValidatorFactory constraintValidatorFactory, | |
| final MessageInterpolator messageInterpolator) { | |
| final DummyValidator validator = getDummyValidatorFromContext(); | |
| assertSame(messageInterpolator, validator.getMessageInterpolator()); | |
| assertSame(constraintValidatorFactory, | |
| validator.getConstraintValidatorFactory()); | |
| assertSame(traversableResolver, validator.getTraversableResolver()); | |
| } | |
| private DummyValidator getDummyValidatorFromContext() { | |
| return ((DummyValidator) validatorContext.getValidator()); | |
| } | |
| } |