|
1 | 1 | package dev.dochia.cli.core.playbook.field; |
2 | 2 |
|
3 | | -import dev.dochia.cli.core.playbook.api.FieldPlaybook; |
4 | 3 | import dev.dochia.cli.core.context.GlobalContext; |
| 4 | +import dev.dochia.cli.core.model.PlaybookData; |
| 5 | +import dev.dochia.cli.core.playbook.api.FieldPlaybook; |
5 | 6 | import dev.dochia.cli.core.playbook.executor.FieldsIteratorExecutor; |
6 | 7 | import dev.dochia.cli.core.playbook.field.base.BaseReplaceFieldsPlaybook; |
7 | | -import dev.dochia.cli.core.model.PlaybookData; |
8 | 8 | import dev.dochia.cli.core.util.JsonUtils; |
9 | 9 | import jakarta.inject.Singleton; |
10 | 10 |
|
@@ -32,12 +32,15 @@ protected SwapDiscriminatorValuesFieldsPlaybook(FieldsIteratorExecutor ce, Globa |
32 | 32 |
|
33 | 33 | @Override |
34 | 34 | public BaseReplaceFieldsPlaybook.BaseReplaceFieldsContext getContext(PlaybookData data) { |
| 35 | + Predicate<String> isFieldInJson = field -> JsonUtils.isFieldInJson(data.getPayload(), field); |
| 36 | + Predicate<String> isFieldDiscriminator = globalContext::isDiscriminator; |
| 37 | + |
35 | 38 | return BaseReplaceFieldsPlaybook.BaseReplaceFieldsContext.builder() |
36 | 39 | .replaceWhat("discriminator") |
37 | 40 | .replaceWith("swapped values") |
38 | 41 | .skipMessage("Playbook only runs for discriminator fields") |
39 | | - .fieldFilter(globalContext::isDiscriminator) |
40 | | - .fuzzValueProducer((schema, field) -> { |
| 42 | + .fieldFilter(isFieldDiscriminator.and(isFieldInJson)) |
| 43 | + .fuzzValueProducer((_, field) -> { |
41 | 44 | String oldValue = String.valueOf(JsonUtils.getVariableFromJson(data.getPayload(), field)); |
42 | 45 | return globalContext.getDiscriminatorValues().getOrDefault(field, Set.of()).stream() |
43 | 46 | .filter(Predicate.not(oldValue::equals)) |
|
0 commit comments