Skip to content

Commit 85aab2d

Browse files
committed
ClearCache FilterKeys should be a string[] array
Update the rest api spec to reflect the PR in elastic/elasticsearch#20292 Rename FilterKeys string array property to FilterKeysValues to maintain backwards binary compatibility. Mark all usages of the bool FilterKeys value as Obsolete, including the error flag. Bump ApiGenerator to point at 1.7 branch. Make FluentRequestParameters a partial class so that generated types can be extended. Add PatchMethod to IDescriptorOverrides to allow patching on a per method basis. Move Csharp property naming on Request types to ApiQueryParameters type so that property naming can be modified independently of the underlying query string parameter name. Fixes #2229
1 parent b9eff57 commit 85aab2d

24 files changed

+2626
-2144
lines changed

.gitignore

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,6 @@ Cache
5959
YamlCache
6060

6161
*.DS_Store
62-
*.sln.ide
62+
*.sln.ide
63+
64+
packages

src/CodeGeneration/CodeGeneration.LowLevelClient/ApiEndpoints/indices.clear_cache.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
"description" : "Clear filter caches"
3434
},
3535
"filter_keys": {
36-
"type" : "boolean",
36+
"type" : "list",
3737
"description" : "A comma-separated list of keys to clear when using the `filter_cache` parameter (default: all)"
3838
},
3939
"id": {

src/CodeGeneration/CodeGeneration.LowLevelClient/ApiEndpoints/root.html

Lines changed: 2281 additions & 1988 deletions
Large diffs are not rendered by default.

src/CodeGeneration/CodeGeneration.LowLevelClient/ApiGenerator.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,13 @@ namespace CodeGeneration.LowLevelClient
1919
{
2020
public static class ApiGenerator
2121
{
22-
private readonly static string _listingUrl = "https://github.com/elastic/elasticsearch/tree/1.6/rest-api-spec/api";
23-
private readonly static string _rawUrlPrefix = "https://raw.github.com/elastic/elasticsearch/1.6/rest-api-spec/api/";
24-
private readonly static string _nestFolder = @"..\..\..\..\..\src\Nest\";
25-
private readonly static string _esNetFolder = @"..\..\..\..\..\src\Elasticsearch.Net\";
26-
private readonly static string _viewFolder = @"..\..\Views\";
27-
private readonly static string _apiEndpointsFolder = @"..\..\ApiEndpoints\";
22+
private static readonly string _version = "1.7";
23+
private static readonly string _listingUrl = string.Format("https://github.com/elastic/elasticsearch/tree/{0}/rest-api-spec/api", _version);
24+
private static readonly string _rawUrlPrefix = string.Format("https://raw.github.com/elastic/elasticsearch/{0}/rest-api-spec/api/", _version);
25+
private static readonly string _nestFolder = @"..\..\..\..\..\src\Nest\";
26+
private static readonly string _esNetFolder = @"..\..\..\..\..\src\Elasticsearch.Net\";
27+
private static readonly string _viewFolder = @"..\..\Views\";
28+
private static readonly string _apiEndpointsFolder = @"..\..\ApiEndpoints\";
2829
private static readonly RazorMachine _razorMachine;
2930

3031
private static readonly Assembly _assembly;
@@ -188,6 +189,8 @@ public static void PatchMethod(CsharpMethod method)
188189
{
189190
skipList = overrides.SkipQueryStringParams ?? skipList;
190191
renameList = overrides.RenameQueryStringParams ?? renameList;
192+
193+
method = overrides.PatchMethod(method);
191194
}
192195
}
193196

src/CodeGeneration/CodeGeneration.LowLevelClient/CodeGeneration.LowLevelClient.csproj

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
<Prefer32Bit>true</Prefer32Bit>
4545
</PropertyGroup>
4646
<ItemGroup>
47+
<Content Include="ApiEndpoints\root.html" />
4748
<Content Include="razormachine.readme.txt">
4849
<Paket>True</Paket>
4950
</Content>
@@ -81,6 +82,116 @@
8182
<Compile Include="Domain\RestApiSpec.cs" />
8283
</ItemGroup>
8384
<ItemGroup>
85+
<None Include="ApiEndpoints\abort_benchmark.json" />
86+
<None Include="ApiEndpoints\bulk.json" />
87+
<None Include="ApiEndpoints\cat.aliases.json" />
88+
<None Include="ApiEndpoints\cat.allocation.json" />
89+
<None Include="ApiEndpoints\cat.count.json" />
90+
<None Include="ApiEndpoints\cat.fielddata.json" />
91+
<None Include="ApiEndpoints\cat.health.json" />
92+
<None Include="ApiEndpoints\cat.help.json" />
93+
<None Include="ApiEndpoints\cat.indices.json" />
94+
<None Include="ApiEndpoints\cat.master.json" />
95+
<None Include="ApiEndpoints\cat.nodes.json" />
96+
<None Include="ApiEndpoints\cat.pending_tasks.json" />
97+
<None Include="ApiEndpoints\cat.plugins.json" />
98+
<None Include="ApiEndpoints\cat.recovery.json" />
99+
<None Include="ApiEndpoints\cat.segments.json" />
100+
<None Include="ApiEndpoints\cat.shards.json" />
101+
<None Include="ApiEndpoints\cat.thread_pool.json" />
102+
<None Include="ApiEndpoints\clear_scroll.json" />
103+
<None Include="ApiEndpoints\cluster.get_settings.json" />
104+
<None Include="ApiEndpoints\cluster.health.json" />
105+
<None Include="ApiEndpoints\cluster.pending_tasks.json" />
106+
<None Include="ApiEndpoints\cluster.put_settings.json" />
107+
<None Include="ApiEndpoints\cluster.reroute.json" />
108+
<None Include="ApiEndpoints\cluster.state.json" />
109+
<None Include="ApiEndpoints\cluster.stats.json" />
110+
<None Include="ApiEndpoints\count.json" />
111+
<None Include="ApiEndpoints\count_percolate.json" />
112+
<None Include="ApiEndpoints\delete.json" />
113+
<None Include="ApiEndpoints\delete_by_query.json" />
114+
<None Include="ApiEndpoints\delete_script.json" />
115+
<None Include="ApiEndpoints\delete_template.json" />
116+
<None Include="ApiEndpoints\exists.json" />
117+
<None Include="ApiEndpoints\explain.json" />
118+
<None Include="ApiEndpoints\field_stats.json" />
119+
<None Include="ApiEndpoints\get.json" />
120+
<None Include="ApiEndpoints\get_script.json" />
121+
<None Include="ApiEndpoints\get_source.json" />
122+
<None Include="ApiEndpoints\get_template.json" />
123+
<None Include="ApiEndpoints\index.json" />
124+
<None Include="ApiEndpoints\indices.analyze.json" />
125+
<None Include="ApiEndpoints\indices.clear_cache.json" />
126+
<None Include="ApiEndpoints\indices.close.json" />
127+
<None Include="ApiEndpoints\indices.create.json" />
128+
<None Include="ApiEndpoints\indices.delete.json" />
129+
<None Include="ApiEndpoints\indices.delete_alias.json" />
130+
<None Include="ApiEndpoints\indices.delete_mapping.json" />
131+
<None Include="ApiEndpoints\indices.delete_template.json" />
132+
<None Include="ApiEndpoints\indices.delete_warmer.json" />
133+
<None Include="ApiEndpoints\indices.exists.json" />
134+
<None Include="ApiEndpoints\indices.exists_alias.json" />
135+
<None Include="ApiEndpoints\indices.exists_template.json" />
136+
<None Include="ApiEndpoints\indices.exists_type.json" />
137+
<None Include="ApiEndpoints\indices.flush.json" />
138+
<None Include="ApiEndpoints\indices.flush_synced.json" />
139+
<None Include="ApiEndpoints\indices.get.json" />
140+
<None Include="ApiEndpoints\indices.get_alias.json" />
141+
<None Include="ApiEndpoints\indices.get_aliases.json" />
142+
<None Include="ApiEndpoints\indices.get_field_mapping.json" />
143+
<None Include="ApiEndpoints\indices.get_mapping.json" />
144+
<None Include="ApiEndpoints\indices.get_settings.json" />
145+
<None Include="ApiEndpoints\indices.get_template.json" />
146+
<None Include="ApiEndpoints\indices.get_upgrade.json" />
147+
<None Include="ApiEndpoints\indices.get_warmer.json" />
148+
<None Include="ApiEndpoints\indices.open.json" />
149+
<None Include="ApiEndpoints\indices.optimize.json" />
150+
<None Include="ApiEndpoints\indices.put_alias.json" />
151+
<None Include="ApiEndpoints\indices.put_mapping.json" />
152+
<None Include="ApiEndpoints\indices.put_settings.json" />
153+
<None Include="ApiEndpoints\indices.put_template.json" />
154+
<None Include="ApiEndpoints\indices.put_warmer.json" />
155+
<None Include="ApiEndpoints\indices.recovery.json" />
156+
<None Include="ApiEndpoints\indices.refresh.json" />
157+
<None Include="ApiEndpoints\indices.segments.json" />
158+
<None Include="ApiEndpoints\indices.stats.json" />
159+
<None Include="ApiEndpoints\indices.status.json" />
160+
<None Include="ApiEndpoints\indices.update_aliases.json" />
161+
<None Include="ApiEndpoints\indices.upgrade.json" />
162+
<None Include="ApiEndpoints\indices.validate_query.json" />
163+
<None Include="ApiEndpoints\info.json" />
164+
<None Include="ApiEndpoints\list_benchmarks.json" />
165+
<None Include="ApiEndpoints\mget.json" />
166+
<None Include="ApiEndpoints\mlt.json" />
167+
<None Include="ApiEndpoints\mpercolate.json" />
168+
<None Include="ApiEndpoints\msearch.json" />
169+
<None Include="ApiEndpoints\mtermvectors.json" />
170+
<None Include="ApiEndpoints\nodes.hot_threads.json" />
171+
<None Include="ApiEndpoints\nodes.info.json" />
172+
<None Include="ApiEndpoints\nodes.shutdown.json" />
173+
<None Include="ApiEndpoints\nodes.stats.json" />
174+
<None Include="ApiEndpoints\percolate.json" />
175+
<None Include="ApiEndpoints\ping.json" />
176+
<None Include="ApiEndpoints\put_script.json" />
177+
<None Include="ApiEndpoints\put_template.json" />
178+
<None Include="ApiEndpoints\scroll.json" />
179+
<None Include="ApiEndpoints\search.json" />
180+
<None Include="ApiEndpoints\search_exists.json" />
181+
<None Include="ApiEndpoints\search_shards.json" />
182+
<None Include="ApiEndpoints\search_template.json" />
183+
<None Include="ApiEndpoints\snapshot.create.json" />
184+
<None Include="ApiEndpoints\snapshot.create_repository.json" />
185+
<None Include="ApiEndpoints\snapshot.delete.json" />
186+
<None Include="ApiEndpoints\snapshot.delete_repository.json" />
187+
<None Include="ApiEndpoints\snapshot.get.json" />
188+
<None Include="ApiEndpoints\snapshot.get_repository.json" />
189+
<None Include="ApiEndpoints\snapshot.restore.json" />
190+
<None Include="ApiEndpoints\snapshot.status.json" />
191+
<None Include="ApiEndpoints\snapshot.verify_repository.json" />
192+
<None Include="ApiEndpoints\suggest.json" />
193+
<None Include="ApiEndpoints\termvector.json" />
194+
<None Include="ApiEndpoints\update.json" />
84195
<None Include="App.config" />
85196
<None Include="paket.references" />
86197
<None Include="Views\_Requests.Generated.cshtml" />

src/CodeGeneration/CodeGeneration.LowLevelClient/Domain/ApiQueryParameters.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,12 @@ public string CsharpType(string paramName)
3535
return this.Type;
3636
}
3737
}
38-
38+
39+
public virtual string CsharpPropertyName(string cased)
40+
{
41+
return cased != "Type" && cased != "Index" && cased != "Script"
42+
? cased
43+
: cased + "QueryString";
44+
}
3945
}
4046
}

src/CodeGeneration/CodeGeneration.LowLevelClient/Overrides/Descriptors/ClearCacheDescriptorOverrides.cs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Text;
5+
using CodeGeneration.LowLevelClient.Domain;
56

67
namespace CodeGeneration.LowLevelClient.Overrides.Descriptors
78
{
8-
public class ClearCacheDescriptorOverrides : IDescriptorOverrides
9+
public class ClearCacheDescriptorOverrides : DescriptorOverridesBase
910
{
10-
public IEnumerable<string> SkipQueryStringParams
11+
public override IEnumerable<string> SkipQueryStringParams
1112
{
1213
get
1314
{
@@ -18,6 +19,30 @@ public IEnumerable<string> SkipQueryStringParams
1819
}
1920
}
2021

21-
public IDictionary<string, string> RenameQueryStringParams { get { return null; } }
22+
public override CsharpMethod PatchMethod(CsharpMethod method)
23+
{
24+
var part = method.Url.Params.First(p => p.Key == "filter_keys");
25+
26+
method.Url.Params["filter_keys"] = new FilterKeysApiQueryParameters(part.Value);
27+
28+
return base.PatchMethod(method);
29+
}
30+
31+
private class FilterKeysApiQueryParameters : ApiQueryParameters
32+
{
33+
public FilterKeysApiQueryParameters(ApiQueryParameters parameters)
34+
{
35+
this.DeprecatedInFavorOf = parameters.DeprecatedInFavorOf;
36+
this.Description = parameters.Description;
37+
this.Options = parameters.Options;
38+
this.OriginalQueryStringParamName = parameters.OriginalQueryStringParamName;
39+
this.Type = parameters.Type;
40+
}
41+
42+
public override string CsharpPropertyName(string cased)
43+
{
44+
return "FilterCacheKeys";
45+
}
46+
}
2247
}
2348
}

src/CodeGeneration/CodeGeneration.LowLevelClient/Overrides/Descriptors/DeleteWarmerDescriptorOverrides.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
namespace CodeGeneration.LowLevelClient.Overrides.Descriptors
77
{
8-
public class DeleteWarmerDescriptorOverrides : IDescriptorOverrides
8+
public class DeleteWarmerDescriptorOverrides : DescriptorOverridesBase
99
{
10-
public IEnumerable<string> SkipQueryStringParams
10+
public override IEnumerable<string> SkipQueryStringParams
1111
{
1212
get
1313
{
@@ -17,7 +17,5 @@ public IEnumerable<string> SkipQueryStringParams
1717
};
1818
}
1919
}
20-
21-
public IDictionary<string, string> RenameQueryStringParams { get { return null; } }
2220
}
2321
}

src/CodeGeneration/CodeGeneration.LowLevelClient/Overrides/Descriptors/IDescriptorOverrides.cs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using CodeGeneration.LowLevelClient.Domain;
23

34
namespace CodeGeneration.LowLevelClient.Overrides.Descriptors
45
{
@@ -16,6 +17,31 @@ public interface IDescriptorOverrides
1617
/// <summary>
1718
/// Override how the query param name is exposed to the client.
1819
/// </summary>
19-
IDictionary<string, string> RenameQueryStringParams { get; }
20+
IDictionary<string, string> RenameQueryStringParams { get; }
21+
22+
/// <summary>
23+
/// Patches the CSharp method.
24+
/// </summary>
25+
/// <param name="method">The method.</param>
26+
/// <returns>patched method</returns>
27+
CsharpMethod PatchMethod(CsharpMethod method);
2028
}
29+
30+
public abstract class DescriptorOverridesBase : IDescriptorOverrides
31+
{
32+
public virtual IEnumerable<string> SkipQueryStringParams
33+
{
34+
get { return null; }
35+
}
36+
37+
public virtual IDictionary<string, string> RenameQueryStringParams
38+
{
39+
get { return null; }
40+
}
41+
42+
public virtual CsharpMethod PatchMethod(CsharpMethod method)
43+
{
44+
return method;
45+
}
46+
}
2147
}

src/CodeGeneration/CodeGeneration.LowLevelClient/Overrides/Descriptors/IndicesStatsDescriptorOverrides.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22

33
namespace CodeGeneration.LowLevelClient.Overrides.Descriptors
44
{
5-
public class IndicesStatsDescriptorOverrides : IDescriptorOverrides
5+
public class IndicesStatsDescriptorOverrides : DescriptorOverridesBase
66
{
7-
public IEnumerable<string> SkipQueryStringParams
7+
public override IEnumerable<string> SkipQueryStringParams
88
{
99
get
1010
{
@@ -14,6 +14,5 @@ public IEnumerable<string> SkipQueryStringParams
1414
};
1515
}
1616
}
17-
public IDictionary<string, string> RenameQueryStringParams { get { return null; } }
1817
}
1918
}

0 commit comments

Comments
 (0)