Author: tchemit Date: 2011-01-25 14:09:59 +0100 (Tue, 25 Jan 2011) New Revision: 2165 Url: http://nuiton.org/repositories/revision/jaxx/2165 Log: use the BeanValidatorFactory Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/ValidatorFinalizer.java trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java trunk/jaxx-validator/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/ValidatorFinalizer.java =================================================================== --- trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/ValidatorFinalizer.java 2011-01-25 12:03:38 UTC (rev 2164) +++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/finalizers/ValidatorFinalizer.java 2011-01-25 13:09:59 UTC (rev 2165) @@ -126,7 +126,7 @@ for (CompiledBeanValidator validator : validators) { validator.registerValidator(compiler, javaFile); } - + // StringBuilder registerValidatorFieldsMethod = new StringBuilder(); // registerValidatorFieldsMethod.append(SwingValidatorUtil.class.getSimpleName()).append(".installFields(this);"); Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java =================================================================== --- trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java 2011-01-25 12:03:38 UTC (rev 2164) +++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/validator/BeanValidatorHandler.java 2011-01-25 13:09:59 UTC (rev 2165) @@ -748,8 +748,13 @@ String beanClassName = beanInfo.getJAXXBeanDescriptor().getClassDescriptor().getName(); // contextName must be in constructor to able to init validator with his correct contextName - setConstructorParams(beanClassName + ".class, " + - TypeManager.getJavaCode(contextName)); + String constructorParams = beanClassName + ".class, " + + TypeManager.getJavaCode(contextName); +// setConstructorParams(constructorParams); + setInitializer( + SwingValidatorUtil.class.getSimpleName() + ".newValidator(" + constructorParams + ")" + ); + // add generic type to validator setGenericTypes(new String[]{beanClassName}); Modified: trunk/jaxx-validator/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java =================================================================== --- trunk/jaxx-validator/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java 2011-01-25 12:03:38 UTC (rev 2164) +++ trunk/jaxx-validator/src/main/java/jaxx/runtime/validator/swing/SwingValidatorUtil.java 2011-01-25 13:09:59 UTC (rev 2165) @@ -31,7 +31,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ReflectUtil; +import org.nuiton.validator.NuitonValidatorProvider; import org.nuiton.validator.NuitonValidatorScope; +import org.nuiton.validator.bean.BeanValidator; +import org.nuiton.validator.bean.BeanValidatorFactory; import org.nuiton.validator.bean.BeanValidatorUtil; import javax.swing.ImageIcon; @@ -55,7 +58,7 @@ import static org.nuiton.i18n.I18n.n_; /** - * The helper class for validation module. + * The helper class for swing validation module. * * @author tchemit <chemit@codelutin.com> */ @@ -120,6 +123,18 @@ // no instance } + public static <O> SwingValidator<O> newValidator(Class<O> type, String context) { + + if (BeanValidatorFactory.isDefaultCreator()) { + + // set the swing bean validator creator + BeanValidatorFactory.setCreator(new DefaultSwingValidatorCreator()); + } + SwingValidator<O> validator = + (SwingValidator<O>) BeanValidatorFactory.newBeanValidator(type, context); + return validator; + } + public static List<String> initUI(JAXXValidator ui) { List<String> validatorIds = new ArrayList<String>(); Map<Field, Validator> validators = ReflectUtil.getFieldAnnotation( @@ -191,8 +206,6 @@ // reload attached bean (to see validation on uis) validator.reloadBean(); } - - } /** @@ -336,7 +349,10 @@ * @param ui ui to refresh when context name has changed * @since 2.2.1 */ - public static void listenValidatorContextNameAndRefreshFields(SwingValidator<?> validator, final JAXXValidator ui) { + public static void listenValidatorContextNameAndRefreshFields( + SwingValidator<?> validator, + final JAXXValidator ui) { + PropertyChangeListener listener = new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -353,4 +369,22 @@ listener ); } + + /** + * Default bean validator creator to use in the {@link BeanValidatorFactory}. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.1 + */ + public static class DefaultSwingValidatorCreator implements BeanValidatorFactory.BeanValidatorCreator { + @Override + public <O> BeanValidator<O> newBeanValidator(NuitonValidatorProvider provider, Class<O> type, String context, NuitonValidatorScope... scopes) { + BeanValidator<O> beanValidator = new SwingValidator<O>(provider, + type, + context, + scopes + ); + return beanValidator; + } + } }