Skip to content

Commit a6e3991

Browse files
Fix code-gen for dynamic_templates. (#7337) (#7338)
* Fix TypeMapping in code generator * Add 8.0.x integration job * Updates to code-gen * Add and amend tests Co-authored-by: Steve Gordon <[email protected]>
1 parent 77b11fa commit a6e3991

34 files changed

+90
-38
lines changed

Diff for: .github/workflows/integration-jobs.yml

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ jobs:
2222
fail-fast: false
2323
matrix:
2424
stack_version: [
25+
'8.0.1',
2526
'8.1.3',
2627
'8.2.3',
2728
'8.3.3',

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/AggregateOrderConverter.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/AggregateDictionary.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Buckets.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/FieldDateMath.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Aggregations/Percentiles.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Analysis/Analyzers.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Analysis/CharFilters.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Analysis/Normalizers.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Analysis/TokenFilters.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Analysis/Tokenizers.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/ByteSize.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/Context.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/MultiGetResponseItem.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/MultiSearchResponseItem.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/SourceConfig.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/SourceConfigParam.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Core/TrackHits.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/ExpandWildcardsConverter.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/FeaturesConverter.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Fuzziness.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/GeoHashPrecision.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/GeoLocation.g.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -166,4 +166,4 @@ public GeoLocationConverter()
166166
}
167167
};
168168
}
169-
}
169+
}

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Mapping/Properties.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Mapping/TypeMapping.g.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public sealed partial class TypeMapping
5757
[JsonInclude, JsonPropertyName("dynamic_date_formats")]
5858
public ICollection<string>? DynamicDateFormats { get; set; }
5959

60-
[JsonInclude, JsonPropertyName("dynamic_templates"), SingleOrManyCollectionConverter(typeof(IDictionary<string, Elastic.Clients.Elasticsearch.Mapping.DynamicTemplate>))]
60+
[JsonInclude, JsonPropertyName("dynamic_templates")]
6161
public ICollection<IDictionary<string, Elastic.Clients.Elasticsearch.Mapping.DynamicTemplate>>? DynamicTemplates { get; set; }
6262

6363
[JsonInclude, JsonPropertyName("enabled")]
@@ -505,7 +505,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
505505
if (DynamicTemplatesValue is not null)
506506
{
507507
writer.WritePropertyName("dynamic_templates");
508-
SingleOrManySerializationHelper.Serialize<IDictionary<string, Elastic.Clients.Elasticsearch.Mapping.DynamicTemplate>>(DynamicTemplatesValue, writer, options);
508+
JsonSerializer.Serialize(writer, DynamicTemplatesValue, options);
509509
}
510510

511511
if (EnabledValue.HasValue)
@@ -981,7 +981,7 @@ protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions o
981981
if (DynamicTemplatesValue is not null)
982982
{
983983
writer.WritePropertyName("dynamic_templates");
984-
SingleOrManySerializationHelper.Serialize<IDictionary<string, Elastic.Clients.Elasticsearch.Mapping.DynamicTemplate>>(DynamicTemplatesValue, writer, options);
984+
JsonSerializer.Serialize(writer, DynamicTemplatesValue, options);
985985
}
986986

987987
if (EnabledValue.HasValue)

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/Like.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/QueryDsl/TermsQueryField.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Script.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Slices.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/StopWordsConverter.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: src/Elastic.Clients.Elasticsearch/_Generated/Types/Tasks/TaskInfos.g.cs

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
//
1616
// ------------------------------------------------
1717

18+
using Elastic.Clients.Elasticsearch.Core;
1819
using Elastic.Clients.Elasticsearch.Fluent;
1920
using Elastic.Clients.Elasticsearch.Serialization;
2021
using Elastic.Transport;

Diff for: tests/Tests/IndexManagement/CreateIndexSerializationTests.cs

+42
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using Elastic.Clients.Elasticsearch.Analysis;
66
using Elastic.Clients.Elasticsearch.IndexManagement;
7+
using Elastic.Clients.Elasticsearch.Mapping;
78
using Elastic.Clients.Elasticsearch.QueryDsl;
89
using System.Collections.Generic;
910
using System.Threading.Tasks;
@@ -83,4 +84,45 @@ public async Task CreateIndexWithAnalysisSettings_SerializesCorrectly()
8384
var objectJson = await SerializeAndGetJsonStringAsync(createRequest);
8485
objectJson.Should().Be(json);
8586
}
87+
88+
[U]
89+
public async Task CreateIndexWithDynamicTemplates_SerializesCorrectly()
90+
{
91+
var myTemplate = new DynamicTemplate
92+
{
93+
PathMatch = "testPathMatch",
94+
Mapping = new KeywordProperty()
95+
};
96+
97+
var descriptor = new CreateIndexRequestDescriptor("test")
98+
.Mappings(m => m
99+
.DynamicTemplates(new[]
100+
{
101+
new Dictionary<string, DynamicTemplate>
102+
{
103+
{ "testTemplateName", myTemplate }
104+
}
105+
}));
106+
107+
var json = await SerializeAndGetJsonStringAsync(descriptor);
108+
109+
await Verifier.VerifyJson(json);
110+
111+
var createRequest = new CreateIndexRequest("test")
112+
{
113+
Mappings = new TypeMapping
114+
{
115+
DynamicTemplates = new[]
116+
{
117+
new Dictionary<string, DynamicTemplate>
118+
{
119+
{ "testTemplateName", myTemplate }
120+
}
121+
}
122+
}
123+
};
124+
125+
var objectJson = await SerializeAndGetJsonStringAsync(createRequest);
126+
objectJson.Should().Be(json);
127+
}
86128
}

Diff for: tests/Tests/IndexManagement/GetIndexSerializationTests.cs

+1-34
Original file line numberDiff line numberDiff line change
@@ -7058,7 +7058,7 @@ public void GetIndexResponse_DeserializedCorrectly()
70587058
}
70597059

70607060
[U]
7061-
public void GetIndexResponse_DeserializedCorrectly_WhenDynamicTemplateArrayIsPresentInResponse()
7061+
public void GetIndexResponse_DeserializedCorrectly_WhenDynamicTemplatesArePresentInResponse()
70627062
{
70637063
const string json = @"{
70647064
""catalog-data-2023.01.31"": {
@@ -7091,39 +7091,6 @@ public void GetIndexResponse_DeserializedCorrectly_WhenDynamicTemplateArrayIsPre
70917091
VerifyGetIndexResponseDynamicTemplates(response);
70927092
}
70937093

7094-
[U]
7095-
public void GetIndexResponse_DeserializedCorrectly_WhenSingleDynamicTemplateIsPresentInResponse()
7096-
{
7097-
const string json = @"{
7098-
""catalog-data-2023.01.31"": {
7099-
""aliases"": {
7100-
},
7101-
""mappings"": {
7102-
""dynamic_templates"":
7103-
{
7104-
""strings_as_keyword"": {
7105-
""match_mapping_type"": ""string"",
7106-
""mapping"": {
7107-
""ignore_above"": 1024,
7108-
""type"": ""keyword""
7109-
}
7110-
}
7111-
},
7112-
""properties"": {
7113-
""@timestamp"": {
7114-
""type"": ""date""
7115-
}
7116-
}
7117-
},
7118-
""settings"": {
7119-
}
7120-
}
7121-
}";
7122-
7123-
var response = DeserializeJsonString<GetIndexResponse>(json);
7124-
VerifyGetIndexResponseDynamicTemplates(response);
7125-
}
7126-
71277094
private static void VerifyGetIndexResponseDynamicTemplates(GetIndexResponse response)
71287095
{
71297096
response.Indices.TryGetValue("catalog-data-2023.01.31", out var indexState).Should().BeTrue();
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
mappings: {
3+
dynamic_templates: [
4+
{
5+
testTemplateName: {
6+
mapping: {
7+
type: keyword
8+
},
9+
path_match: testPathMatch
10+
}
11+
}
12+
]
13+
}
14+
}

0 commit comments

Comments
 (0)