/** * */ package org.wicketstuff.jsr303; import de.flower.common.annotation.Patched; import javax.annotation.PostConstruct; import javax.validation.*; /** * Patched version to use cached validator factory instead of re-creating validator factory for every #getValidator call. * * @author flowerrrr */ @Patched public class JSR303ValidationFactory { private ValidatorFactory validatorFactory; private ViolationMessageRenderer violationMessageRenderer; public Validator getValidator() { return validatorFactory.getValidator(); } public ViolationMessageRenderer getViolationMessageRenderer() { return violationMessageRenderer; } @PostConstruct public void init() { final Configuration<?> configuration = Validation.byDefaultProvider().configure(); // FIXME seems like needed for hib-val 4.0.2.? strange enough it does // not respect the locale passed on interpolate call. Working on it. // geez. they screwed it up. // http://opensource.atlassian.com/projects/hibernate/browse/HV-306 // fixed in 4.1.0.beta2 ... Locale.setDefault(Session.get().getLocale()); MessageInterpolator targetInterpolator = configuration.getDefaultMessageInterpolator(); configuration.messageInterpolator(new WicketSessionLocaleMessageInterpolator(targetInterpolator)); if (violationMessageRenderer == null) { violationMessageRenderer = new DefaultViolationMessageRenderer(); } validatorFactory = configuration.buildValidatorFactory(); } }