Merge branch 'gh-4082'

This commit is contained in:
Andy Wilkinson 2015-10-06 09:58:06 +01:00
commit 45cad3c3b7
1 changed files with 17 additions and 2 deletions

View File

@ -39,6 +39,7 @@ import org.springframework.util.StringUtils;
* @author Dave Syer * @author Dave Syer
* @author Maciej Walkowiak * @author Maciej Walkowiak
* @author Stephane Nicoll * @author Stephane Nicoll
* @author Benedikt Ritter
* @since 1.1.0 * @since 1.1.0
*/ */
@ConfigurationProperties(prefix = DataSourceProperties.PREFIX) @ConfigurationProperties(prefix = DataSourceProperties.PREFIX)
@ -161,8 +162,8 @@ public class DataSourceProperties implements BeanClassLoaderAware, EnvironmentAw
public String getDriverClassName() { public String getDriverClassName() {
if (StringUtils.hasText(this.driverClassName)) { if (StringUtils.hasText(this.driverClassName)) {
Assert.state(ClassUtils.isPresent(this.driverClassName, null), Assert.state(driverClassIsLoadable(), "Cannot load driver class: "
"Cannot load driver class: " + this.driverClassName); + this.driverClassName);
return this.driverClassName; return this.driverClassName;
} }
String driverClassName = null; String driverClassName = null;
@ -182,6 +183,20 @@ public class DataSourceProperties implements BeanClassLoaderAware, EnvironmentAw
return driverClassName; return driverClassName;
} }
private boolean driverClassIsLoadable() {
try {
ClassUtils.forName(this.driverClassName, null);
return true;
}
catch (UnsupportedClassVersionError ex) {
// Driver library has been compiled with a later JDK, propagate error
throw ex;
}
catch (Throwable ex) {
return false;
}
}
public void setDriverClassName(String driverClassName) { public void setDriverClassName(String driverClassName) {
this.driverClassName = driverClassName; this.driverClassName = driverClassName;
} }