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

penghui pushed a commit to branch branch-2.10
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit de54ef6791dd329728a7c9edf5cad396f090a8b4
Author: Cong Zhao <[email protected]>
AuthorDate: Wed Jul 13 21:16:41 2022 +0800

    Fix: Make DeadLetterPolicy deserializable (#16513)
    
    (cherry picked from commit abe4350d46c7a4dc82b17f3c552d3d69c3a878f9)
---
 .../pulsar/client/api/DeadLetterTopicTest.java     | 29 ++++++++++++++++------
 .../apache/pulsar/client/api/DeadLetterPolicy.java |  4 +++
 2 files changed, 25 insertions(+), 8 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DeadLetterTopicTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DeadLetterTopicTest.java
index 03a29e1884e..2c780cc999c 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DeadLetterTopicTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/client/api/DeadLetterTopicTest.java
@@ -18,21 +18,28 @@
  */
 package org.apache.pulsar.client.api;
 
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.Assert.assertNull;
+import static org.testng.Assert.assertTrue;
+import static org.testng.Assert.fail;
 import java.time.Duration;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
-
+import lombok.Cleanup;
 import lombok.Data;
 import org.apache.avro.reflect.Nullable;
 import org.apache.pulsar.client.api.schema.GenericRecord;
-import lombok.Cleanup;
+import org.apache.pulsar.client.impl.ConsumerBuilderImpl;
 import org.apache.pulsar.client.util.RetryMessageUtil;
 import org.awaitility.Awaitility;
 import org.slf4j.Logger;
@@ -41,12 +48,6 @@ import org.testng.annotations.AfterMethod;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
 
-import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
-import static org.testng.Assert.assertNull;
-import static org.testng.Assert.assertTrue;
-import static org.testng.Assert.fail;
-
 @Test(groups = "flaky")
 public class DeadLetterTopicTest extends ProducerConsumerBase {
 
@@ -794,4 +795,16 @@ public class DeadLetterTopicTest extends 
ProducerConsumerBase {
         otherConsumer.close();
         consumer.close();
     }
+
+    @Test
+    public void testDeadLetterPolicyDeserialize() throws Exception {
+        ConsumerBuilder<String> consumerBuilder = 
pulsarClient.newConsumer(Schema.STRING);
+        DeadLetterPolicy policy =
+                
DeadLetterPolicy.builder().deadLetterTopic("a").retryLetterTopic("a").initialSubscriptionName("a")
+                        .maxRedeliverCount(1).build();
+        consumerBuilder.deadLetterPolicy(policy);
+        Map<String, Object> config = new HashMap<>();
+        consumerBuilder.loadConf(config);
+        
assertEquals(((ConsumerBuilderImpl)consumerBuilder).getConf().getDeadLetterPolicy(),
 policy);
+    }
 }
diff --git 
a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/DeadLetterPolicy.java
 
b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/DeadLetterPolicy.java
index e9982381390..ed70ca31e2c 100644
--- 
a/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/DeadLetterPolicy.java
+++ 
b/pulsar-client-api/src/main/java/org/apache/pulsar/client/api/DeadLetterPolicy.java
@@ -18,8 +18,10 @@
  */
 package org.apache.pulsar.client.api;
 
+import lombok.AllArgsConstructor;
 import lombok.Builder;
 import lombok.Data;
+import lombok.NoArgsConstructor;
 import org.apache.pulsar.common.classification.InterfaceAudience;
 import org.apache.pulsar.common.classification.InterfaceStability;
 
@@ -30,6 +32,8 @@ import 
org.apache.pulsar.common.classification.InterfaceStability;
  */
 @Builder
 @Data
+@NoArgsConstructor
+@AllArgsConstructor
 @InterfaceAudience.Public
 @InterfaceStability.Stable
 public class DeadLetterPolicy {

Reply via email to