|
25 | 25 | import co.elastic.clients.json.JsonpSerializable; |
26 | 26 | import co.elastic.clients.json.JsonpUtils; |
27 | 27 | import co.elastic.clients.json.ObjectDeserializer; |
28 | | -import co.elastic.clients.json.UnionDeserializer; |
29 | 28 | import co.elastic.clients.util.ApiTypeHelper; |
30 | 29 | import co.elastic.clients.util.ObjectBuilder; |
31 | 30 | import co.elastic.clients.util.ObjectBuilderBase; |
32 | 31 | import co.elastic.clients.util.TaggedUnion; |
33 | 32 | import co.elastic.clients.util.TaggedUnionUtils; |
34 | 33 | import jakarta.json.stream.JsonGenerator; |
| 34 | +import jakarta.json.stream.JsonParser; |
35 | 35 | import java.lang.Boolean; |
36 | 36 | import java.lang.Object; |
| 37 | +import java.util.EnumSet; |
| 38 | +import java.util.List; |
37 | 39 | import java.util.Objects; |
38 | 40 | import java.util.function.Function; |
39 | 41 | import javax.annotation.Nullable; |
@@ -181,12 +183,23 @@ public SourceConfig build() { |
181 | 183 |
|
182 | 184 | } |
183 | 185 |
|
184 | | - private static JsonpDeserializer<SourceConfig> buildSourceConfigDeserializer() { |
185 | | - return new UnionDeserializer.Builder<SourceConfig, Kind, Object>(SourceConfig::new, false) |
186 | | - .addMember(Kind.Filter, SourceFilter._DESERIALIZER) |
187 | | - .addMember(Kind.Fetch, JsonpDeserializer.booleanDeserializer()).build(); |
188 | | - } |
189 | | - |
190 | 186 | public static final JsonpDeserializer<SourceConfig> _DESERIALIZER = JsonpDeserializer |
191 | | - .lazy(SourceConfig::buildSourceConfigDeserializer); |
| 187 | + .lazy(() -> JsonpDeserializer.of(EnumSet.of(JsonParser.Event.START_OBJECT, JsonParser.Event.START_ARRAY, |
| 188 | + JsonParser.Event.VALUE_TRUE, JsonParser.Event.VALUE_FALSE), (parser, mapper, event) -> { |
| 189 | + return switch (event) { |
| 190 | + case VALUE_TRUE -> SourceConfig.of(b -> b.fetch(true)); |
| 191 | + case VALUE_FALSE -> SourceConfig.of(b -> b.fetch(false)); |
| 192 | + case START_ARRAY -> { |
| 193 | + List<String> includes = JsonpDeserializer |
| 194 | + .arrayDeserializer(JsonpDeserializer.stringDeserializer()) |
| 195 | + .deserialize(parser, mapper, event); |
| 196 | + yield SourceConfig.of(b -> b.filter(f -> f.includes(includes))); |
| 197 | + } |
| 198 | + case START_OBJECT -> { |
| 199 | + SourceFilter filter = SourceFilter._DESERIALIZER.deserialize(parser, mapper, event); |
| 200 | + yield SourceConfig.of(b -> b.filter(filter)); |
| 201 | + } |
| 202 | + default -> null; |
| 203 | + }; |
| 204 | + })); |
192 | 205 | } |
0 commit comments