Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: elastic/elasticsearch-java
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v7.17.5
Choose a base ref
...
head repository: elastic/elasticsearch-java
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v7.17.6
Choose a head ref
  • 6 commits
  • 137 files changed
  • 2 contributors

Commits on Jul 12, 2022

  1. Fix boolean endpoints so they can have a request body (#341) (#342)

    Co-authored-by: Sylvain Wallez <sylvain@elastic.co>
    github-actions[bot] and swallez authored Jul 12, 2022
    Copy the full SHA
    4c2e1a8 View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    bfdd07b View commit details

Commits on Jul 13, 2022

  1. Copy the full SHA
    3f4c2eb View commit details

Commits on Aug 3, 2022

  1. Add documentation for templated search (#362) (#363)

    Co-authored-by: Sylvain Wallez <sylvain@elastic.co>
    github-actions[bot] and swallez authored Aug 3, 2022
    Copy the full SHA
    a4f0224 View commit details

Commits on Aug 11, 2022

  1. Copy the full SHA
    4e3c0e6 View commit details

Commits on Aug 18, 2022

  1. Fix RestClientOptions building to not lose builtin headers (#380) (#381)

    Co-authored-by: Sylvain Wallez <sylvain@elastic.co>
    github-actions[bot] and swallez authored Aug 18, 2022
    Copy the full SHA
    537c16a View commit details
Showing with 2,752 additions and 943 deletions.
  1. +25 −0 docs/usage/searching.asciidoc
  2. +14 −1 java-client/src/main/java/co/elastic/clients/ApiClient.java
  3. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/SortOptions.java
  4. +3 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/Time.java
  5. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/Transform.java
  6. +70 −10 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/Aggregate.java
  7. +59 −6 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/Aggregation.java
  8. +28 −13 .../src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/DateHistogramAggregation.java
  9. +29 −13 ...ient/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/HistogramAggregation.java
  10. +0 −175 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/HistogramOrder.java
  11. +0 −3 .../src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/MovingAverageAggregation.java
  12. +226 −0 ...ent/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/MultiTermsAggregation.java
  13. +10 −15 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/aggregations/TermsAggregation.java
  14. +73 −8 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/Analyzer.java
  15. +15 −9 ...lient/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/AsciiFoldingTokenFilter.java
  16. +73 −11 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/CharFilterDefinition.java
  17. +22 −13 ...t/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/DelimitedPayloadTokenFilter.java
  18. +26 −17 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/EdgeNGramTokenFilter.java
  19. +48 −12 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/ElisionTokenFilter.java
  20. +25 −15 ...client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/FingerprintTokenFilter.java
  21. +38 −22 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/HunspellTokenFilter.java
  22. +28 −17 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/LengthTokenFilter.java
  23. +28 −17 ...nt/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/LimitTokenCountTokenFilter.java
  24. +5 −4 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/MappingCharFilter.java
  25. +14 −8 ...client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/MultiplexerTokenFilter.java
  26. +5 −4 ...t/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/NoriPartOfSpeechTokenFilter.java
  27. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/Normalizer.java
  28. +14 −8 ...ent/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/PatternCaptureTokenFilter.java
  29. +53 −12 ...ent/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/PatternReplaceTokenFilter.java
  30. +5 −4 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/StopTokenFilter.java
  31. +73 −11 ...-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/TokenFilterDefinition.java
  32. +73 −11 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/TokenizerDefinition.java
  33. +15 −9 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/analysis/TruncateTokenFilter.java
  34. +0 −27 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/mapping/FieldMapping.java
  35. +73 −8 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/mapping/Property.java
  36. +2 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/FunctionScore.java
  37. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/Intervals.java
  38. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/IntervalsFilter.java
  39. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/IntervalsQuery.java
  40. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/PinnedQuery.java
  41. +60 −6 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/Query.java
  42. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/_types/query_dsl/SpanQuery.java
  43. +2 −2 ...lient/src/main/java/co/elastic/clients/elasticsearch/autoscaling/PutAutoscalingPolicyRequest.java
  44. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/AliasesResponse.java
  45. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/AllocationResponse.java
  46. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/CountResponse.java
  47. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/FielddataResponse.java
  48. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/HealthResponse.java
  49. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/HelpResponse.java
  50. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/IndicesResponse.java
  51. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/MasterResponse.java
  52. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/MlDataFrameAnalyticsResponse.java
  53. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/MlDatafeedsResponse.java
  54. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/MlJobsResponse.java
  55. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/MlTrainedModelsResponse.java
  56. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/NodeattrsResponse.java
  57. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/NodesResponse.java
  58. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/PendingTasksResponse.java
  59. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/PluginsResponse.java
  60. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/RecoveryResponse.java
  61. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/RepositoriesResponse.java
  62. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/SegmentsResponse.java
  63. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/ShardsResponse.java
  64. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/SnapshotsResponse.java
  65. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/TasksResponse.java
  66. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/TemplatesResponse.java
  67. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/ThreadPoolResponse.java
  68. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cat/TransformsResponse.java
  69. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/cluster/StateResponse.java
  70. +0 −3 ...-client/src/main/java/co/elastic/clients/elasticsearch/cluster/remote_info/ClusterRemoteInfo.java
  71. +3 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/core/CreateRequest.java
  72. +3 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/core/GetSourceResponse.java
  73. +3 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/core/IndexRequest.java
  74. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/core/bulk/BulkOperation.java
  75. +60 −6 java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/FieldSuggester.java
  76. +33 −10 java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/PhraseSuggest.java
  77. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/SmoothingModel.java
  78. +1 −4 java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/Suggestion.java
  79. +33 −10 java-client/src/main/java/co/elastic/clients/elasticsearch/core/search/TermSuggest.java
  80. +109 −110 java-client/src/main/java/co/elastic/clients/elasticsearch/doc-files/api-spec.html
  81. +0 −3 ...client/src/main/java/co/elastic/clients/elasticsearch/ilm/explain_lifecycle/LifecycleExplain.java
  82. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/DiskUsageResponse.java
  83. +72 −16 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/IndexSettings.java
  84. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/PromoteDataStreamResponse.java
  85. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/PutIndicesSettingsRequest.java
  86. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/SimulateTemplateRequest.java
  87. +36 −11 ...t/src/main/java/co/elastic/clients/elasticsearch/indices/get_field_mapping/TypeFieldMappings.java
  88. +11 −6 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/recovery/ShardRecovery.java
  89. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/indices/update_aliases/Action.java
  90. +60 −6 java-client/src/main/java/co/elastic/clients/elasticsearch/ingest/Processor.java
  91. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/logstash/GetPipelineResponse.java
  92. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/logstash/PutPipelineRequest.java
  93. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/DataframeAnalysis.java
  94. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/DataframeAnalysisFeatureProcessor.java
  95. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/DataframeAnalyticsStats.java
  96. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/DataframeEvaluation.java
  97. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/PostDataRequest.java
  98. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/ValidateDetectorRequest.java
  99. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/ml/put_trained_model/Preprocessor.java
  100. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/rollup/RollupRequest.java
  101. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/rollup/RollupResponse.java
  102. +2 −2 ...lient/src/main/java/co/elastic/clients/elasticsearch/searchable_snapshots/ClearCacheResponse.java
  103. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/security/FieldRule.java
  104. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/security/PutPrivilegesRequest.java
  105. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/security/RoleMappingRule.java
  106. +147 −41 java-client/src/main/java/co/elastic/clients/elasticsearch/sql/TranslateResponse.java
  107. +2 −2 java-client/src/main/java/co/elastic/clients/elasticsearch/ssl/CertificatesResponse.java
  108. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/transform/PivotGroupBy.java
  109. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/transform/RetentionPolicy.java
  110. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/transform/Sync.java
  111. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/watcher/Condition.java
  112. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/watcher/Input.java
  113. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/watcher/Schedule.java
  114. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/watcher/Trigger.java
  115. +0 −3 java-client/src/main/java/co/elastic/clients/elasticsearch/watcher/TriggerEvent.java
  116. +49 −13 java-client/src/main/java/co/elastic/clients/json/ExternallyTaggedUnion.java
  117. +51 −2 java-client/src/main/java/co/elastic/clients/json/JsonData.java
  118. +4 −1 java-client/src/main/java/co/elastic/clients/json/JsonEnum.java
  119. +9 −0 java-client/src/main/java/co/elastic/clients/json/JsonpMapperFeatures.java
  120. +6 −0 java-client/src/main/java/co/elastic/clients/json/JsonpUtils.java
  121. +1 −1 java-client/src/main/java/co/elastic/clients/json/ObjectDeserializer.java
  122. +2 −2 java-client/src/main/java/co/elastic/clients/transport/endpoints/BooleanEndpoint.java
  123. +34 −30 java-client/src/main/java/co/elastic/clients/transport/rest_client/RestClientOptions.java
  124. +73 −0 java-client/src/main/java/co/elastic/clients/util/NamedValue.java
  125. +36 −0 java-client/src/main/java/co/elastic/clients/util/OpenTaggedUnion.java
  126. +10 −0 java-client/src/main/java/co/elastic/clients/util/TaggedUnion.java
  127. +41 −0 java-client/src/main/java/co/elastic/clients/util/VisibleForTesting.java
  128. +41 −0 java-client/src/test/java/co/elastic/clients/documentation/usage/SearchingTest.java
  129. +33 −0 java-client/src/test/java/co/elastic/clients/elasticsearch/ElasticsearchTestServer.java
  130. +43 −0 java-client/src/test/java/co/elastic/clients/elasticsearch/json/JsonpDeserializerTest.java
  131. +3 −0 java-client/src/test/java/co/elastic/clients/elasticsearch/model/BehaviorsTest.java
  132. +16 −0 java-client/src/test/java/co/elastic/clients/elasticsearch/model/ClassStructureTest.java
  133. +75 −0 java-client/src/test/java/co/elastic/clients/elasticsearch/model/UnionTests.java
  134. +106 −5 java-client/src/test/java/co/elastic/clients/elasticsearch/spec_issues/SpecIssuesTest.java
  135. +13 −5 java-client/src/test/java/co/elastic/clients/transport/RequestOptionsTest.java
  136. +34 −0 java-client/src/test/java/co/elastic/clients/transport/endpoints/BooleanEndpointTest.java
  137. +189 −0 java-client/src/test/java/co/elastic/clients/transport/rest_client/RestClientOptionsTest.java
25 changes: 25 additions & 0 deletions docs/usage/searching.asciidoc
Original file line number Diff line number Diff line change
@@ -43,4 +43,29 @@ include-tagged::{doc-tests-src}/usage/SearchingTest.java[search-nested]
<4> The search query is a boolean query that combines the text search and max price queries.
<5> Both queries are added as `must` as we want results to match all criteria.

[discrete]
==== Templated search

A search template is a stored search that you can run with different variables. Search templates let you change your searches without modifying your application code.

Before running a template search, you first have to create the template. This is a stored script that returns the search request body, and is usually defined as a Mustache template. This stored script can be created outside the application, and also with the {java-client}:

["source","java"]
--------------------------------------------------
include-tagged::{doc-tests-src}/usage/SearchingTest.java[search-template-script]
--------------------------------------------------
<1> Identifier of the template script to create.

To use the search template, use the `searchTemplate` method to refer to the script and provide values for its parameters:

["source","java"]
--------------------------------------------------
include-tagged::{doc-tests-src}/usage/SearchingTest.java[search-template-query]
--------------------------------------------------
<1> Identifier of the template script to use.
<2> Template parameter values.

For more in-depth information, see the {es-docs}/search-template.html[{es} search template documentation].


{doc-tests-blurb}
15 changes: 14 additions & 1 deletion java-client/src/main/java/co/elastic/clients/ApiClient.java
Original file line number Diff line number Diff line change
@@ -26,6 +26,7 @@
import co.elastic.clients.json.JsonpMapperBase;

import javax.annotation.Nullable;
import java.util.function.Function;

public abstract class ApiClient<T extends Transport, Self extends ApiClient<T, Self>> {

@@ -52,15 +53,27 @@ protected <V> JsonpDeserializer<V> getDeserializer(Class<V> clazz) {
*/
public abstract Self withTransportOptions(@Nullable TransportOptions transportOptions);

/**
* Creates a new client with additional request options
*
* @param fn a lambda expression that takes the current options as input
*/
public Self withTransportOptions(Function<TransportOptions.Builder, TransportOptions.Builder> fn) {
return withTransportOptions(fn.apply(_transportOptions().toBuilder()).build());
}

/**
* Get the transport used by this client to handle communication with the server.
*/
public T _transport() {
return this.transport;
}

/**
* Get the transport options used for this client. If the client has no custom options, falls back to the transport's options.
*/
public TransportOptions _transportOptions() {
return this.transportOptions;
return this.transportOptions == null ? transport.options() : transportOptions;
}

/**
Original file line number Diff line number Diff line change
@@ -56,9 +56,6 @@
@JsonpDeserializable
public class SortOptions implements TaggedUnion<SortOptions.Kind, Object>, JsonpSerializable {

/**
* {@link SortOptions} variant kinds.
*/
/**
* {@link SortOptions} variant kinds.
*
Original file line number Diff line number Diff line change
@@ -43,7 +43,7 @@
import java.util.function.Function;
import javax.annotation.Nullable;

// typedef: _types.Time
// typedef: _types.Duration

/**
* Whenever durations need to be specified, e.g. for a timeout parameter, the
@@ -52,7 +52,8 @@
* @see <a href=
* "https://github.com/elastic/elasticsearch/blob/master/libs/core/src/main/java/org/elasticsearch/core/TimeValue.java">Documentation
* on elastic.co</a>
* @see <a href="../doc-files/api-spec.html#_types.Time">API specification</a>
* @see <a href="../doc-files/api-spec.html#_types.Duration">API
* specification</a>
*/
@JsonpDeserializable
public class Time implements TaggedUnion<Time.Kind, Object>, JsonpSerializable {
Original file line number Diff line number Diff line change
@@ -53,9 +53,6 @@
@JsonpDeserializable
public class Transform implements TaggedUnion<Transform.Kind, Object>, JsonpSerializable {

/**
* {@link Transform} variant kinds.
*/
/**
* {@link Transform} variant kinds.
*
Original file line number Diff line number Diff line change
@@ -24,6 +24,7 @@
package co.elastic.clients.elasticsearch._types.aggregations;

import co.elastic.clients.json.ExternallyTaggedUnion;
import co.elastic.clients.json.JsonData;
import co.elastic.clients.json.JsonEnum;
import co.elastic.clients.json.JsonpDeserializable;
import co.elastic.clients.json.JsonpDeserializer;
@@ -34,9 +35,10 @@
import co.elastic.clients.util.ApiTypeHelper;
import co.elastic.clients.util.ObjectBuilder;
import co.elastic.clients.util.ObjectBuilderBase;
import co.elastic.clients.util.TaggedUnion;
import co.elastic.clients.util.OpenTaggedUnion;
import co.elastic.clients.util.TaggedUnionUtils;
import jakarta.json.stream.JsonGenerator;
import java.lang.Object;
import java.util.HashMap;
import java.util.Map;
import java.util.Objects;
@@ -52,11 +54,8 @@
* specification</a>
*/

public class Aggregate implements TaggedUnion<Aggregate.Kind, AggregateVariant>, JsonpSerializable {
public class Aggregate implements OpenTaggedUnion<Aggregate.Kind, Object>, JsonpSerializable {

/**
* {@link Aggregate} variant kinds.
*/
/**
* {@link Aggregate} variant kinds.
*
@@ -198,6 +197,9 @@ public enum Kind implements JsonEnum {

WeightedAvg("weighted_avg"),

/** A custom {@code Aggregate} defined by a plugin */
_Custom(null)

;

private final String jsonValue;
@@ -213,36 +215,48 @@ public String jsonValue() {
}

private final Kind _kind;
private final AggregateVariant _value;
private final Object _value;

@Override
public final Kind _kind() {
return _kind;
}

@Override
public final AggregateVariant _get() {
public final Object _get() {
return _value;
}

public Aggregate(AggregateVariant value) {

this._kind = ApiTypeHelper.requireNonNull(value._aggregateKind(), this, "<variant kind>");
this._value = ApiTypeHelper.requireNonNull(value, this, "<variant value>");
this._customKind = null;

}

private Aggregate(Builder builder) {

this._kind = ApiTypeHelper.requireNonNull(builder._kind, builder, "<variant kind>");
this._value = ApiTypeHelper.requireNonNull(builder._value, builder, "<variant value>");
this._customKind = builder._customKind;

}

public static Aggregate of(Function<Builder, ObjectBuilder<Aggregate>> fn) {
return fn.apply(new Builder()).build();
}

/**
* Build a custom plugin-defined {@code Aggregate}, given its kind and some JSON
* data
*/
public Aggregate(String kind, JsonData value) {
this._kind = Kind._Custom;
this._value = value;
this._customKind = kind;
}

/**
* Is this variant instance of kind {@code adjacency_matrix}?
*/
@@ -1379,6 +1393,35 @@ public WeightedAvgAggregate weightedAvg() {
return TaggedUnionUtils.get(this, Kind.WeightedAvg);
}

@Nullable
private final String _customKind;

/**
* Is this a custom {@code Aggregate} defined by a plugin?
*/
public boolean _isCustom() {
return _kind == Kind._Custom;
}

/**
* Get the actual kind when {@code _kind()} equals {@link Kind#_Custom}
* (plugin-defined variant).
*/
@Nullable
public final String _customKind() {
return _customKind;
}

/**
* Get the custom plugin-defined variant value.
*
* @throws IllegalStateException
* if the current variant is not {@link Kind#_Custom}.
*/
public JsonData _custom() {
return TaggedUnionUtils.get(this, Kind._Custom);
}

@Override
public void serialize(JsonGenerator generator, JsonpMapper mapper) {

@@ -1393,7 +1436,8 @@ public String toString() {

public static class Builder extends ObjectBuilderBase implements ObjectBuilder<Aggregate> {
private Kind _kind;
private AggregateVariant _value;
private Object _value;
private String _customKind;

public ObjectBuilder<Aggregate> adjacencyMatrix(AdjacencyMatrixAggregate v) {
this._kind = Kind.AdjacencyMatrix;
@@ -2109,6 +2153,22 @@ public ObjectBuilder<Aggregate> weightedAvg(
return this.weightedAvg(fn.apply(new WeightedAvgAggregate.Builder()).build());
}

/**
* Define this {@code Aggregate} as a plugin-defined variant.
*
* @param name
* the plugin-defined identifier
* @param data
* the data for this custom {@code Aggregate}. It is converted
* internally to {@link JsonData}.
*/
public ObjectBuilder<Aggregate> _custom(String name, Object data) {
this._kind = Kind._Custom;
this._customKind = name;
this._value = JsonData.of(data);
return this;
}

public Aggregate build() {
_checkSingleUse();
return new Aggregate(this);
@@ -2187,7 +2247,7 @@ public Aggregate build() {
deserializers.put("variable_width_histogram", VariableWidthHistogramAggregate._DESERIALIZER);
deserializers.put("weighted_avg", WeightedAvgAggregate._DESERIALIZER);

_TYPED_KEYS_DESERIALIZER = new ExternallyTaggedUnion.Deserializer<>(deserializers,
(name, value) -> new Aggregate(value)).typedKeys();
_TYPED_KEYS_DESERIALIZER = new ExternallyTaggedUnion.Deserializer<>(deserializers, Aggregate::new,
Aggregate::new).typedKeys();
}
}
Loading