Skip to content

Commit 6732b0d

Browse files
russcamMpdreamz
authored andcommitted
Set ApiCall details on TermVectorResponses on MultiTermVectorsResponse (#2429)
Add a specific deserialization override to set ApiCallDetails on each TermVectorResponse in MultiTermVectorsResponse.Documents. Closes #2142
1 parent a4528dc commit 6732b0d

File tree

4 files changed

+25
-9
lines changed

4 files changed

+25
-9
lines changed

src/Nest/CommonAbstractions/Response/ResponseBase.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
using System;
2-
using System.Diagnostics;
3-
using System.Linq;
42
using System.Text;
53
using Elasticsearch.Net;
64
using Newtonsoft.Json;

src/Nest/Document/Multiple/MultiTermVectors/ElasticClient-MultiTermVectors.cs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Linq;
23
using System.Threading.Tasks;
34
using Elasticsearch.Net;
45

@@ -30,21 +31,37 @@ public IMultiTermVectorsResponse MultiTermVectors(Func<MultiTermVectorsDescripto
3031
this.MultiTermVectors(selector.InvokeOrDefault(new MultiTermVectorsDescriptor()));
3132

3233
///<inheritdoc/>
33-
public IMultiTermVectorsResponse MultiTermVectors(IMultiTermVectorsRequest request) =>
34+
public IMultiTermVectorsResponse MultiTermVectors(IMultiTermVectorsRequest request) =>
3435
this.Dispatcher.Dispatch<IMultiTermVectorsRequest, MultiTermVectorsRequestParameters, MultiTermVectorsResponse>(
3536
request,
36-
this.LowLevelDispatch.MtermvectorsDispatch<MultiTermVectorsResponse>
37+
(p, d) => this.LowLevelDispatch.MtermvectorsDispatch<MultiTermVectorsResponse>(SetCallDetailsOnTermVectors(p), d)
3738
);
3839

3940
///<inheritdoc/>
4041
public Task<IMultiTermVectorsResponse> MultiTermVectorsAsync(Func<MultiTermVectorsDescriptor, IMultiTermVectorsRequest> selector = null) =>
4142
this.MultiTermVectorsAsync(selector.InvokeOrDefault(new MultiTermVectorsDescriptor()));
4243

4344
///<inheritdoc/>
44-
public Task<IMultiTermVectorsResponse> MultiTermVectorsAsync(IMultiTermVectorsRequest request) =>
45+
public Task<IMultiTermVectorsResponse> MultiTermVectorsAsync(IMultiTermVectorsRequest request) =>
4546
this.Dispatcher.DispatchAsync<IMultiTermVectorsRequest, MultiTermVectorsRequestParameters, MultiTermVectorsResponse, IMultiTermVectorsResponse>(
4647
request,
47-
this.LowLevelDispatch.MtermvectorsDispatchAsync<MultiTermVectorsResponse>
48+
(p, d) => this.LowLevelDispatch.MtermvectorsDispatchAsync<MultiTermVectorsResponse>(SetCallDetailsOnTermVectors(p), d)
4849
);
50+
51+
private IMultiTermVectorsRequest SetCallDetailsOnTermVectors(IMultiTermVectorsRequest request)
52+
{
53+
request.RequestParameters.DeserializationOverride((details, stream) =>
54+
{
55+
var response = this.Serializer.Deserialize<MultiTermVectorsResponse>(stream);
56+
57+
// This is not needed in 5.0 as MultiTermVectorsResponse does not use
58+
// TermVectors response as the collection type
59+
foreach (IResponse termVectorsResponse in response.Documents)
60+
termVectorsResponse.CallDetails = details;
61+
62+
return response;
63+
});
64+
return request;
65+
}
4966
}
5067
}

src/Nest/Document/Multiple/MultiTermVectors/MultiTermVectorsResponse.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections.Generic;
1+
using System;
2+
using System.Collections.Generic;
23
using Newtonsoft.Json;
34

45
namespace Nest
@@ -11,8 +12,6 @@ public interface IMultiTermVectorsResponse : IResponse
1112
[JsonObject]
1213
public class MultiTermVectorsResponse : ResponseBase, IMultiTermVectorsResponse
1314
{
14-
// TODO For 3.0 we should create a separate term vector object rather than using TermVectorsResponse
15-
// since it contains general response data that isn't relevant (i.e. ApiCall, StatusCode, etc...)
1615
[JsonProperty("docs")]
1716
public IEnumerable<TermVectorsResponse> Documents { get; internal set; } = new List<TermVectorsResponse>();
1817
}

src/Tests/Document/Multiple/MultiTermVectors/MultiTermVectorsApiTests.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,8 @@ protected override void ExpectResponse(IMultiTermVectorsResponse response)
5555
{
5656
response.ShouldBeValid();
5757
response.Documents.Should().NotBeEmpty().And.HaveCount(2).And.OnlyContain(d => d.Found);
58+
response.Documents.All(r => r.IsValid).Should().BeTrue();
59+
5860
var termvectorDoc = response.Documents.FirstOrDefault(d => d.TermVectors.Count > 0);
5961

6062
termvectorDoc.Should().NotBeNull();

0 commit comments

Comments
 (0)