From fc04aea1d51c6f3f8c21ece822a8305aab248a26 Mon Sep 17 00:00:00 2001 From: wenshao Date: Sat, 14 May 2011 16:15:28 +0000 Subject: [PATCH] git-svn-id: http://code.alibabatech.com/svn/druid/trunk@86 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/pool/DruidDataAbstractSource.java | 7 ++++- .../druid/bvt/pool/PasswordCallbackTest.java | 26 ++++++++++++++++++- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java index d59a6be197..81a03ed1f3 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java @@ -640,7 +640,12 @@ public abstract class DruidDataAbstractSource implements DataSource, DataSourceP String password; if (dataSource.getPasswordCallback() != null) { - password = new String(dataSource.getPasswordCallback().getPassword()); + char[] chars = dataSource.getPasswordCallback().getPassword(); + if (chars != null) { + password = new String(chars); + } else { + password = null; + } } else { password = dataSource.getPassword(); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java b/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java index 1e51b1c907..134585334a 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/PasswordCallbackTest.java @@ -1,13 +1,37 @@ package com.alibaba.druid.bvt.pool; +import java.sql.Connection; + +import javax.security.auth.callback.PasswordCallback; + 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) + dataSource.setPasswordCallback(new TestPasswordCallback()); + + Connection conn = dataSource.getConnection(); + conn.close(); + } + + public static class TestPasswordCallback extends PasswordCallback { + public TestPasswordCallback() { + super ("test", false); + } + + public TestPasswordCallback(String prompt, boolean echoOn){ + super(prompt, echoOn); + } + + /** + * + */ + private static final long serialVersionUID = 1L; + } }