public class BinderHeaderMapper
extends org.springframework.kafka.support.AbstractKafkaHeaderMapper
DefaultKafkaHeaderMapper
from spring Kafka. This is provided for addressing some interoperability issues between Spring Cloud Stream 3.0.x
and 2.x apps, where mime types passed as regular MimeType in the header are not de-serialized properly.
It also suppresses certain internal headers that should never be propagated on output.
Most headers in KafkaHeaders are not mapped onto outbound messages.
The exceptions are correlation and reply headers for request/reply
messaging.
Header types are added to a special header JSON_TYPES.| Modifier and Type | Class and Description |
|---|---|
static class |
BinderHeaderMapper.NonTrustedHeaderType
Represents a header that could not be decoded due to an untrusted type.
|
org.springframework.kafka.support.AbstractKafkaHeaderMapper.HeaderMatcher, org.springframework.kafka.support.AbstractKafkaHeaderMapper.NeverMatchHeaderMatcher, org.springframework.kafka.support.AbstractKafkaHeaderMapper.SimplePatternBasedHeaderMatcher| Modifier and Type | Field and Description |
|---|---|
static String |
JSON_TYPES
Header name for java types of other headers.
|
| Constructor and Description |
|---|
BinderHeaderMapper()
Construct an instance with the default object mapper and default header patterns
for outbound headers; all inbound headers are mapped.
|
BinderHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
Construct an instance with the provided object mapper and default header patterns
for outbound headers; all inbound headers are mapped.
|
BinderHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
String... patterns)
Construct an instance with the provided object mapper and the provided header
patterns for outbound headers; all inbound headers are mapped.
|
BinderHeaderMapper(String... patterns)
Construct an instance with a default object mapper and the provided header patterns
for outbound headers; all inbound headers are mapped.
|
| Modifier and Type | Method and Description |
|---|---|
static String[] |
addNeverHeaderPatterns(List<String> patterns)
Add patterns for headers that should never be mapped.
|
void |
addToStringClasses(String... classNames)
Add class names that the outbound mapper should perform toString() operations on
before mapping.
|
void |
addTrustedPackages(String... packagesToTrust)
Add packages to the trusted packages list (default
java.util, java.lang) used
when constructing objects from JSON. |
void |
fromHeaders(org.springframework.messaging.MessageHeaders headers,
org.apache.kafka.common.header.Headers target) |
protected com.fasterxml.jackson.databind.ObjectMapper |
getObjectMapper()
Return the object mapper.
|
protected Set<String> |
getToStringClasses()
Provide direct access to the toString() classes by subclasses.
|
protected Set<String> |
getTrustedPackages()
Provide direct access to the trusted packages set for subclasses.
|
protected boolean |
isEncodeStrings() |
static void |
removeNeverHeaders(org.apache.kafka.common.header.Headers headers)
Remove never headers.
|
void |
setEncodeStrings(boolean encodeStrings)
Set to true to encode String-valued headers as JSON ("..."), by default just the
raw String value is converted to a byte array using the configured charset.
|
void |
toHeaders(org.apache.kafka.common.header.Headers source,
Map<String,Object> headers) |
protected boolean |
trusted(String requestedType) |
public static final String JSON_TYPES
public BinderHeaderMapper()
"!id", "!timestamp" and "*". In addition, most of the headers in
KafkaHeaders are never mapped as headers since they represent data in
consumer/producer records.BinderHeaderMapper(ObjectMapper)public BinderHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper)
"!id", "!timestamp" and "*". In addition, most of the headers in
KafkaHeaders are never mapped as headers since they represent data in
consumer/producer records.objectMapper - the object mapper.PatternMatchUtils.simpleMatch(String, String)public BinderHeaderMapper(String... patterns)
"id" and "timestamp" headers. Note:
most of the headers in KafkaHeaders are ever mapped as headers since they
represent data in consumer/producer records.patterns - the patterns.PatternMatchUtils.simpleMatch(String, String)public BinderHeaderMapper(com.fasterxml.jackson.databind.ObjectMapper objectMapper,
String... patterns)
"id" and "timestamp" headers. Note: most
of the headers in KafkaHeaders are never mapped as headers since they
represent data in consumer/producer records.objectMapper - the object mapper.patterns - the patterns.PatternMatchUtils.simpleMatch(String, String)protected com.fasterxml.jackson.databind.ObjectMapper getObjectMapper()
protected Set<String> getTrustedPackages()
protected Set<String> getToStringClasses()
protected boolean isEncodeStrings()
public void setEncodeStrings(boolean encodeStrings)
encodeStrings - true to encode (default false).public void addTrustedPackages(String... packagesToTrust)
java.util, java.lang) used
when constructing objects from JSON.
If any of the supplied packages is "*", all packages are trusted.
If a class for a non-trusted package is encountered, the header is returned to the
application with value of type BinderHeaderMapper.NonTrustedHeaderType.packagesToTrust - the packages to trust.public void addToStringClasses(String... classNames)
classNames - the class names.public void fromHeaders(org.springframework.messaging.MessageHeaders headers,
org.apache.kafka.common.header.Headers target)
public void toHeaders(org.apache.kafka.common.header.Headers source,
Map<String,Object> headers)
protected boolean trusted(String requestedType)
public static String[] addNeverHeaderPatterns(List<String> patterns)
patterns - the patterns.public static void removeNeverHeaders(org.apache.kafka.common.header.Headers headers)
headers - the headers from which to remove the never headers.Copyright © 2022 Pivotal Software, Inc.. All rights reserved.