|
@@ -1,6 +1,7 @@
|
|
|
package com.provectus.kafka.ui.serdes;
|
|
|
|
|
|
import com.provectus.kafka.ui.model.TopicMessageDTO;
|
|
|
+import com.provectus.kafka.ui.model.TopicMessageDTO.TimestampTypeEnum;
|
|
|
import com.provectus.kafka.ui.serde.api.Serde;
|
|
|
import java.time.Instant;
|
|
|
import java.time.OffsetDateTime;
|
|
@@ -8,6 +9,7 @@ import java.time.ZoneId;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.Map;
|
|
|
+import java.util.function.UnaryOperator;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.kafka.clients.consumer.ConsumerRecord;
|
|
@@ -32,6 +34,8 @@ public class ConsumerRecordDeserializer {
|
|
|
private final Serde.Deserializer fallbackKeyDeserializer;
|
|
|
private final Serde.Deserializer fallbackValueDeserializer;
|
|
|
|
|
|
+ private final UnaryOperator<TopicMessageDTO> masker;
|
|
|
+
|
|
|
public TopicMessageDTO deserialize(ConsumerRecord<Bytes, Bytes> rec) {
|
|
|
var message = new TopicMessageDTO();
|
|
|
fillKey(message, rec);
|
|
@@ -47,20 +51,15 @@ public class ConsumerRecordDeserializer {
|
|
|
message.setValueSize(getValueSize(rec));
|
|
|
message.setHeadersSize(getHeadersSize(rec));
|
|
|
|
|
|
- return message;
|
|
|
+ return masker.apply(message);
|
|
|
}
|
|
|
|
|
|
- private static TopicMessageDTO.TimestampTypeEnum mapToTimestampType(TimestampType timestampType) {
|
|
|
- switch (timestampType) {
|
|
|
- case CREATE_TIME:
|
|
|
- return TopicMessageDTO.TimestampTypeEnum.CREATE_TIME;
|
|
|
- case LOG_APPEND_TIME:
|
|
|
- return TopicMessageDTO.TimestampTypeEnum.LOG_APPEND_TIME;
|
|
|
- case NO_TIMESTAMP_TYPE:
|
|
|
- return TopicMessageDTO.TimestampTypeEnum.NO_TIMESTAMP_TYPE;
|
|
|
- default:
|
|
|
- throw new IllegalArgumentException("Unknown timestampType: " + timestampType);
|
|
|
- }
|
|
|
+ private static TimestampTypeEnum mapToTimestampType(TimestampType timestampType) {
|
|
|
+ return switch (timestampType) {
|
|
|
+ case CREATE_TIME -> TimestampTypeEnum.CREATE_TIME;
|
|
|
+ case LOG_APPEND_TIME -> TimestampTypeEnum.LOG_APPEND_TIME;
|
|
|
+ case NO_TIMESTAMP_TYPE -> TimestampTypeEnum.NO_TIMESTAMP_TYPE;
|
|
|
+ };
|
|
|
}
|
|
|
|
|
|
private void fillHeaders(TopicMessageDTO message, ConsumerRecord<Bytes, Bytes> rec) {
|