From cd6556bde90bb02fb0617627b09f5d521ac3d6a9 Mon Sep 17 00:00:00 2001 From: likeelli Date: Mon, 1 Dec 2025 17:05:34 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8commons-configuration2?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2ini4j=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 6 ++--- .../provider/ProfileCredentialsProvider.java | 22 ++++++++++--------- 2 files changed, 15 insertions(+), 13 deletions(-) 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"); } From e95ec4da480243cbdbd62aadbcb7af6d645c3eff Mon Sep 17 00:00:00 2001 From: likeelli Date: Tue, 2 Dec 2025 19:57:33 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8commons-configuration2?= =?UTF-8?q?=E6=9B=BF=E6=8D=A2ini4j=E4=BE=9D=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProfileCredentialsProviderTest.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 src/test/java/com/tencentcloudapi/integration/common/provider/ProfileCredentialsProviderTest.java 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); + } + } +}