diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java index 64cd30e973..51b9f66cf3 100644 --- a/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java +++ b/src/main/java/com/alibaba/druid/filter/config/ConfigFilter.java @@ -16,15 +16,17 @@ package com.alibaba.druid.filter.config; import com.alibaba.druid.filter.FilterAdapter; +import com.alibaba.druid.filter.config.loader.ConfigLoader; +import com.alibaba.druid.filter.config.loader.ConfigLoaderFactory; import com.alibaba.druid.pool.DruidDataSource; import com.alibaba.druid.pool.DruidDataSourceFactory; import com.alibaba.druid.proxy.jdbc.DataSourceProxy; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; -import com.alibaba.druid.support.security.decryptor.DecryptException; -import com.alibaba.druid.support.security.decryptor.Decrypter; -import com.alibaba.druid.support.security.decryptor.DecrypterFactory; -import com.alibaba.druid.support.security.decryptor.SensitiveParameters; +import com.alibaba.druid.filter.config.security.decrypter.DecryptException; +import com.alibaba.druid.filter.config.security.decrypter.Decrypter; +import com.alibaba.druid.filter.config.security.decrypter.DecrypterFactory; +import com.alibaba.druid.filter.config.security.decrypter.SensitiveParameters; import java.sql.SQLException; import java.util.Properties; @@ -76,10 +78,6 @@ import java.util.Properties; * #远程文件路径 * config.file=http://xxxxx(http://开头或者file:开头) * - * #AES解密, key不指定, 使用默认的 - * config.decrypt=AES - * config.decrypt.key=abcdfeg - * * #RSA解密, Key不指定, 使用默认的 * config.decrypt=RSA * config.decrypt.key=密钥字符串 diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigLoader.java b/src/main/java/com/alibaba/druid/filter/config/ConfigLoader.java deleted file mode 100644 index 118075a077..0000000000 --- a/src/main/java/com/alibaba/druid/filter/config/ConfigLoader.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.alibaba.druid.filter.config; - -import java.util.Properties; - -/** - *
- * 配置文件装载器.
- *
- * 要实现自己的装载器有如下要求.
- * 1. 一定要有自己的协议格式, 例如是由 my-protocol: 开头的protocol是由我支持的.
- * public isSupported(String protocol) {
- * return protocol.startsWith("my-protocol:");
- * }
- *
- * 2. 要在class path的根目录下的ConfigLoader.properties注册(如果没有这个文件, 可以自己创建一个). 例如:
- * WEB-INF/classes/ConfigLoader.properties [格式如下]:
- * ConfigLoader.myConfigLoader=com.xxx.xxx.xx.MyConfigLoader
- *
- * 3. 配置DruidDataSource的时候的URL就要设置为装载器的协议格式
- * DruidDataSource dataSource = new DruidDataSource();
- * dataSource.setUrl("my-protocol:http://xxxxxx/");
- *
- *
- * @see com.alibaba.druid.filter.config.impl.FileConfigLoader
- * @see com.alibaba.druid.filter.config.impl.HttpConfigLoader
- *
- * @author Jonas Yang
- */
-public interface ConfigLoader {
-
- /**
- * 唯一的ID
- * @return
- */
- public String getId();
-
- /**
- * 获得配置内容, 如果没有, 返回null.
- * @param protocol
- * @return
- */
- public Properties loadConfig(String protocol);
-
- /**
- * 是否支持该协议, 如果支持, 将会使用该装载器获取配置文件
- * @param protocol
- * @return
- */
- public boolean isSupported(String protocol);
-}
diff --git a/src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoader.java b/src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoader.java
new file mode 100644
index 0000000000..bcdf6119e6
--- /dev/null
+++ b/src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoader.java
@@ -0,0 +1,36 @@
+package com.alibaba.druid.filter.config.loader;
+
+import java.util.Properties;
+
+/**
+ * + * 配置文件装载器. + *+ * + * @see com.alibaba.druid.filter.config.ConfigFilter + * @see ConfigLoaderFactory + * + * @author Jonas Yang + */ +public interface ConfigLoader { + + /** + * 唯一的ID + * @return + */ + public String getId(); + + /** + * 获得配置内容, 如果没有, 返回
null.
+ * @param protocol
+ * @return
+ */
+ public Properties loadConfig(String protocol);
+
+ /**
+ * 是否支持该协议, 如果支持, 将会使用该装载器获取配置文件
+ * @param protocol
+ * @return
+ */
+ public boolean isSupported(String protocol);
+}
diff --git a/src/main/java/com/alibaba/druid/filter/config/ConfigLoaderFactory.java b/src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactory.java
similarity index 95%
rename from src/main/java/com/alibaba/druid/filter/config/ConfigLoaderFactory.java
rename to src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactory.java
index a8f8a2ff60..6cf5c2a0f9 100644
--- a/src/main/java/com/alibaba/druid/filter/config/ConfigLoaderFactory.java
+++ b/src/main/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactory.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.filter.config;
+package com.alibaba.druid.filter.config.loader;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;
@@ -11,9 +11,9 @@ import java.util.concurrent.ConcurrentHashMap;
/**
* * 如果有扩展的装载器. - * 可以放到classes目录下的ConfigLoader.properties + * 可以放到classes目录下的druid-config-loader.properties * - * ConfigLoader.properties 内容如下: + * druid-config-loader.properties 内容如下: * ConfigLoader.x=com.xx.xxx.xx.MyConfigLoader * *diff --git a/src/main/java/com/alibaba/druid/filter/config/impl/FileConfigLoader.java b/src/main/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoader.java similarity index 96% rename from src/main/java/com/alibaba/druid/filter/config/impl/FileConfigLoader.java rename to src/main/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoader.java index f08486f217..6a03eeba58 100644 --- a/src/main/java/com/alibaba/druid/filter/config/impl/FileConfigLoader.java +++ b/src/main/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoader.java @@ -1,6 +1,6 @@ -package com.alibaba.druid.filter.config.impl; +package com.alibaba.druid.filter.config.loader.impl; -import com.alibaba.druid.filter.config.ConfigLoader; +import com.alibaba.druid.filter.config.loader.ConfigLoader; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.alibaba.druid.util.JdbcUtils; diff --git a/src/main/java/com/alibaba/druid/filter/config/impl/HttpConfigLoader.java b/src/main/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoader.java similarity index 95% rename from src/main/java/com/alibaba/druid/filter/config/impl/HttpConfigLoader.java rename to src/main/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoader.java index 9e47e38a02..5eeb45edb4 100644 --- a/src/main/java/com/alibaba/druid/filter/config/impl/HttpConfigLoader.java +++ b/src/main/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoader.java @@ -1,6 +1,6 @@ -package com.alibaba.druid.filter.config.impl; +package com.alibaba.druid.filter.config.loader.impl; -import com.alibaba.druid.filter.config.ConfigLoader; +import com.alibaba.druid.filter.config.loader.ConfigLoader; import com.alibaba.druid.support.logging.Log; import com.alibaba.druid.support.logging.LogFactory; import com.alibaba.druid.util.JdbcUtils; diff --git a/src/main/java/com/alibaba/druid/support/security/decryptor/AbstractDecrypter.java b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/AbstractDecrypter.java similarity index 72% rename from src/main/java/com/alibaba/druid/support/security/decryptor/AbstractDecrypter.java rename to src/main/java/com/alibaba/druid/filter/config/security/decrypter/AbstractDecrypter.java index 0f4e47d0b4..a58c94ceaa 100644 --- a/src/main/java/com/alibaba/druid/support/security/decryptor/AbstractDecrypter.java +++ b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/AbstractDecrypter.java @@ -1,9 +1,8 @@ -package com.alibaba.druid.support.security.decryptor; +package com.alibaba.druid.filter.config.security.decrypter; import com.alibaba.druid.util.Base64; import javax.crypto.Cipher; -import java.util.Properties; /** * 加密抽象类 @@ -12,11 +11,6 @@ import java.util.Properties; */ public abstract class AbstractDecrypter implements Decrypter { - /** - * DES, AES 密钥都有长度限制, 如果不够, 默认使用该字段补长 - */ - public static final String KEY_PADDING = "FOLLOW YOUR HEART. YOU CAN DO BEST THAN ANY ONE."; - public final static String KEY = "config.decrypt.key"; /** diff --git a/src/main/java/com/alibaba/druid/support/security/decryptor/DecryptException.java b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/DecryptException.java similarity index 87% rename from src/main/java/com/alibaba/druid/support/security/decryptor/DecryptException.java rename to src/main/java/com/alibaba/druid/filter/config/security/decrypter/DecryptException.java index 6bed53ee1f..450450b137 100644 --- a/src/main/java/com/alibaba/druid/support/security/decryptor/DecryptException.java +++ b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/DecryptException.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.support.security.decryptor; +package com.alibaba.druid.filter.config.security.decrypter; /** * 加密出错 diff --git a/src/main/java/com/alibaba/druid/support/security/decryptor/Decrypter.java b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/Decrypter.java similarity index 87% rename from src/main/java/com/alibaba/druid/support/security/decryptor/Decrypter.java rename to src/main/java/com/alibaba/druid/filter/config/security/decrypter/Decrypter.java index eba5ad061c..a922806f0c 100644 --- a/src/main/java/com/alibaba/druid/support/security/decryptor/Decrypter.java +++ b/src/main/java/com/alibaba/druid/filter/config/security/decrypter/Decrypter.java @@ -1,4 +1,4 @@ -package com.alibaba.druid.support.security.decryptor; +package com.alibaba.druid.filter.config.security.decrypter; import java.util.Properties; @@ -26,10 +26,10 @@ import java.util.Properties; * * *
diff --git a/src/main/java/com/alibaba/druid/filter/config/security/tool/Action.java b/src/main/java/com/alibaba/druid/filter/config/security/tool/Action.java
new file mode 100644
index 0000000000..c774c56592
--- /dev/null
+++ b/src/main/java/com/alibaba/druid/filter/config/security/tool/Action.java
@@ -0,0 +1,11 @@
+package com.alibaba.druid.filter.config.security.tool;
+
+/**
+ * @author Jonas Yang
+ */
+public interface Action {
+
+ public String getId();
+
+ public void execute();
+}
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/HelpAction.java b/src/main/java/com/alibaba/druid/filter/config/security/tool/HelpAction.java
similarity index 95%
rename from src/main/java/com/alibaba/druid/support/security/tool/HelpAction.java
rename to src/main/java/com/alibaba/druid/filter/config/security/tool/HelpAction.java
index ea532c944d..6d589401ef 100644
--- a/src/main/java/com/alibaba/druid/support/security/tool/HelpAction.java
+++ b/src/main/java/com/alibaba/druid/filter/config/security/tool/HelpAction.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.support.security.tool;
+package com.alibaba.druid.filter.config.security.tool;
import java.util.ArrayList;
import java.util.List;
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/Main.java b/src/main/java/com/alibaba/druid/filter/config/security/tool/Main.java
similarity index 87%
rename from src/main/java/com/alibaba/druid/support/security/tool/Main.java
rename to src/main/java/com/alibaba/druid/filter/config/security/tool/Main.java
index 65ecafe701..7222ddb31f 100644
--- a/src/main/java/com/alibaba/druid/support/security/tool/Main.java
+++ b/src/main/java/com/alibaba/druid/filter/config/security/tool/Main.java
@@ -1,10 +1,10 @@
-package com.alibaba.druid.support.security.tool;
+package com.alibaba.druid.filter.config.security.tool;
/**
*
* Druid 提供的加密工具. 如下运行
*
- * java -cp druid-x.x.x.jar com.alibaba.druid.support.security.tool.Main
+ * java -cp druid-x.x.x.jar com.alibaba.druid.filter.config.security.tool.Main
*
*
* @author Jonas Yang
@@ -17,7 +17,6 @@ public class Main {
static {
int i = 1;
help.addAction(Integer.toString(i++), new RsaAction());
- help.addAction(Integer.toString(i++), new AesAction());
help.addAction("h", help);
help.addAction("q", new QuitAction());
}
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/QuitAction.java b/src/main/java/com/alibaba/druid/filter/config/security/tool/QuitAction.java
similarity index 91%
rename from src/main/java/com/alibaba/druid/support/security/tool/QuitAction.java
rename to src/main/java/com/alibaba/druid/filter/config/security/tool/QuitAction.java
index ec27d72b50..58ab06317f 100644
--- a/src/main/java/com/alibaba/druid/support/security/tool/QuitAction.java
+++ b/src/main/java/com/alibaba/druid/filter/config/security/tool/QuitAction.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.support.security.tool;
+package com.alibaba.druid.filter.config.security.tool;
/**
* @author Jonas Yang
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/RsaAction.java b/src/main/java/com/alibaba/druid/filter/config/security/tool/RsaAction.java
similarity index 99%
rename from src/main/java/com/alibaba/druid/support/security/tool/RsaAction.java
rename to src/main/java/com/alibaba/druid/filter/config/security/tool/RsaAction.java
index fbab2e9050..2978aae159 100644
--- a/src/main/java/com/alibaba/druid/support/security/tool/RsaAction.java
+++ b/src/main/java/com/alibaba/druid/filter/config/security/tool/RsaAction.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.support.security.tool;
+package com.alibaba.druid.filter.config.security.tool;
import com.alibaba.druid.util.Base64;
diff --git a/src/main/java/com/alibaba/druid/support/security/decryptor/AesDecrypter.java b/src/main/java/com/alibaba/druid/support/security/decryptor/AesDecrypter.java
deleted file mode 100644
index ba0c9ff8a5..0000000000
--- a/src/main/java/com/alibaba/druid/support/security/decryptor/AesDecrypter.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.alibaba.druid.support.security.decryptor;
-
-import com.alibaba.druid.support.logging.Log;
-import com.alibaba.druid.support.logging.LogFactory;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-import java.util.Properties;
-
-/**
- *
- * AES 解密器, 如果不指定密钥, 使用默认的密钥.
- * 通过一下方式指定密钥:
- * Properties info = new Properties();
- * info.put("config.decrypt.key", "密钥");
- *
- * String 明文 = new AesDecrypter().decrypt("密文", info);
- *
- *
- * @author Jonas Yang
- */
-public class AesDecrypter extends AbstractDecrypter {
- private static Log log = LogFactory.getLog(AesDecrypter.class);
-
- private final static int KEY_LENGTH = 16; //128
-
- public String getId() {
- return "AES";
- }
-
- /**
- * 密钥 放在 Properties 参数中, key 是 config.decrypt.key, 如果不指定密钥, 将使用默认密钥
- * @param parameters 密文参数
- * @param info
- * @return
- * @throws DecryptException
- */
- public SensitiveParameters decrypt(SensitiveParameters parameters, Properties info) throws DecryptException {
- SecretKeySpec spec = getSpec(info);
-
- try {
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.DECRYPT_MODE, spec);
-
- String passwordPlainText = decrypt(cipher, parameters.getPassword());
-
- return new SensitiveParameters(parameters.getUrl(), parameters.getUsername(), passwordPlainText);
- } catch (Exception e) {
- throw new DecryptException("Failed to decrypt JDBC password’", e);
- }
- }
-
- SecretKeySpec getSpec(Properties info) {
- String key = null;
-
- if (info != null) {
- key = info.getProperty(KEY);
- }
-
- if (key == null) {
- if (log.isDebugEnabled()) {
- log.debug("Decrypt by default key");
- }
- key = "";
- }
-
- if (key.length() < 16) {
- key = KEY_PADDING.substring(0, KEY_LENGTH - key.length()) + key;
- }
-
- return new SecretKeySpec(key.getBytes(), "AES");
- }
-
-}
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/AbstractAction.java b/src/main/java/com/alibaba/druid/support/security/tool/AbstractAction.java
deleted file mode 100644
index a2eee151bd..0000000000
--- a/src/main/java/com/alibaba/druid/support/security/tool/AbstractAction.java
+++ /dev/null
@@ -1,72 +0,0 @@
-package com.alibaba.druid.support.security.tool;
-
-/**
- * @author Jonas Yang
- */
-public abstract class AbstractAction implements Action {
- private int minKeyLength;
-
- private int maxKeyLength;
-
- private String prompt;
-
- public AbstractAction(int minKeyLength, int maxKeyLength, String prompt) {
- if (minKeyLength < 0 || maxKeyLength < 0) {
- throw new IllegalArgumentException("The key length must be a positive.");
- }
-
- if (maxKeyLength < minKeyLength) {
- throw new IllegalArgumentException("The max length of key cannot be less than min length.");
- }
-
- this.minKeyLength = minKeyLength;
- this.maxKeyLength = maxKeyLength;
- this.prompt = "[" + prompt + "]";
- }
-
- protected abstract String encrypt(String keyString, String plainString) throws Exception;
-
- @Override
- public void execute() {
- System.out.println();
-
- String keyString = readPassword();
- if (keyString == null) return;
-
- String plainString = System.console().readLine(this.prompt + "请输入要需要加密的明文: ");
- if (plainString == null) {
- System.err.println("输入不能为空.");
- return;
- }
-
- try {
- String encryptedString = encrypt(keyString, plainString);
- System.out.println("请记住以下的密文, 长度为[" + encryptedString.length() + "].");
- System.out.println();
- System.out.println(encryptedString);
- System.out.println();
- } catch (Exception e) {
- System.out.println("加密出错.");
- e.printStackTrace();
- }
- }
-
- protected String readPassword() {
- char[] keyChars = System.console().readPassword(this.prompt + "请输入密码[长度最大为" + this.maxKeyLength + "字节]: ");
- if (keyChars == null) {
- keyChars = new char[0];
- }
-
- String keyString = new String(keyChars);
-
- if (keyString.length() < this.minKeyLength || keyString.length() > this.maxKeyLength) {
- System.err.println("错误: 密码长度要大于等于" + this.minKeyLength + ", 小于等于" + this.maxKeyLength + ".");
- return null;
- }
-
- keyString = KEY_PADDING.substring(0, this.maxKeyLength - keyString.length()) + keyString;
-
- return keyString;
- }
-
-}
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/Action.java b/src/main/java/com/alibaba/druid/support/security/tool/Action.java
deleted file mode 100644
index 32dd752371..0000000000
--- a/src/main/java/com/alibaba/druid/support/security/tool/Action.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.alibaba.druid.support.security.tool;
-
-import com.alibaba.druid.support.security.decryptor.AbstractDecrypter;
-
-/**
- * @author Jonas Yang
- */
-public interface Action {
- /**
- * DES, AES 密钥都有长度限制, 如果不够, 默认使用该字段补长
- */
- public String KEY_PADDING = AbstractDecrypter.KEY_PADDING;
-
- public String getId();
-
- public void execute();
-}
diff --git a/src/main/java/com/alibaba/druid/support/security/tool/AesAction.java b/src/main/java/com/alibaba/druid/support/security/tool/AesAction.java
deleted file mode 100644
index 66006d5d54..0000000000
--- a/src/main/java/com/alibaba/druid/support/security/tool/AesAction.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.alibaba.druid.support.security.tool;
-
-import com.alibaba.druid.util.Base64;
-
-import javax.crypto.Cipher;
-import javax.crypto.spec.SecretKeySpec;
-
-/**
- * @author Jonas Yang
- */
-public class AesAction extends AbstractAction {
-
- public AesAction() {
- super(0, 16, "AES");
- }
-
- @Override
- public String getId() {
- return "AES";
- }
-
- protected String encrypt(String keyString, String plainString) throws Exception {
- SecretKeySpec spec = new SecretKeySpec(keyString.getBytes(), "AES");
-
- Cipher cipher = Cipher.getInstance("AES");
- cipher.init(Cipher.ENCRYPT_MODE, spec);
-
- byte[] encryptedBytes = cipher.doFinal(plainString.getBytes());
-
- return Base64.byteArrayToBase64(encryptedBytes);
- }
-}
diff --git a/src/main/resources/META-INF/druid-config-loader-default.properties b/src/main/resources/META-INF/druid-config-loader-default.properties
index 0cf3be00df..a4a9b14f0b 100644
--- a/src/main/resources/META-INF/druid-config-loader-default.properties
+++ b/src/main/resources/META-INF/druid-config-loader-default.properties
@@ -1,2 +1,2 @@
-config.loader.1=com.alibaba.druid.filter.config.impl.FileConfigLoader
-config.loader.2=com.alibaba.druid.filter.config.impl.HttpConfigLoader
\ No newline at end of file
+config.loader.1=com.alibaba.druid.filter.config.loader.impl.FileConfigLoader
+config.loader.2=com.alibaba.druid.filter.config.loader.impl.HttpConfigLoader
\ No newline at end of file
diff --git a/src/test/java/com/alibaba/druid/bvt/filter/config/ConfigTestSuite.java b/src/test/java/com/alibaba/druid/bvt/filter/config/ConfigTestSuite.java
index d8ca9ce3d3..77fb8b8227 100644
--- a/src/test/java/com/alibaba/druid/bvt/filter/config/ConfigTestSuite.java
+++ b/src/test/java/com/alibaba/druid/bvt/filter/config/ConfigTestSuite.java
@@ -1,11 +1,11 @@
package com.alibaba.druid.bvt.filter.config;
import com.alibaba.druid.filter.config.ConfigFilterTest;
-import com.alibaba.druid.filter.config.ConfigLoaderFactoryTest;
-import com.alibaba.druid.filter.config.impl.FileConfigLoaderTest;
-import com.alibaba.druid.filter.config.impl.FileConfigLoaderTest1;
-import com.alibaba.druid.filter.config.impl.HttpConfigLoaderTest;
-import com.alibaba.druid.filter.config.impl.HttpConfigLoaderTest1;
+import com.alibaba.druid.filter.config.loader.ConfigLoaderFactoryTest;
+import com.alibaba.druid.filter.config.loader.impl.FileConfigLoaderTest;
+import com.alibaba.druid.filter.config.loader.impl.FileConfigLoaderTest1;
+import com.alibaba.druid.filter.config.loader.impl.HttpConfigLoaderTest;
+import com.alibaba.druid.filter.config.loader.impl.HttpConfigLoaderTest1;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
diff --git a/src/test/java/com/alibaba/druid/bvt/filter/config/DecrypterTestSuite.java b/src/test/java/com/alibaba/druid/bvt/filter/config/DecrypterTestSuite.java
new file mode 100644
index 0000000000..d0013c5db4
--- /dev/null
+++ b/src/test/java/com/alibaba/druid/bvt/filter/config/DecrypterTestSuite.java
@@ -0,0 +1,17 @@
+package com.alibaba.druid.bvt.filter.config;
+
+import com.alibaba.druid.filter.config.security.decrypter.DecrypterFactoryTest;
+import com.alibaba.druid.filter.config.security.decrypter.RsaDecrypterTest;
+import org.junit.runner.RunWith;
+import org.junit.runners.Suite;
+
+/**
+ * @author Jonas Yang
+ */
+@RunWith(Suite.class)
+@Suite.SuiteClasses({
+ RsaDecrypterTest.class,
+ DecrypterFactoryTest.class
+})
+public class DecrypterTestSuite {
+}
diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceDecryptTest.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceDecryptTest.java
index fca599c560..4dbd8784fd 100644
--- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceDecryptTest.java
+++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceDecryptTest.java
@@ -1,15 +1,11 @@
package com.alibaba.druid.bvt.pool;
-import com.alibaba.druid.support.security.decryptor.DecryptException;
-import com.alibaba.druid.support.security.decryptor.Decrypter;
import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.support.security.decryptor.SensitiveParameters;
import com.alibaba.druid.util.JdbcUtils;
import org.junit.Assert;
import org.junit.Test;
import java.sql.SQLException;
-import java.util.Properties;
/**
* @author Jonas Yang
diff --git a/src/test/java/com/alibaba/druid/bvt/support/security/DecrypterTestSuite.java b/src/test/java/com/alibaba/druid/bvt/support/security/DecrypterTestSuite.java
deleted file mode 100644
index ad935622bf..0000000000
--- a/src/test/java/com/alibaba/druid/bvt/support/security/DecrypterTestSuite.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.alibaba.druid.bvt.support.security;
-
-import com.alibaba.druid.support.security.decryptor.AesDecrypterTest;
-import com.alibaba.druid.support.security.decryptor.DecrypterFactoryTest;
-import com.alibaba.druid.support.security.decryptor.RsaDecrypterTest;
-import org.junit.runner.RunWith;
-import org.junit.runners.Suite;
-
-/**
- * @author Jonas Yang
- */
-@RunWith(Suite.class)
-@Suite.SuiteClasses({
- AesDecrypterTest.class,
- RsaDecrypterTest.class,
- DecrypterFactoryTest.class
-})
-public class DecrypterTestSuite {
-}
diff --git a/src/test/java/com/alibaba/druid/filter/config/ConfigFilterTest.java b/src/test/java/com/alibaba/druid/filter/config/ConfigFilterTest.java
index 0d04ff187e..960490d943 100644
--- a/src/test/java/com/alibaba/druid/filter/config/ConfigFilterTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/ConfigFilterTest.java
@@ -1,6 +1,6 @@
package com.alibaba.druid.filter.config;
-import com.alibaba.druid.filter.config.impl.FileConfigLoader;
+import com.alibaba.druid.filter.config.loader.impl.FileConfigLoader;
import com.alibaba.druid.mock.MockDriver;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.util.JdbcUtils;
diff --git a/src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest1.java b/src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest1.java
deleted file mode 100644
index 9bd5ac2537..0000000000
--- a/src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest1.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.alibaba.druid.filter.config.impl;
-
-import junit.framework.Assert;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.util.Properties;
-
-/**
- * @author Jonas Yang
- */
-public class HttpConfigLoaderTest1 {
- protected String protocol = "localhost:19999/test.properties";
-
- protected ServerSocket server;
-
- @Before
- public void setUp() {
- try {
- this.server = new ServerSocket(19999);
- this.server.setReuseAddress(true);
- Thread t = new Thread("Http Server Thread") {
- @Override
- public void run() {
- try {
- Socket socket = HttpConfigLoaderTest1.this.server.accept();
-// InputStream in = socket.getInputStream();
-// int b;
-// while ((b = in.read()) != -1) {
-// if (b == '\r') {
-// b = in.read();
-// if (b == '\n') {
-// b = in.read();
-// if (b == '\r') {
-// b = in.read();
-// if (b == '\n') {
-// break;
-// }
-// }
-// }
-// }
-//
-// if (b == -1) {
-// break;
-// }
-// }
-
- PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
- out.println("a1=test1");
- out.println("b2=test2");
- out.flush();
- socket.close();
- } catch (IOException e) {
- if (e.getMessage().indexOf("Socket closed") == -1
- && e.getMessage().indexOf("Socket is closed") == -1)
- e.printStackTrace();
- }
- }
- };
- t.start();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- @After
- public void tearDown() {
- if (this.server != null) {
- try {
- this.server.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- @Test
- public void testLoadConfig() {
- HttpConfigLoader configLoader = new HttpConfigLoader();
- Properties p = configLoader.loadConfig(HttpConfigLoader.PROTOCOL_PREFIX + this.protocol);
-
- Assert.assertNotNull("The properties is null", p);
- Assert.assertEquals("The value is " + p.getProperty("a1") + ", not test1", "test1", p.getProperty("a1"));
- }
-
- @Test
- public void testLoadConfigByNotExistUrl() {
- HttpConfigLoader configLoader = new HttpConfigLoader();
- Properties p = configLoader.loadConfig(HttpConfigLoader.PROTOCOL_PREFIX + "localhost/jonas");
-
- Assert.assertNull("The properties is not null", p);
- }
-}
diff --git a/src/test/java/com/alibaba/druid/filter/config/ConfigLoaderFactoryTest.java b/src/test/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactoryTest.java
similarity index 91%
rename from src/test/java/com/alibaba/druid/filter/config/ConfigLoaderFactoryTest.java
rename to src/test/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactoryTest.java
index a53087f971..93708a3598 100644
--- a/src/test/java/com/alibaba/druid/filter/config/ConfigLoaderFactoryTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/loader/ConfigLoaderFactoryTest.java
@@ -1,5 +1,7 @@
-package com.alibaba.druid.filter.config;
+package com.alibaba.druid.filter.config.loader;
+import com.alibaba.druid.filter.config.loader.ConfigLoader;
+import com.alibaba.druid.filter.config.loader.ConfigLoaderFactory;
import org.junit.Assert;
import org.junit.Test;
diff --git a/src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest.java b/src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest.java
similarity index 94%
rename from src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest.java
rename to src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest.java
index 5a0d46c038..fc1e4889b5 100644
--- a/src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.filter.config.impl;
+package com.alibaba.druid.filter.config.loader.impl;
import org.junit.Assert;
import org.junit.Test;
diff --git a/src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest1.java b/src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest1.java
similarity index 94%
rename from src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest1.java
rename to src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest1.java
index 5b66279c35..9044c83792 100644
--- a/src/test/java/com/alibaba/druid/filter/config/impl/FileConfigLoaderTest1.java
+++ b/src/test/java/com/alibaba/druid/filter/config/loader/impl/FileConfigLoaderTest1.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.filter.config.impl;
+package com.alibaba.druid.filter.config.loader.impl;
import com.alibaba.druid.filter.config.ConfigFileGenerator;
import junit.framework.Assert;
diff --git a/src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest.java b/src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest.java
similarity index 94%
rename from src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest.java
rename to src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest.java
index 1c176c2728..9d4776095d 100644
--- a/src/test/java/com/alibaba/druid/filter/config/impl/HttpConfigLoaderTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.filter.config.impl;
+package com.alibaba.druid.filter.config.loader.impl;
import org.junit.Assert;
import org.junit.Test;
diff --git a/src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest1.java b/src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest1.java
new file mode 100644
index 0000000000..30145d57cd
--- /dev/null
+++ b/src/test/java/com/alibaba/druid/filter/config/loader/impl/HttpConfigLoaderTest1.java
@@ -0,0 +1,101 @@
+package com.alibaba.druid.filter.config.loader.impl;
+
+import junit.framework.Assert;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.util.Properties;
+
+/**
+ * @author Jonas Yang
+ */
+public class HttpConfigLoaderTest1 {
+ protected String protocol = "localhost:19999/test.properties";
+
+ protected ServerSocket server;
+
+ @Before
+ public void setUp() {
+ try {
+ this.server = new ServerSocket(19999);
+ this.server.setReuseAddress(true);
+ Thread t = new Thread("Http Server Thread") {
+ @Override
+ public void run() {
+ while (true) {
+ try {
+ Socket socket = HttpConfigLoaderTest1.this.server.accept();
+ // InputStream in = socket.getInputStream();
+ // int b;
+ // while ((b = in.read()) != -1) {
+ // if (b == '\r') {
+ // b = in.read();
+ // if (b == '\n') {
+ // b = in.read();
+ // if (b == '\r') {
+ // b = in.read();
+ // if (b == '\n') {
+ // break;
+ // }
+ // }
+ // }
+ // }
+ //
+ // if (b == -1) {
+ // break;
+ // }
+ // }
+
+ PrintWriter out = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
+ out.println("a1=test1");
+ out.println("b2=test2");
+ out.flush();
+ socket.close();
+ } catch (IOException e) {
+ if (e.getMessage().indexOf("Socket closed") == -1
+ && e.getMessage().indexOf("Socket is closed") == -1)
+ e.printStackTrace();
+ }
+ }
+ }
+ };
+ t.start();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @After
+ public void tearDown() {
+ if (this.server != null) {
+ try {
+ this.server.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Test
+ public void testLoadConfig() {
+ HttpConfigLoader configLoader = new HttpConfigLoader();
+ Properties p = configLoader.loadConfig(HttpConfigLoader.PROTOCOL_PREFIX + this.protocol);
+
+ Assert.assertNotNull("The properties is null", p);
+ Assert.assertEquals("The value is " + p.getProperty("a1") + ", not test1", "test1", p.getProperty("a1"));
+ }
+
+ @Test
+ public void testLoadConfigByNotExistUrl() {
+ HttpConfigLoader configLoader = new HttpConfigLoader();
+ Properties p = configLoader.loadConfig(HttpConfigLoader.PROTOCOL_PREFIX + "localhost/jonas");
+
+ Assert.assertNull("The properties is not null", p);
+ }
+}
diff --git a/src/test/java/com/alibaba/druid/support/security/decryptor/DecrypterFactoryTest.java b/src/test/java/com/alibaba/druid/filter/config/security/decrypter/DecrypterFactoryTest.java
similarity index 66%
rename from src/test/java/com/alibaba/druid/support/security/decryptor/DecrypterFactoryTest.java
rename to src/test/java/com/alibaba/druid/filter/config/security/decrypter/DecrypterFactoryTest.java
index 61a952fcdc..ff852ae3eb 100644
--- a/src/test/java/com/alibaba/druid/support/security/decryptor/DecrypterFactoryTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/security/decrypter/DecrypterFactoryTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.support.security.decryptor;
+package com.alibaba.druid.filter.config.security.decrypter;
import junit.framework.Assert;
import org.junit.Test;
@@ -13,9 +13,6 @@ public class DecrypterFactoryTest {
Assert.assertNotNull(DecrypterFactory.getDecrypter("RSA"));
Assert.assertEquals(DecrypterFactory.getDecrypter("RSA").getClass(), RsaDecrypter.class);
- Assert.assertNotNull(DecrypterFactory.getDecrypter("AES"));
- Assert.assertEquals(DecrypterFactory.getDecrypter("AES").getClass(), AesDecrypter.class);
-
Assert.assertNull(DecrypterFactory.getDecrypter("ajfdjksfklds;"));
}
}
diff --git a/src/test/java/com/alibaba/druid/support/security/decryptor/RsaDecrypterTest.java b/src/test/java/com/alibaba/druid/filter/config/security/decrypter/RsaDecrypterTest.java
similarity index 97%
rename from src/test/java/com/alibaba/druid/support/security/decryptor/RsaDecrypterTest.java
rename to src/test/java/com/alibaba/druid/filter/config/security/decrypter/RsaDecrypterTest.java
index 2c0f356fa5..b882a47692 100644
--- a/src/test/java/com/alibaba/druid/support/security/decryptor/RsaDecrypterTest.java
+++ b/src/test/java/com/alibaba/druid/filter/config/security/decrypter/RsaDecrypterTest.java
@@ -1,4 +1,4 @@
-package com.alibaba.druid.support.security.decryptor;
+package com.alibaba.druid.filter.config.security.decrypter;
import com.alibaba.druid.util.Base64;
import junit.framework.Assert;
@@ -124,7 +124,7 @@ public class RsaDecrypterTest {
@Test
public void testDecryptWithEmptyKey() throws DecryptException {
RsaDecrypter decrypter = new RsaDecrypter();
- SensitiveParameters parameters = decrypter.decrypt(new SensitiveParameters("", "", "OJfUm6WCHi7EuXqE6aEc+Po2xFrAGBeSNy8O2jWhV2FTG8/5kbRRr2rjNKhptlevm/03Y0048P7h88gdUOXAYg=="), null);
+ SensitiveParameters parameters = decrypter.decrypt(new SensitiveParameters("", "", "OJfUm6WCHi7EuXqE6aEc+Po2xFrAGBeSNy8O2jWhV2FTG8/5kbRRr2rjNKhptlevm/03Y0048P7h88gdUOXAYg=="), (Properties) null);
Assert.assertEquals("It is not same.", "xiaoyu", parameters.getPassword());
}
diff --git a/src/test/java/com/alibaba/druid/support/security/decryptor/AesDecrypterTest.java b/src/test/java/com/alibaba/druid/support/security/decryptor/AesDecrypterTest.java
deleted file mode 100644
index f0b7a7fa89..0000000000
--- a/src/test/java/com/alibaba/druid/support/security/decryptor/AesDecrypterTest.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.alibaba.druid.support.security.decryptor;
-
-import junit.framework.Assert;
-import org.junit.Test;
-
-import java.util.Properties;
-
-/**
- * @author Jonas Yang
- */
-public class AesDecrypterTest {
-
- @Test
- public void testDecrypt() throws DecryptException {
- AesDecrypter decrypter = new AesDecrypter();
- Properties info = new Properties();
- info.setProperty(AesDecrypter.KEY, "123456");
- SensitiveParameters parameters = decrypter.decrypt(new SensitiveParameters("", "", "0UNXTyp/r/wdm+b5FAY1Jw=="), info);
-
- Assert.assertEquals("It is not same.", "xiaoyu", parameters.getPassword());
- }
-
- @Test
- public void testDecryptWithEmptyKey() throws DecryptException {
- AesDecrypter decrypter = new AesDecrypter();
- SensitiveParameters parameters = decrypter.decrypt(new SensitiveParameters("", "", "AzgdbVU3SIK6A8+0qg+Btg=="), null);
-
- Assert.assertEquals("It is not same.", "xiaoyu", parameters.getPassword());
- }
-}