Skip to content

Commit a820953

Browse files
committed
Add specific configurations for Partial[Key|Value]Strategies
Added `document.id.strategy.partial.key.` configurations and `document.id.strategy.partial.value.` configurations. So that users can both project fields as part of the Id Strategy as well as project any fields they want to store. KAFKA-75
1 parent 1f021f7 commit a820953

File tree

8 files changed

+159
-21
lines changed

8 files changed

+159
-21
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@
1414
- [KAFKA-112](https://jira.mongodb.org/browse/KAFKA-112) Added `BlockList` and `AllowList` field projector type configurations and
1515
`BlockListKeyProjector`, `BlockListValueProjector`, `AllowListKeyProjector`and `AllowListValueProjector` Post processors.
1616
Deprecated: `BlacklistKeyProjector`, `BlacklistValueProjector`, `WhitelistKeyProjector` and `WhitelistValueProjector`.
17+
- [KAFKA-75](https://jira.mongodb.org/browse/KAFKA-75) Added specific configuration for the id strategies: `ProvidedInKeyStrategy` and `ProvidedInValueStrategy`.
18+
Added `document.id.strategy.partial.value.projection.type`, `document.id.strategy.partial.value.projection.list`,
19+
`document.id.strategy.partial.key.projection.type` and `document.id.strategy.partial.key.projection.list`.
1720

1821
## 1.1.0
1922
- [KAFKA-45](https://jira.mongodb.org/browse/KAFKA-45) Allow the Sink connector to ignore unused source record key or value fields.

src/main/java/com/mongodb/kafka/connect/sink/MongoSinkTopicConfig.java

Lines changed: 93 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,49 @@ public enum UuidBsonFormat {
116116
private static final String DOCUMENT_ID_STRATEGY_UUID_FORMAT_DISPLAY =
117117
"The document id strategy uuid format";
118118
private static final String DOCUMENT_ID_STRATEGY_UUID_FORMAT_DOC =
119-
"The bson output format when using the `UuidStrategy`.";
119+
"The bson output format when using the `UuidStrategy`. " + "Either `String` or `Binary`.";
120120
private static final String DOCUMENT_ID_STRATEGY_UUID_FORMAT_DEFAULT = "string";
121121

122+
public static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG =
123+
"document.id.strategy.partial.key.projection.type";
124+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DISPLAY =
125+
"The document id strategy key projection";
126+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DOC =
127+
"For use with the `PartialKeyStrategy` allows custom key fields to be projected for the id strategy "
128+
+ "Use either `AllowList` or `BlockList`.";
129+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DEFAULT = "";
130+
131+
public static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG =
132+
"document.id.strategy.partial.key.projection.list";
133+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DISPLAY =
134+
"The document id strategy key projection list";
135+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DOC =
136+
"For use with the `PartialKeyStrategy` allows custom key fields to be projected for the id strategy. "
137+
+ "A comma separated list of field names for key projection.";
138+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DEFAULT = "";
139+
140+
public static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG =
141+
"document.id.strategy.partial.value.projection.type";
142+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DISPLAY =
143+
"The document id strategy value projection";
144+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DOC =
145+
"For use with the `PartialValueStrategy` allows custom value fields to be projected for the id strategy. "
146+
+ "Use either `AllowList` or `BlockList`.";
147+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DEFAULT = "";
148+
149+
public static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG =
150+
"document.id.strategy.partial.value.projection.list";
151+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DISPLAY =
152+
"The document id strategy value projection list";
153+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DOC =
154+
"For use with the `PartialValueStrategy` allows custom value fields to be projected for the id strategy. "
155+
+ "A comma separated list of field names for value projection.";
156+
private static final String DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DEFAULT = "";
157+
122158
public static final String KEY_PROJECTION_TYPE_CONFIG = "key.projection.type";
123159
private static final String KEY_PROJECTION_TYPE_DISPLAY = "The key projection type";
124-
private static final String KEY_PROJECTION_TYPE_DOC = "The type of key projection to use";
160+
private static final String KEY_PROJECTION_TYPE_DOC =
161+
"The type of key projection to use " + "Use either `AllowList` or `BlockList`.";
125162
private static final String KEY_PROJECTION_TYPE_DEFAULT = "none";
126163

127164
public static final String KEY_PROJECTION_LIST_CONFIG = "key.projection.list";
@@ -131,7 +168,8 @@ public enum UuidBsonFormat {
131168
private static final String KEY_PROJECTION_LIST_DEFAULT = "";
132169

133170
public static final String VALUE_PROJECTION_TYPE_CONFIG = "value.projection.type";
134-
private static final String VALUE_PROJECTION_TYPE_DISPLAY = "The type of value projection to use";
171+
private static final String VALUE_PROJECTION_TYPE_DISPLAY =
172+
"The type of value projection to use " + "Use either `AllowList` or `BlockList`.";
135173
private static final String VALUE_PROJECTION_TYPE_DOC = "The type of value projection to use";
136174
private static final String VALUE_PROJECTION_TYPE_DEFAULT = "none";
137175

@@ -703,6 +741,58 @@ private static ConfigDef createConfigDef() {
703741
DOCUMENT_ID_STRATEGY_UUID_FORMAT_DISPLAY,
704742
Validators.EnumValidatorAndRecommender.in(UuidBsonFormat.values()));
705743

744+
configDef.define(
745+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG,
746+
ConfigDef.Type.STRING,
747+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DEFAULT,
748+
Validators.emptyString()
749+
.or(Validators.EnumValidatorAndRecommender.in(FieldProjectionType.values())),
750+
ConfigDef.Importance.LOW,
751+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DOC,
752+
group,
753+
++orderInGroup,
754+
ConfigDef.Width.MEDIUM,
755+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_DISPLAY,
756+
Validators.EnumValidatorAndRecommender.in(FieldProjectionType.values()));
757+
758+
configDef.define(
759+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG,
760+
ConfigDef.Type.STRING,
761+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DEFAULT,
762+
ConfigDef.Importance.LOW,
763+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DOC,
764+
group,
765+
++orderInGroup,
766+
ConfigDef.Width.MEDIUM,
767+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_DISPLAY,
768+
singletonList(DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG));
769+
770+
configDef.define(
771+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG,
772+
ConfigDef.Type.STRING,
773+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DEFAULT,
774+
Validators.emptyString()
775+
.or(Validators.EnumValidatorAndRecommender.in(FieldProjectionType.values())),
776+
ConfigDef.Importance.LOW,
777+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DOC,
778+
group,
779+
++orderInGroup,
780+
ConfigDef.Width.MEDIUM,
781+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_DISPLAY,
782+
Validators.EnumValidatorAndRecommender.in(FieldProjectionType.values()));
783+
784+
configDef.define(
785+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG,
786+
ConfigDef.Type.STRING,
787+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DEFAULT,
788+
ConfigDef.Importance.LOW,
789+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DOC,
790+
group,
791+
++orderInGroup,
792+
ConfigDef.Width.MEDIUM,
793+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_DISPLAY,
794+
singletonList(DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG));
795+
706796
group = "Change Data Capture";
707797
orderInGroup = 0;
708798
configDef.define(

src/main/java/com/mongodb/kafka/connect/sink/processor/id/strategy/PartialKeyStrategy.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919
package com.mongodb.kafka.connect.sink.processor.id.strategy;
2020

2121
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_CONFIG;
22+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG;
23+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG;
2224
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.ALLOWLIST;
2325
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.BLOCKLIST;
2426
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.KEY_PROJECTION_LIST_CONFIG;
2527
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.KEY_PROJECTION_TYPE_CONFIG;
28+
import static com.mongodb.kafka.connect.util.ConfigHelper.getOverrideOrDefault;
2629
import static java.lang.String.format;
2730

2831
import org.apache.kafka.connect.sink.SinkRecord;
@@ -39,6 +42,7 @@
3942
import com.mongodb.kafka.connect.util.ConnectConfigException;
4043

4144
public class PartialKeyStrategy implements IdStrategy {
45+
4246
private FieldProjector fieldProjector;
4347

4448
public PartialKeyStrategy() {}
@@ -47,7 +51,7 @@ public PartialKeyStrategy() {}
4751
public BsonValue generateId(final SinkDocument doc, final SinkRecord orig) {
4852
// NOTE: this has to operate on a clone because
4953
// otherwise it would interfere with further projections
50-
// happening later in the chain e.g. for value fields
54+
// happening later in the chain e.g. for key fields
5155
SinkDocument clone = doc.clone();
5256
fieldProjector.process(clone, orig);
5357
// NOTE: If there is no key doc present the strategy
@@ -62,9 +66,17 @@ public FieldProjector getFieldProjector() {
6266
@Override
6367
public void configure(final MongoSinkTopicConfig config) {
6468
FieldProjectionType keyProjectionType =
65-
FieldProjectionType.valueOf(config.getString(KEY_PROJECTION_TYPE_CONFIG).toUpperCase());
66-
67-
String fieldList = config.getString(KEY_PROJECTION_LIST_CONFIG);
69+
FieldProjectionType.valueOf(
70+
getOverrideOrDefault(
71+
config,
72+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG,
73+
KEY_PROJECTION_TYPE_CONFIG)
74+
.toUpperCase());
75+
String fieldList =
76+
getOverrideOrDefault(
77+
config,
78+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG,
79+
KEY_PROJECTION_LIST_CONFIG);
6880

6981
switch (keyProjectionType) {
7082
case BLACKLIST:

src/main/java/com/mongodb/kafka/connect/sink/processor/id/strategy/PartialValueStrategy.java

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,13 @@
1919
package com.mongodb.kafka.connect.sink.processor.id.strategy;
2020

2121
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_CONFIG;
22+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG;
23+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG;
2224
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.ALLOWLIST;
2325
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.BLOCKLIST;
2426
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.VALUE_PROJECTION_LIST_CONFIG;
2527
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.VALUE_PROJECTION_TYPE_CONFIG;
28+
import static com.mongodb.kafka.connect.util.ConfigHelper.getOverrideOrDefault;
2629
import static java.lang.String.format;
2730

2831
import org.apache.kafka.connect.sink.SinkRecord;
@@ -39,6 +42,7 @@
3942
import com.mongodb.kafka.connect.util.ConnectConfigException;
4043

4144
public class PartialValueStrategy implements IdStrategy {
45+
4246
private FieldProjector fieldProjector;
4347

4448
public PartialValueStrategy() {}
@@ -62,9 +66,17 @@ public FieldProjector getFieldProjector() {
6266
@Override
6367
public void configure(final MongoSinkTopicConfig config) {
6468
FieldProjectionType valueProjectionType =
65-
FieldProjectionType.valueOf(config.getString(VALUE_PROJECTION_TYPE_CONFIG).toUpperCase());
66-
67-
String fieldList = config.getString(VALUE_PROJECTION_LIST_CONFIG);
69+
FieldProjectionType.valueOf(
70+
getOverrideOrDefault(
71+
config,
72+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG,
73+
VALUE_PROJECTION_TYPE_CONFIG)
74+
.toUpperCase());
75+
String fieldList =
76+
getOverrideOrDefault(
77+
config,
78+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG,
79+
VALUE_PROJECTION_LIST_CONFIG);
6880

6981
switch (valueProjectionType) {
7082
case BLACKLIST:

src/main/java/com/mongodb/kafka/connect/sink/processor/id/strategy/UuidStrategy.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,16 @@
3030
import org.bson.UuidRepresentation;
3131

3232
import com.mongodb.kafka.connect.sink.MongoSinkTopicConfig;
33+
import com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.UuidBsonFormat;
3334
import com.mongodb.kafka.connect.sink.converter.SinkDocument;
3435

3536
public class UuidStrategy implements IdStrategy {
36-
private MongoSinkTopicConfig.UuidBsonFormat outputFormat;
37+
private UuidBsonFormat outputFormat;
3738

3839
@Override
3940
public BsonValue generateId(final SinkDocument doc, final SinkRecord orig) {
4041
UUID uuid = UUID.randomUUID();
41-
if (outputFormat.equals(MongoSinkTopicConfig.UuidBsonFormat.STRING)) {
42+
if (outputFormat.equals(UuidBsonFormat.STRING)) {
4243
return new BsonString(uuid.toString());
4344
}
4445

@@ -48,7 +49,7 @@ public BsonValue generateId(final SinkDocument doc, final SinkRecord orig) {
4849
@Override
4950
public void configure(final MongoSinkTopicConfig configuration) {
5051
outputFormat =
51-
MongoSinkTopicConfig.UuidBsonFormat.valueOf(
52+
UuidBsonFormat.valueOf(
5253
configuration.getString(DOCUMENT_ID_STRATEGY_UUID_FORMAT_CONFIG).toUpperCase());
5354
}
5455
}

src/main/java/com/mongodb/kafka/connect/util/ConfigHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.List;
2121
import java.util.Optional;
2222

23+
import org.apache.kafka.common.config.AbstractConfig;
2324
import org.apache.kafka.common.config.ConfigException;
2425

2526
import org.bson.Document;
@@ -105,4 +106,13 @@ public static MongoDriverInformation getMongoDriverInformation(final String type
105106
.driverVersion(Versions.VERSION)
106107
.build();
107108
}
109+
110+
public static String getOverrideOrDefault(
111+
final AbstractConfig config, final String overrideConfig, final String defaultConfig) {
112+
String stringConfig = config.getString(overrideConfig);
113+
if (stringConfig.isEmpty()) {
114+
stringConfig = config.getString(defaultConfig);
115+
}
116+
return stringConfig;
117+
}
108118
}

src/test/java/com/mongodb/kafka/connect/sink/processor/DocumentIdAdderTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
package com.mongodb.kafka.connect.sink.processor;
2020

21+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_OVERWRITE_EXISTING_CONFIG;
2122
import static com.mongodb.kafka.connect.sink.SinkTestHelper.createTopicConfig;
2223
import static org.junit.jupiter.api.Assertions.assertAll;
2324
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -31,7 +32,6 @@
3132

3233
import org.bson.BsonDocument;
3334

34-
import com.mongodb.kafka.connect.sink.MongoSinkTopicConfig;
3535
import com.mongodb.kafka.connect.sink.converter.SinkDocument;
3636

3737
@RunWith(JUnitPlatform.class)
@@ -75,9 +75,7 @@ void testDocumentIdAdderOverwriteExistingConfiguration() {
7575
sinkDocWithValueDoc.getValueDoc().orElseGet(BsonDocument::new).get("_id").isInt32(),
7676
"default id strategy ignores existing _id values");
7777

78-
new DocumentIdAdder(
79-
createTopicConfig(
80-
MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_OVERWRITE_EXISTING_CONFIG, "true"))
78+
new DocumentIdAdder(createTopicConfig(DOCUMENT_ID_STRATEGY_OVERWRITE_EXISTING_CONFIG, "true"))
8179
.process(sinkDocWithValueDoc, null);
8280

8381
assertTrue(

src/test/java/com/mongodb/kafka/connect/sink/processor/id/strategy/IdStrategyTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@
1818

1919
package com.mongodb.kafka.connect.sink.processor.id.strategy;
2020

21+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG;
22+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG;
23+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG;
24+
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG;
2125
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.DOCUMENT_ID_STRATEGY_UUID_FORMAT_CONFIG;
2226
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.ALLOWLIST;
2327
import static com.mongodb.kafka.connect.sink.MongoSinkTopicConfig.FieldProjectionType.BLACKLIST;
@@ -279,7 +283,9 @@ void testPartialKeyStrategyBlockList() {
279283
createTopicConfig(
280284
format(
281285
"{'%s': '%s', '%s': 'keyPart1'}",
282-
KEY_PROJECTION_TYPE_CONFIG, BLOCKLIST, KEY_PROJECTION_LIST_CONFIG));
286+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG,
287+
BLOCKLIST,
288+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG));
283289

284290
IdStrategy ids = new PartialKeyStrategy();
285291
ids.configure(cfg);
@@ -303,7 +309,9 @@ void testPartialKeyStrategyAllowList() {
303309
createTopicConfig(
304310
format(
305311
"{'%s': '%s', '%s': 'keyPart1'}",
306-
KEY_PROJECTION_TYPE_CONFIG, ALLOWLIST, KEY_PROJECTION_LIST_CONFIG));
312+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_TYPE_CONFIG,
313+
ALLOWLIST,
314+
DOCUMENT_ID_STRATEGY_PARTIAL_KEY_PROJECTION_LIST_CONFIG));
307315

308316
IdStrategy ids = new PartialKeyStrategy();
309317
ids.configure(cfg);
@@ -328,7 +336,9 @@ void testPartialValueStrategyBlockList() {
328336
createTopicConfig(
329337
format(
330338
"{'%s': '%s', '%s': 'valuePart1'}",
331-
VALUE_PROJECTION_TYPE_CONFIG, BLOCKLIST, VALUE_PROJECTION_LIST_CONFIG));
339+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG,
340+
BLOCKLIST,
341+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG));
332342

333343
IdStrategy ids = new PartialValueStrategy();
334344
ids.configure(cfg);
@@ -353,7 +363,9 @@ void testPartialValueStrategyAllowList() {
353363
createTopicConfig(
354364
format(
355365
"{'%s': '%s', '%s': 'valuePart1'}",
356-
VALUE_PROJECTION_TYPE_CONFIG, ALLOWLIST, VALUE_PROJECTION_LIST_CONFIG));
366+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_TYPE_CONFIG,
367+
ALLOWLIST,
368+
DOCUMENT_ID_STRATEGY_PARTIAL_VALUE_PROJECTION_LIST_CONFIG));
357369

358370
IdStrategy ids = new PartialValueStrategy();
359371
ids.configure(cfg);

0 commit comments

Comments
 (0)