Skip to content

Commit f00e0e8

Browse files
authored
Set CompositeKey on BucketAggregate (#3800)
Discourage the use of AfterKey on BucketAggregate by marking it as obsolete. Passing it directly into After will not honour null values for keys returned - it must be passed as a CompositeKey. Fixes #3694
1 parent 167f357 commit f00e0e8

File tree

3 files changed

+8
-7
lines changed

3 files changed

+8
-7
lines changed

src/Nest/Aggregations/AggregateDictionary.cs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ public AutoDateHistogramAggregate AutoDateHistogram(string key)
192192
};
193193
}
194194

195-
196195
public CompositeBucketAggregate Composite(string key)
197196
{
198197
var bucket = TryGet<BucketAggregate>(key);
@@ -202,7 +201,7 @@ public CompositeBucketAggregate Composite(string key)
202201
{
203202
Buckets = bucket.Items.OfType<CompositeBucket>().ToList(),
204203
Meta = bucket.Meta,
205-
AfterKey = new CompositeKey(bucket.AfterKey)
204+
AfterKey = bucket.CompositeAfterKey
206205
};
207206
}
208207

@@ -211,11 +210,8 @@ public CompositeBucketAggregate Composite(string key)
211210
public ValueAggregate MedianAbsoluteDeviation(string key) => TryGet<ValueAggregate>(key);
212211

213212
private TAggregate TryGet<TAggregate>(string key)
214-
where TAggregate : class, IAggregate
215-
{
216-
IAggregate agg;
217-
return BackingDictionary.TryGetValue(key, out agg) ? agg as TAggregate : null;
218-
}
213+
where TAggregate : class, IAggregate =>
214+
BackingDictionary.TryGetValue(key, out var agg) ? agg as TAggregate : null;
219215

220216
private MultiBucketAggregate<TBucket> GetMultiBucketAggregate<TBucket>(string key)
221217
where TBucket : IBucket

src/Nest/Aggregations/AggregateJsonConverter.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,10 @@ private IAggregate ReadAggregate(JsonReader reader, JsonSerializer serializer)
8888
var bucketAggregate = reader.Value.ToString() == Parser.Buckets
8989
? GetMultiBucketAggregate(reader, serializer) as BucketAggregate ?? new BucketAggregate()
9090
: new BucketAggregate();
91+
#pragma warning disable 618
9192
bucketAggregate.AfterKey = afterKeys;
93+
#pragma warning restore 618
94+
bucketAggregate.CompositeAfterKey = new CompositeKey(afterKeys);
9295
aggregate = bucketAggregate;
9396
break;
9497
case Parser.Buckets:

src/Nest/Aggregations/Bucket/BucketAggregate.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ public class CompositeBucketAggregate : MultiBucketAggregate<CompositeBucket>
6363
// Intermediate object used for deserialization
6464
public class BucketAggregate : IAggregate
6565
{
66+
public CompositeKey CompositeAfterKey { get; set; }
67+
[Obsolete("Use " + nameof(CompositeAfterKey))]
6668
public IReadOnlyDictionary<string, object> AfterKey { get; set; } = EmptyReadOnly<string, object>.Dictionary;
6769
public long BgCount { get; set; }
6870
public long DocCount { get; set; }

0 commit comments

Comments
 (0)