From 08772b81af4fbe6c7590af628ccc240dd07a3d94 Mon Sep 17 00:00:00 2001 From: hyunw9 Date: Sun, 26 Oct 2025 21:44:49 +0900 Subject: [PATCH 1/5] feat : Make TokenClient public --- .../com/linecorp/armeria/client/athenz/AccessTokenClient.java | 2 +- .../com/linecorp/armeria/client/athenz/RoleTokenClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java index 50f2eb94917..fd900de0e2b 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java @@ -36,7 +36,7 @@ import com.linecorp.armeria.common.auth.oauth2.GrantedOAuth2AccessToken; import com.linecorp.armeria.common.util.Exceptions; -final class AccessTokenClient implements TokenClient { +public class AccessTokenClient implements TokenClient { private final AtomicBoolean tlsKeyPairUpdated = new AtomicBoolean(); diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java index 0572b9a54d4..95dbdf8f680 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java @@ -33,7 +33,7 @@ import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.UnmodifiableFuture; -final class RoleTokenClient implements TokenClient { +public class RoleTokenClient implements TokenClient { static final Joiner ROLE_JOINER = Joiner.on(","); From 3a1be435096150e4250ddcf450eb7c4aef784d5b Mon Sep 17 00:00:00 2001 From: hyunw9 Date: Sun, 26 Oct 2025 21:51:11 +0900 Subject: [PATCH 2/5] feat : Add final --- .../com/linecorp/armeria/client/athenz/AccessTokenClient.java | 2 +- .../com/linecorp/armeria/client/athenz/RoleTokenClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java index fd900de0e2b..7f96ce34f29 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java @@ -36,7 +36,7 @@ import com.linecorp.armeria.common.auth.oauth2.GrantedOAuth2AccessToken; import com.linecorp.armeria.common.util.Exceptions; -public class AccessTokenClient implements TokenClient { +public final class AccessTokenClient implements TokenClient { private final AtomicBoolean tlsKeyPairUpdated = new AtomicBoolean(); diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java index 95dbdf8f680..2b451b0e7a4 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java @@ -33,7 +33,7 @@ import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.UnmodifiableFuture; -public class RoleTokenClient implements TokenClient { +public final class RoleTokenClient implements TokenClient { static final Joiner ROLE_JOINER = Joiner.on(","); From d56fc5bb24383964666edfbe6c35082b588ad815 Mon Sep 17 00:00:00 2001 From: hyunw9 Date: Tue, 18 Nov 2025 22:36:03 +0900 Subject: [PATCH 3/5] feat : Release public keyword --- .../com/linecorp/armeria/client/athenz/AccessTokenClient.java | 2 +- .../com/linecorp/armeria/client/athenz/RoleTokenClient.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java index 7f96ce34f29..50f2eb94917 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/AccessTokenClient.java @@ -36,7 +36,7 @@ import com.linecorp.armeria.common.auth.oauth2.GrantedOAuth2AccessToken; import com.linecorp.armeria.common.util.Exceptions; -public final class AccessTokenClient implements TokenClient { +final class AccessTokenClient implements TokenClient { private final AtomicBoolean tlsKeyPairUpdated = new AtomicBoolean(); diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java index 2b451b0e7a4..0572b9a54d4 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/RoleTokenClient.java @@ -33,7 +33,7 @@ import com.linecorp.armeria.common.util.Exceptions; import com.linecorp.armeria.common.util.UnmodifiableFuture; -public final class RoleTokenClient implements TokenClient { +final class RoleTokenClient implements TokenClient { static final Joiner ROLE_JOINER = Joiner.on(","); From c9134676221aa9ecd94e6daf6373c8191bbfe927 Mon Sep 17 00:00:00 2001 From: hyunw9 Date: Tue, 18 Nov 2025 22:37:12 +0900 Subject: [PATCH 4/5] feat : [athenz] Add factory method to TokenClient --- .../armeria/client/athenz/TokenClient.java | 27 ++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java index 880a8df707b..2d855aaae6f 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java @@ -16,10 +16,35 @@ package com.linecorp.armeria.client.athenz; +import static java.util.Objects.requireNonNull; + +import java.time.Duration; +import java.util.List; import java.util.concurrent.CompletableFuture; +import com.google.common.collect.ImmutableList; + +import com.linecorp.armeria.common.annotation.UnstableApi; +import com.linecorp.armeria.common.athenz.TokenType; + +@UnstableApi @FunctionalInterface -interface TokenClient { +public interface TokenClient { CompletableFuture getToken(); + + static TokenClient of(ZtsBaseClient ztsBaseClient, String domainName, List roleNames, + TokenType tokenType, Duration refreshBefore) { + requireNonNull(ztsBaseClient, "ztsBaseClient"); + requireNonNull(domainName, "domainName"); + requireNonNull(roleNames, "roleNames"); + requireNonNull(tokenType, "tokenType"); + requireNonNull(refreshBefore, "refreshBefore"); + final ImmutableList roleNames0 = ImmutableList.copyOf(roleNames); + if (tokenType.isRoleToken()) { + return new RoleTokenClient(ztsBaseClient, domainName, roleNames0, refreshBefore); + } else { + return new AccessTokenClient(ztsBaseClient, domainName, roleNames0, refreshBefore); + } + } } From 4205241b1acd8504460b5a52a3afab274dd68cf4 Mon Sep 17 00:00:00 2001 From: esthyunw9 Date: Wed, 19 Nov 2025 08:10:06 +0900 Subject: [PATCH 5/5] refactor : Rename ImmutableRoleNames --- .../com/linecorp/armeria/client/athenz/TokenClient.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java b/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java index 2d855aaae6f..8cab0fed0a8 100644 --- a/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java +++ b/athenz/src/main/java/com/linecorp/armeria/client/athenz/TokenClient.java @@ -40,11 +40,11 @@ static TokenClient of(ZtsBaseClient ztsBaseClient, String domainName, List roleNames0 = ImmutableList.copyOf(roleNames); + final ImmutableList immutableRoleNames = ImmutableList.copyOf(roleNames); if (tokenType.isRoleToken()) { - return new RoleTokenClient(ztsBaseClient, domainName, roleNames0, refreshBefore); + return new RoleTokenClient(ztsBaseClient, domainName, immutableRoleNames, refreshBefore); } else { - return new AccessTokenClient(ztsBaseClient, domainName, roleNames0, refreshBefore); + return new AccessTokenClient(ztsBaseClient, domainName, immutableRoleNames, refreshBefore); } } }