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

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


The following commit(s) were added to refs/heads/branch-2.10 by this push:
     new 838c0c331f6 [fix] [broker] [branch-2.10] Remove the unnecessary HTTP 
response header: Content-Encoding when calling getSchema (#22307)
838c0c331f6 is described below

commit 838c0c331f6c8876c08827ac90adf3eedbf9bf8c
Author: fengyubiao <[email protected]>
AuthorDate: Wed Mar 20 13:50:54 2024 +0800

    [fix] [broker] [branch-2.10] Remove the unnecessary HTTP response header: 
Content-Encoding when calling getSchema (#22307)
---
 .../broker/admin/impl/SchemasResourceBase.java     |  5 ++-
 .../java/org/apache/pulsar/schema/SchemaTest.java  | 41 ++++++++++++++++++++++
 2 files changed, 43 insertions(+), 3 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
index b9533c6f291..5bef4ccd0aa 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/admin/impl/SchemasResourceBase.java
@@ -29,7 +29,6 @@ import java.time.Clock;
 import java.util.List;
 import java.util.stream.Collectors;
 import javax.ws.rs.container.AsyncResponse;
-import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response;
 import org.apache.pulsar.broker.admin.AdminResource;
 import 
org.apache.pulsar.broker.service.schema.SchemaRegistry.SchemaAndMetadata;
@@ -258,7 +257,7 @@ public class SchemasResourceBase extends AdminResource {
                 response.resume(Response.status(
                         Response.Status.NOT_FOUND.getStatusCode(), "Schema is 
deleted").build());
             } else {
-                
response.resume(Response.ok().encoding(MediaType.APPLICATION_JSON)
+                response.resume(Response.ok()
                         
.entity(convertSchemaAndMetadataToGetSchemaResponse(schema)).build());
             }
         } else {
@@ -275,7 +274,7 @@ public class SchemasResourceBase extends AdminResource {
                 response.resume(Response.status(
                         Response.Status.NOT_FOUND.getStatusCode(), "Schemas 
not found").build());
             } else {
-                
response.resume(Response.ok().encoding(MediaType.APPLICATION_JSON)
+                response.resume(Response.ok()
                         .entity(GetAllVersionsSchemaResponse.builder()
                                 .getSchemaResponses(schemas.stream()
                                         
.map(SchemasResourceBase::convertSchemaAndMetadataToGetSchemaResponse)
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java 
b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
index dcd6671780a..c7cbc9b92c5 100644
--- a/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
+++ b/pulsar-broker/src/test/java/org/apache/pulsar/schema/SchemaTest.java
@@ -31,6 +31,7 @@ import com.fasterxml.jackson.databind.JsonNode;
 import com.google.common.collect.Sets;
 import java.io.ByteArrayInputStream;
 import java.io.Serializable;
+import java.lang.reflect.Method;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -44,17 +45,23 @@ import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.stream.Collectors;
+import javax.ws.rs.client.InvocationCallback;
+import javax.ws.rs.client.WebTarget;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MultivaluedMap;
 import lombok.Cleanup;
 import lombok.EqualsAndHashCode;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.avro.Schema.Parser;
 import org.apache.bookkeeper.client.BKException;
 import org.apache.bookkeeper.client.BookKeeper;
+import org.apache.pulsar.broker.BrokerTestUtil;
 import org.apache.pulsar.broker.auth.MockedPulsarServiceBaseTest;
 import org.apache.pulsar.broker.service.schema.BookkeeperSchemaStorage;
 import org.apache.pulsar.broker.service.schema.SchemaRegistry;
 import org.apache.pulsar.broker.service.schema.SchemaRegistryServiceImpl;
 import org.apache.pulsar.client.admin.PulsarAdminException;
+import org.apache.pulsar.client.admin.internal.SchemasImpl;
 import org.apache.pulsar.client.api.Consumer;
 import org.apache.pulsar.client.api.Message;
 import org.apache.pulsar.client.api.Producer;
@@ -1257,6 +1264,40 @@ public class SchemaTest extends 
MockedPulsarServiceBaseTest {
         executor.shutdownNow();
     }
 
+    @Test
+    public void testHTTPGetSchema() throws Exception {
+        final String namespace = "test-namespace-" + randomName(16);
+        String ns = PUBLIC_TENANT + "/" + namespace;
+        admin.namespaces().createNamespace(ns, Sets.newHashSet(CLUSTER_NAME));
+        final String topic = BrokerTestUtil.newUniqueName("persistent://" + ns 
+ "/tp");
+        // create a schema.
+        pulsarClient.newProducer(Schema.STRING).topic(topic).create().close();
+
+        // call get schemas.
+        SchemasImpl schemas = (SchemasImpl) admin.schemas();
+        Method methodSchemasPath = 
SchemasImpl.class.getDeclaredMethod("schemasPath", new 
Class[]{TopicName.class});
+        methodSchemasPath.setAccessible(true);
+        WebTarget path = (WebTarget) methodSchemasPath.invoke(schemas, 
TopicName.get(topic));
+        CompletableFuture<javax.ws.rs.core.Response> response = new 
CompletableFuture();
+        schemas.asyncGetRequest(path, new 
InvocationCallback<javax.ws.rs.core.Response>() {
+
+            @Override
+            public void completed(javax.ws.rs.core.Response getSchemaResponse) 
{
+                response.complete(getSchemaResponse);
+            }
+
+            @Override
+            public void failed(Throwable throwable) {
+                response.completeExceptionally(throwable);
+            }
+        });
+        MultivaluedMap<String, Object> responseHeaders = 
response.join().getHeaders();
+        assertTrue(!responseHeaders.containsKey(HttpHeaders.CONTENT_ENCODING)
+                || 
!responseHeaders.get(HttpHeaders.CONTENT_ENCODING).toString().contains("application/json"));
+        assertTrue(responseHeaders.containsKey(HttpHeaders.CONTENT_TYPE)
+                && 
responseHeaders.get(HttpHeaders.CONTENT_TYPE).toString().contains("application/json"));
+    }
+
     @EqualsAndHashCode
     static class User implements Serializable {
         private String name;

Reply via email to