1 package de.juplo.plugins.hibernate4;
3 import java.lang.reflect.Method;
4 import java.util.Collection;
5 import java.util.Properties;
6 import org.hibernate.cfg.Configuration;
7 import org.hibernate.dialect.Dialect;
8 import org.hibernate.metamodel.source.MappingException;
12 * This integration is usually performed by BeanValidationIntegrator.
13 * Unfortunately, that integration will only be activated upon
14 * initialization of the ServiceRegistry, which initializes
15 * DatasourceConnectionProviderImpl, which looks up the datasource,
16 * which requires a JNDI context ...
17 * We therefore reimplement the relevant parts of BeanValidatorIntegrator.
18 * Since that must occur after secondPassCompile(), which is invoked by
19 * Configuration.generateSchemaCreationScript, which is invoked by
20 * SchemaExport, some fancy subclassing is needed to invoke the integration
22 * @author Mark Robinson <mark@mrobinson.ca>
24 public class ValidationConfiguration extends Configuration
28 public ValidationConfiguration(String dialectClass)
30 ClassNotFoundException
32 this.dialectClass = Class.forName(dialectClass);
36 protected void secondPassCompile() throws MappingException
38 super.secondPassCompile();
42 /** Thank you, hibernate folks, for making this useful class package private ... */
45 .forName("org.hibernate.cfg.beanvalidation.TypeSafeActivator")
47 "applyRelationalConstraints",
52 applyDDL.setAccessible(true);
57 dialectClass.newInstance()
62 throw new RuntimeException(e);