From e95a49e4ce6412ed75b3182db200a3be9b0bd208 Mon Sep 17 00:00:00 2001 From: Deepankar Dixit <90280028+ddixit14@users.noreply.github.com> Date: Fri, 7 Jan 2022 15:59:05 -0500 Subject: [PATCH] Exclude all attributes starting with "goog_" from outbound Pub/Sub headers (#845) * migrating the test * Fixing issue #776 --- .../pubsub/integration/PubSubHeaderMapper.java | 1 + .../pubsub/support/GcpPubSubHeaders.java | 5 ++++- .../integration/PubSubHeaderMapperTests.java | 18 ++++++++++++++++++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java index c421aaa352..e73aac5a4e 100644 --- a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java +++ b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapper.java @@ -46,6 +46,7 @@ public class PubSubHeaderMapper implements HeaderMapper> { "!" + MessageHeaders.ID, "!" + MessageHeaders.TIMESTAMP, "!" + GcpPubSubHeaders.ORIGINAL_MESSAGE, + "!" + GcpPubSubHeaders.CLIENT, "!" + NativeMessageHeaderAccessor.NATIVE_HEADERS, "!" + MessageHistory.HEADER_NAME, "*" diff --git a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java index ba058e1224..aba17709da 100644 --- a/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java +++ b/spring-cloud-gcp-pubsub/src/main/java/com/google/cloud/spring/pubsub/support/GcpPubSubHeaders.java @@ -28,6 +28,9 @@ private GcpPubSubHeaders() {} private static final String PREFIX = "gcp_pubsub_"; + /** The client header text. */ + public static final String CLIENT = "googclient_*"; + /** The topic header text. */ public static final String TOPIC = PREFIX + "topic"; @@ -42,7 +45,7 @@ private GcpPubSubHeaders() {} * Message}. * * @param message The Spring Message that was converted by a {@link - * com.google.cloud.spring.pubsub.integration.inbound.PubSubInboundChannelAdapter}. + * com.google.cloud.spring.pubsub.integration.inbound.PubSubInboundChannelAdapter}. * @return An Optional possibly containing a BasicAcknowledgeablePubsubMessage for acking and * nacking. */ diff --git a/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java b/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java index 5c14dc9363..e03b31879b 100644 --- a/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java +++ b/spring-cloud-gcp-pubsub/src/test/java/com/google/cloud/spring/pubsub/integration/PubSubHeaderMapperTests.java @@ -35,6 +35,24 @@ public class PubSubHeaderMapperTests { /** used to check for exception messages and types. */ @Rule public ExpectedException expectedException = ExpectedException.none(); + @Test + public void testFilterGoogleClientHeaders() { + PubSubHeaderMapper mapper = new PubSubHeaderMapper(); + Map originalHeaders = new HashMap<>(); + originalHeaders.put("my header", "pantagruel's nativity"); + MessageHeaders internalHeaders = new MessageHeaders(originalHeaders); + + originalHeaders.put("googclient_deliveryattempt", "header attached when DLQ is enabled"); + originalHeaders.put("googclient_anyHeader", "any other possible headers"); + + Map filteredHeaders = new HashMap<>(); + mapper.fromHeaders(internalHeaders, filteredHeaders); + assertThat(filteredHeaders) + .hasSize(1) + .containsEntry("my header", "pantagruel's nativity"); + } + + @Test public void testFilterHeaders() { PubSubHeaderMapper mapper = new PubSubHeaderMapper();