package ch.sla.jdbcperflogger.spring; import org.springframework.beans.BeansException; import org.springframework.beans.FatalBeanException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.core.Ordered; import ch.sla.jdbcperflogger.driver.WrappingDriver; public abstract class AbstractDataSourcePostProcessor implements BeanPostProcessor, Ordered { protected static final String JDBC_URL_PREFIX = "jdbcperflogger:"; @Override public int getOrder() { return Ordered.HIGHEST_PRECEDENCE; } protected void checkUnderlyingDriverIsVisible(final String driverClassName) { try { Class.forName(driverClassName, true, WrappingDriver.class.getClassLoader()); } catch (final ClassNotFoundException e) { throw new FatalBeanException("The JDBC driver class " + driverClassName + " must be visible by the JDBC-perf-logger driver. Check your classpath"); } } protected void checkVisibleFromDataSource(final Class<?> dataSourceClass) { try { Class.forName(WrappingDriver.class.getName(), true, dataSourceClass.getClassLoader()); } catch (final ClassNotFoundException e) { throw new FatalBeanException("The JDBC-perf-logger driver class must be available to your dataSource class " + dataSourceClass + ". Check your classpath"); } } @Override public Object postProcessAfterInitialization(final Object bean, final String beanName) throws BeansException { return bean; } }