Author: tchemit Date: 2011-01-25 14:07:59 +0100 (Tue, 25 Jan 2011) New Revision: 2049 Url: http://nuiton.org/repositories/revision/nuiton-utils/2049 Log: add a way to change the implementation of beanValidator Modified: trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidator.java trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidatorFactory.java trunk/nuiton-validator/src/main/java/org/nuiton/validator/xwork2/XWork2NuitonValidatorProvider.java Modified: trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidator.java =================================================================== --- trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidator.java 2011-01-25 11:35:33 UTC (rev 2048) +++ trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidator.java 2011-01-25 13:07:59 UTC (rev 2049) @@ -800,6 +800,7 @@ } } + // now deal with mixte field (toAdd and toDelete) for (String field : newFields) { List<String> newMessagesForScope = newMessages.getMessagesForScope(field, scope); @@ -821,8 +822,6 @@ )); } - - } } Modified: trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidatorFactory.java =================================================================== --- trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidatorFactory.java 2011-01-25 11:35:33 UTC (rev 2048) +++ trunk/nuiton-validator/src/main/java/org/nuiton/validator/bean/BeanValidatorFactory.java 2011-01-25 13:07:59 UTC (rev 2049) @@ -24,6 +24,8 @@ */ package org.nuiton.validator.bean; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidator; import org.nuiton.validator.NuitonValidatorFactory; import org.nuiton.validator.NuitonValidatorProvider; @@ -31,19 +33,50 @@ /** * Factory of {@link BeanValidator}. - * + * <p/> * To obtain a new {@link BeanValidator}, use one of the method - * + * <p/> * <pre> * BeanValidatorFactory.newBeanValidator(XXX) * </pre> * * @author tchemit <chemit@codelutin.com> + * @see BeanValidator * @since 2.0 - * @see BeanValidator */ public class BeanValidatorFactory { + + /** Logger. */ + static private final Log log = + LogFactory.getLog(BeanValidatorFactory.class); + + + protected static BeanValidatorCreator creator; + + public static BeanValidatorCreator getCreator() { + if (creator == null) { + creator = new DefaultBeanValidatorCreator(); + if (log.isInfoEnabled()) { + log.info("Will use default beanValidator creator : " + creator); + } + + } + return creator; + } + + public static void setCreator(BeanValidatorCreator creator) { + BeanValidatorFactory.creator = creator; + if (log.isInfoEnabled()) { + log.info("Will use injected beanValidator creator : " + creator); + } + } + + public static boolean isDefaultCreator() { + return creator == null || + creator.getClass().equals(DefaultBeanValidatorCreator.class); + } + /** * Obtain a new {@link BeanValidator} for the given parameters. * <p/> @@ -72,10 +105,8 @@ scopes ); return beanValidator; - } - /** * Obtain a new {@link BeanValidator} for the given parameters. * <p/> @@ -103,12 +134,43 @@ NuitonValidatorProvider provider = NuitonValidatorFactory.getProvider(providerName); - BeanValidator<O> beanValidator = new BeanValidator<O>(provider, - type, - context, - scopes - ); + BeanValidator<O> beanValidator = + getCreator().newBeanValidator(provider, type, context, scopes); + return beanValidator; + } + /** + * Contract to create a {@link BeanValidator}. + * + * @since 2.0 + */ + public interface BeanValidatorCreator { + + <O> BeanValidator<O> newBeanValidator( + NuitonValidatorProvider provider, + Class<O> type, + String context, + NuitonValidatorScope... scopes + + ); } + + /** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since TODO + */ + public static class DefaultBeanValidatorCreator implements BeanValidatorCreator { + @Override + public <O> BeanValidator<O> newBeanValidator(NuitonValidatorProvider provider, Class<O> type, String context, NuitonValidatorScope... scopes) { + BeanValidator<O> beanValidator = new BeanValidator<O>(provider, + type, + context, + scopes + ); + return beanValidator; + } + } } Modified: trunk/nuiton-validator/src/main/java/org/nuiton/validator/xwork2/XWork2NuitonValidatorProvider.java =================================================================== --- trunk/nuiton-validator/src/main/java/org/nuiton/validator/xwork2/XWork2NuitonValidatorProvider.java 2011-01-25 11:35:33 UTC (rev 2048) +++ trunk/nuiton-validator/src/main/java/org/nuiton/validator/xwork2/XWork2NuitonValidatorProvider.java 2011-01-25 13:07:59 UTC (rev 2049) @@ -55,7 +55,6 @@ public static final String PROVIDER_NAME = "xwork2"; - /** Logger. */ static private final Log log = LogFactory.getLog(XWork2NuitonValidatorProvider.class);