diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java index f95f7c56f4..d59a6be197 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java @@ -320,6 +320,11 @@ public abstract class DruidDataAbstractSource implements DataSource, DataSourceP public void setPasswordCallback(PasswordCallback passwordCallback) { this.passwordCallback = passwordCallback; } + + public void setPasswordCallback(String passwordCallbackClassName) throws Exception { + Class clazz = Thread.currentThread().getContextClassLoader().loadClass(passwordCallbackClassName); + this.passwordCallback = (PasswordCallback) clazz.newInstance(); + } public NameCallback getUserCallback() { return userCallback; diff --git a/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java b/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java new file mode 100644 index 0000000000..1e51b1c907 --- /dev/null +++ b/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java @@ -0,0 +1,13 @@ +package com.alibaba.druid.bvt.pool; + +import junit.framework.TestCase; + +import com.alibaba.druid.pool.DruidDataSource; + +public class PasswordCallbackTest extends TestCase { + public void test_0 () throws Exception { + DruidDataSource dataSource = new DruidDataSource(); + dataSource.setUrl("jdbc:mock:"); + dataSource.setPasswordCallback(passwordCallback) + } +}