This is an automated email from the ASF dual-hosted git repository.

tison pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/pulsar.git


The following commit(s) were added to refs/heads/master by this push:
     new 36d4708356d [improve][cli][PIP-280] Retrofit `pulsar-cli-utils` into 
`pulsar-broker` and `pulsar-client-tools` (#21412)
36d4708356d is described below

commit 36d4708356d6880b32f806c0c2bd07116a4a8596
Author: Kim, Joo Hyuk <[email protected]>
AuthorDate: Tue Nov 14 12:55:20 2023 +0900

    [improve][cli][PIP-280] Retrofit `pulsar-cli-utils` into `pulsar-broker` 
and `pulsar-client-tools` (#21412)
    
    Co-authored-by: tison <[email protected]>
---
 pulsar-broker/pom.xml                              |  6 ++++++
 .../pulsar/utils/auth/tokens/TokensCliUtils.java   | 23 ++++++--------------
 .../pulsar/admin/cli/CmdPersistentTopics.java      | 25 ++++++----------------
 .../apache/pulsar/admin/cli/CmdTransactions.java   | 18 ++++++----------
 4 files changed, 26 insertions(+), 46 deletions(-)

diff --git a/pulsar-broker/pom.xml b/pulsar-broker/pom.xml
index 46f2eb95175..6aac8959a10 100644
--- a/pulsar-broker/pom.xml
+++ b/pulsar-broker/pom.xml
@@ -82,6 +82,12 @@
       <version>${project.version}</version>
     </dependency>
 
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>pulsar-cli-utils</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
     <dependency>
       <groupId>${project.groupId}</groupId>
       <artifactId>managed-ledger</artifactId>
diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/utils/auth/tokens/TokensCliUtils.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/utils/auth/tokens/TokensCliUtils.java
index fa91ef79d40..fa3a7bed8f6 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/utils/auth/tokens/TokensCliUtils.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/utils/auth/tokens/TokensCliUtils.java
@@ -22,7 +22,6 @@ import com.beust.jcommander.DefaultUsageFormatter;
 import com.beust.jcommander.IUsageFormatter;
 import com.beust.jcommander.JCommander;
 import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.Parameters;
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwt;
@@ -41,11 +40,10 @@ import java.security.Key;
 import java.security.KeyPair;
 import java.util.Date;
 import java.util.Optional;
-import java.util.concurrent.TimeUnit;
 import javax.crypto.SecretKey;
 import lombok.Cleanup;
 import org.apache.pulsar.broker.authentication.utils.AuthTokenUtils;
-import org.apache.pulsar.common.util.RelativeTimeUtil;
+import org.apache.pulsar.cli.converters.TimeUnitToSecondsConverter;
 import org.apache.pulsar.docs.tools.CmdGenerateDocs;
 
 public class TokensCliUtils {
@@ -120,8 +118,9 @@ public class TokensCliUtils {
         @Parameter(names = {"-e",
                 "--expiry-time"},
                 description = "Relative expiry time for the token (eg: 1h, 3d, 
10y)."
-                        + " (m=minutes) Default: no expiration")
-        private String expiryTime;
+                        + " (m=minutes) Default: no expiration",
+                    converter = TimeUnitToSecondsConverter.class)
+        private Long expiryTime = null;
 
         @Parameter(names = {"-sk",
                 "--secret-key"},
@@ -154,17 +153,9 @@ public class TokensCliUtils {
                 signingKey = AuthTokenUtils.decodeSecretKey(encodedKey);
             }
 
-            Optional<Date> optExpiryTime = Optional.empty();
-            if (expiryTime != null) {
-                long relativeTimeMillis;
-                try {
-                    relativeTimeMillis = TimeUnit.SECONDS.toMillis(
-                            
RelativeTimeUtil.parseRelativeTimeInSeconds(expiryTime));
-                } catch (IllegalArgumentException exception) {
-                    throw new ParameterException(exception.getMessage());
-                }
-                optExpiryTime = Optional.of(new 
Date(System.currentTimeMillis() + relativeTimeMillis));
-            }
+            Optional<Date> optExpiryTime = (expiryTime == null)
+                    ? Optional.empty()
+                    : Optional.of(new Date(System.currentTimeMillis() + 
expiryTime));
 
             String token = AuthTokenUtils.createToken(signingKey, subject, 
optExpiryTime);
             System.out.println(token);
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
index c9c55ff5c0d..cdfcaefc7f6 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdPersistentTopics.java
@@ -20,7 +20,6 @@ package org.apache.pulsar.admin.cli;
 
 import static org.apache.commons.lang3.StringUtils.isNotBlank;
 import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.Parameters;
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
@@ -33,6 +32,7 @@ import java.util.Objects;
 import java.util.concurrent.ExecutionException;
 import java.util.function.Supplier;
 import org.apache.pulsar.cli.converters.TimeUnitToMillisConverter;
+import org.apache.pulsar.cli.converters.TimeUnitToSecondsConverter;
 import org.apache.pulsar.client.admin.LongRunningProcessStatus;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.admin.PulsarAdminException;
@@ -42,7 +42,6 @@ import org.apache.pulsar.client.api.MessageId;
 import org.apache.pulsar.client.cli.NoSplitter;
 import org.apache.pulsar.client.impl.BatchMessageIdImpl;
 import org.apache.pulsar.client.impl.MessageIdImpl;
-import org.apache.pulsar.common.util.RelativeTimeUtil;
 
 @Parameters(commandDescription = "Operations on persistent topics. The 
persistent-topics "
         + "has been deprecated in favor of topics", hidden = true)
@@ -458,17 +457,12 @@ public class CmdPersistentTopics extends CmdBase {
         private String subName;
 
         @Parameter(names = { "-t", "--expireTime" }, description = "Expire 
messages older than time in seconds "
-                + "(or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)", 
required = true)
-        private String expireTimeStr;
+                + "(or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)", 
required = true,
+                converter = TimeUnitToSecondsConverter.class)
+        private Long expireTimeInSeconds;
 
         @Override
         void run() throws PulsarAdminException {
-            long expireTimeInSeconds;
-            try {
-                expireTimeInSeconds = 
RelativeTimeUtil.parseRelativeTimeInSeconds(expireTimeStr);
-            } catch (IllegalArgumentException e) {
-                throw new ParameterException(e.getMessage());
-            }
             String persistentTopic = validatePersistentTopic(params);
             getPersistentTopics().expireMessages(persistentTopic, subName, 
expireTimeInSeconds);
         }
@@ -481,17 +475,12 @@ public class CmdPersistentTopics extends CmdBase {
         private java.util.List<String> params;
 
         @Parameter(names = { "-t", "--expireTime" }, description = "Expire 
messages older than time in seconds "
-                + "(or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)", 
required = true)
-        private String expireTimeStr;
+                + "(or minutes, hours, days, weeks eg: 100m, 3h, 2d, 5w)", 
required = true,
+                converter = TimeUnitToSecondsConverter.class)
+        private Long expireTimeInSeconds;
 
         @Override
         void run() throws PulsarAdminException {
-            long expireTimeInSeconds;
-            try {
-                expireTimeInSeconds = 
RelativeTimeUtil.parseRelativeTimeInSeconds(expireTimeStr);
-            } catch (IllegalArgumentException e) {
-                throw new ParameterException(e.getMessage());
-            }
             String persistentTopic = validatePersistentTopic(params);
             
getPersistentTopics().expireMessagesForAllSubscriptions(persistentTopic, 
expireTimeInSeconds);
         }
diff --git 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTransactions.java
 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTransactions.java
index b999e30b108..279759021d8 100644
--- 
a/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTransactions.java
+++ 
b/pulsar-client-tools/src/main/java/org/apache/pulsar/admin/cli/CmdTransactions.java
@@ -19,15 +19,14 @@
 package org.apache.pulsar.admin.cli;
 
 import com.beust.jcommander.Parameter;
-import com.beust.jcommander.ParameterException;
 import com.beust.jcommander.Parameters;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
+import org.apache.pulsar.cli.converters.TimeUnitToMillisConverter;
 import org.apache.pulsar.client.admin.PulsarAdmin;
 import org.apache.pulsar.client.api.transaction.TxnID;
 import org.apache.pulsar.common.policies.data.TransactionCoordinatorInfo;
-import org.apache.pulsar.common.util.RelativeTimeUtil;
 
 @Parameters(commandDescription = "Operations on transactions")
 public class CmdTransactions extends CmdBase {
@@ -144,22 +143,17 @@ public class CmdTransactions extends CmdBase {
         private Integer coordinatorId;
 
         @Parameter(names = { "-t", "--time" }, description = "The transaction 
timeout time. "
-                + "(eg: 1s, 10s, 1m, 5h, 3d)", required = true)
-        private String timeoutStr = "1s";
+                + "(eg: 1s, 10s, 1m, 5h, 3d)", required = true,
+                converter = TimeUnitToMillisConverter.class)
+        private Long timeoutInMillis = 1L;
 
         @Override
         void run() throws Exception {
-            long timeout;
-            try {
-                timeout = 
TimeUnit.SECONDS.toMillis(RelativeTimeUtil.parseRelativeTimeInSeconds(timeoutStr));
-            } catch (IllegalArgumentException exception) {
-                throw new ParameterException(exception.getMessage());
-            }
             if (coordinatorId != null) {
                 
print(getAdmin().transactions().getSlowTransactionsByCoordinatorId(coordinatorId,
-                        timeout, TimeUnit.MILLISECONDS));
+                        timeoutInMillis, TimeUnit.MILLISECONDS));
             } else {
-                print(getAdmin().transactions().getSlowTransactions(timeout, 
TimeUnit.MILLISECONDS));
+                
print(getAdmin().transactions().getSlowTransactions(timeoutInMillis, 
TimeUnit.MILLISECONDS));
             }
         }
     }

Reply via email to