Skip to content

Commit d87b198

Browse files
authored
Update Replace.java
1 parent 714cf67 commit d87b198

File tree

1 file changed

+12
-25
lines changed
  • kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies

1 file changed

+12
-25
lines changed

kafka-ui-api/src/main/java/com/provectus/kafka/ui/service/masking/policies/Replace.java

Lines changed: 12 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,17 @@
55
import com.fasterxml.jackson.databind.node.ContainerNode;
66
import com.fasterxml.jackson.databind.node.ObjectNode;
77
import com.fasterxml.jackson.databind.node.TextNode;
8-
import com.google.common.base.Preconditions;
8+
import java.util.Set;
99

1010
class Replace extends MaskingPolicy {
1111

12-
static final String DEFAULT_REPLACEMENT = "***DATA_MASKED***";
13-
1412
private final String replacement;
1513

16-
Replace(FieldsSelector fieldsSelector, String replacementString) {
14+
static final String DEFAULT_REPLACEMENT = "ANONYMIZED";
15+
16+
Replace(FieldsSelector fieldsSelector, String replacement) {
1717
super(fieldsSelector);
18-
this.replacement = Preconditions.checkNotNull(replacementString);
18+
this.replacement = replacement;
1919
}
2020

2121
@Override
@@ -24,42 +24,29 @@ public String applyToString(String str) {
2424
}
2525

2626
@Override
27-
public ContainerNode<?> applyToJsonContainer(ContainerNode<?> node) {
28-
return (ContainerNode<?>) replaceWithFieldsCheck(node);
27+
public ContainerNode<?> applyToJsonContainer(ContainerNode<?> node, Set<String> maskedFields) {
28+
return (ContainerNode<?>) replaceFields(node, maskedFields);
2929
}
3030

31-
private JsonNode replaceWithFieldsCheck(JsonNode node) {
31+
private JsonNode replaceFields(JsonNode node, Set<String> maskedFields) {
3232
if (node.isObject()) {
3333
ObjectNode obj = ((ObjectNode) node).objectNode();
3434
node.fields().forEachRemaining(f -> {
3535
String fieldName = f.getKey();
3636
JsonNode fieldVal = f.getValue();
3737
if (fieldShouldBeMasked(fieldName)) {
38-
obj.set(fieldName, replaceRecursive(fieldVal));
38+
maskedFields.add(fieldName); // ✅ track replaced field
39+
obj.set(fieldName, new TextNode(replacement));
3940
} else {
40-
obj.set(fieldName, replaceWithFieldsCheck(fieldVal));
41+
obj.set(fieldName, replaceFields(fieldVal, maskedFields));
4142
}
4243
});
4344
return obj;
4445
} else if (node.isArray()) {
4546
ArrayNode arr = ((ArrayNode) node).arrayNode(node.size());
46-
node.elements().forEachRemaining(e -> arr.add(replaceWithFieldsCheck(e)));
47+
node.elements().forEachRemaining(e -> arr.add(replaceFields(e, maskedFields)));
4748
return arr;
4849
}
49-
// if it is not an object or array - we have nothing to replace here
5050
return node;
5151
}
52-
53-
private JsonNode replaceRecursive(JsonNode node) {
54-
if (node.isObject()) {
55-
ObjectNode obj = ((ObjectNode) node).objectNode();
56-
node.fields().forEachRemaining(f -> obj.set(f.getKey(), replaceRecursive(f.getValue())));
57-
return obj;
58-
} else if (node.isArray()) {
59-
ArrayNode arr = ((ArrayNode) node).arrayNode(node.size());
60-
node.elements().forEachRemaining(e -> arr.add(replaceRecursive(e)));
61-
return arr;
62-
}
63-
return new TextNode(replacement);
64-
}
6552
}

0 commit comments

Comments
 (0)