diff --git a/pom.xml b/pom.xml
index 530e121686..764f5127f8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -30,9 +30,9 @@
3.12.13
- org.ini4j
- ini4j
- 0.5.4
+ org.apache.commons
+ commons-configuration2
+ 2.12.0
junit
diff --git a/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java b/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java
index a54c0cdeae..c3dcc30795 100644
--- a/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java
+++ b/src/main/java/com/tencentcloudapi/common/provider/ProfileCredentialsProvider.java
@@ -2,17 +2,18 @@
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
-import org.ini4j.Wini;
+import org.apache.commons.configuration2.INIConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
-import java.io.File;
+import java.io.FileReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
public class ProfileCredentialsProvider implements CredentialsProvider {
- private static Wini ini;
+ private static INIConfiguration ini;
- private static Wini getIni() throws TencentCloudSDKException {
+ private static INIConfiguration getIni() throws TencentCloudSDKException {
String fileName;
if (Files.exists(Paths.get(System.getProperty("user.home") + "\\.tencentcloud\\credentials"))) {
fileName = System.getProperty("user.home") + "\\.tencentcloud\\credentials";
@@ -24,18 +25,19 @@ private static Wini getIni() throws TencentCloudSDKException {
throw new TencentCloudSDKException("Not found file");
}
try {
- ini = new Wini(new File(fileName));
- } catch (IOException e) {
- throw new TencentCloudSDKException("IOException");
+ ini = new INIConfiguration();
+ ini.read(new FileReader(fileName));
+ } catch (IOException | ConfigurationException e) {
+ throw new TencentCloudSDKException("IOException or ConfigurationException");
}
return ini;
}
@Override
public Credential getCredentials() throws TencentCloudSDKException {
- Wini ini = getIni();
- String secretId = ini.get("default", "secret_id");
- String secretKey = ini.get("default", "secret_key");
+ INIConfiguration ini = getIni();
+ String secretId = ini.getString("default.secret_id");
+ String secretKey = ini.getString("default.secret_key");
if (secretId == null || secretKey == null) {
throw new TencentCloudSDKException("Not found secretId or secretKey");
}
diff --git a/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java b/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java
new file mode 100644
index 0000000000..0bb227fd08
--- /dev/null
+++ b/src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java
@@ -0,0 +1,54 @@
+package com.tencentcloudapi.integration.common.provider;
+
+import com.tencentcloudapi.common.Credential;
+import com.tencentcloudapi.common.provider.ProfileCredentialsProvider;
+import org.junit.Test;
+import java.nio.file.Path;
+import java.nio.file.Files;
+
+import static org.junit.Assert.*;
+
+public class ProfileCredentialsProviderTest {
+
+ @Test
+ public void testGetCredentials() throws Exception {
+ // 创建临时目录模拟用户主目录
+ Path tempHomeDir = Files.createTempDirectory("tencentcloud-test-home");
+ Path credentialsDir = tempHomeDir.resolve(".tencentcloud");
+ Files.createDirectories(credentialsDir);
+ Path credentialsFile = credentialsDir.resolve("credentials");
+
+ // 保存原始user.home属性
+ String originalUserHome = System.getProperty("user.home");
+
+ try {
+ // 设置临时目录为用户主目录
+ System.setProperty("user.home", tempHomeDir.toString());
+
+ // 写入配置文件内容
+ String configContent = "[default]\n" +
+ "secret_id = secret_id_test\n" +
+ "secret_key = secret_key_test";
+ Files.write(credentialsFile, configContent.getBytes());
+
+ // 测试ProfileCredentialsProvider是否能正确读取
+ ProfileCredentialsProvider provider = new ProfileCredentialsProvider();
+ Credential cred = provider.getCredentials();
+
+ // 验证读取的凭据是否正确
+ assertEquals("secret_id_test", cred.getSecretId());
+ assertEquals("secret_key_test", cred.getSecretKey());
+
+ } finally {
+ // 恢复原始user.home属性
+ if (originalUserHome != null) {
+ System.setProperty("user.home", originalUserHome);
+ }
+
+ // 清理临时文件
+ Files.deleteIfExists(credentialsFile);
+ Files.deleteIfExists(credentialsDir);
+ Files.deleteIfExists(tempHomeDir);
+ }
+ }
+}