package org.atteo.moonshine.hibernate; import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorFactory; import com.google.inject.Inject; import com.google.inject.Injector; public class GuiceConstraintValidatorFactory implements ConstraintValidatorFactory { private final Injector injector; private ConstraintValidatorFactory defaultFactory; @Inject public GuiceConstraintValidatorFactory(final Injector injector) { this.injector = injector; } public void setDefaultFactory(ConstraintValidatorFactory defaultFactory) { this.defaultFactory = defaultFactory; } @Override public <T extends ConstraintValidator<?, ?>> T getInstance(Class<T> key) { T validator = defaultFactory.getInstance(key); injector.injectMembers(validator); return validator; } @Override public void releaseInstance(ConstraintValidator<?, ?> cv) { } }