Skip to content

Commit b1682fc

Browse files
authored
[ML] Parse single named object in config classes (#53472)
1 parent 7a18294 commit b1682fc

File tree

4 files changed

+4
-24
lines changed

4 files changed

+4
-24
lines changed

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/inference/TrainedModelDefinition.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ public class TrainedModelDefinition implements ToXContentObject {
4343
true,
4444
TrainedModelDefinition.Builder::new);
4545
static {
46-
PARSER.declareNamedObjects(TrainedModelDefinition.Builder::setTrainedModel,
46+
PARSER.declareNamedObject(TrainedModelDefinition.Builder::setTrainedModel,
4747
(p, c, n) -> p.namedObject(TrainedModel.class, n, null),
48-
(modelDocBuilder) -> { /* Noop does not matter client side*/ },
4948
TRAINED_MODEL);
5049
PARSER.declareNamedObjects(TrainedModelDefinition.Builder::setPreProcessors,
5150
(p, c, n) -> p.namedObject(PreProcessor.class, n, null),
@@ -124,11 +123,6 @@ public Builder setTrainedModel(TrainedModel trainedModel) {
124123
return this;
125124
}
126125

127-
private Builder setTrainedModel(List<TrainedModel> trainedModel) {
128-
assert trainedModel.size() == 1;
129-
return setTrainedModel(trainedModel.get(0));
130-
}
131-
132126
public TrainedModelDefinition build() {
133127
return new TrainedModelDefinition(this.trainedModel, this.preProcessors);
134128
}

client/rest-high-level/src/main/java/org/elasticsearch/client/ml/inference/trainedmodel/ensemble/Ensemble.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,8 @@ public class Ensemble implements TrainedModel {
5656
p.namedObject(TrainedModel.class, n, null),
5757
(ensembleBuilder) -> { /* Noop does not matter client side */ },
5858
TRAINED_MODELS);
59-
PARSER.declareNamedObjects(Ensemble.Builder::setOutputAggregatorFromParser,
59+
PARSER.declareNamedObject(Ensemble.Builder::setOutputAggregator,
6060
(p, c, n) -> p.namedObject(OutputAggregator.class, n, null),
61-
(ensembleBuilder) -> { /* Noop does not matter client side */ },
6261
AGGREGATE_OUTPUT);
6362
PARSER.declareString(Ensemble.Builder::setTargetType, TARGET_TYPE);
6463
PARSER.declareStringArray(Ensemble.Builder::setClassificationLabels, CLASSIFICATION_LABELS);
@@ -194,9 +193,6 @@ public Builder setClassificationWeights(List<Double> classificationWeights) {
194193
return this;
195194
}
196195

197-
private void setOutputAggregatorFromParser(List<OutputAggregator> outputAggregators) {
198-
this.setOutputAggregator(outputAggregators.get(0));
199-
}
200196

201197
private void setTargetType(String targetType) {
202198
this.targetType = TargetType.fromString(targetType);

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/TrainedModelDefinition.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,11 +53,10 @@ private static ObjectParser<TrainedModelDefinition.Builder, Void> createParser(b
5353
ObjectParser<TrainedModelDefinition.Builder, Void> parser = new ObjectParser<>(NAME,
5454
ignoreUnknownFields,
5555
TrainedModelDefinition.Builder::builderForParser);
56-
parser.declareNamedObjects(TrainedModelDefinition.Builder::setTrainedModel,
56+
parser.declareNamedObject(TrainedModelDefinition.Builder::setTrainedModel,
5757
(p, c, n) -> ignoreUnknownFields ?
5858
p.namedObject(LenientlyParsedTrainedModel.class, n, null) :
5959
p.namedObject(StrictlyParsedTrainedModel.class, n, null),
60-
(modelDocBuilder) -> { /* Noop does not matter as we will throw if more than one is defined */ },
6160
TRAINED_MODEL);
6261
parser.declareNamedObjects(TrainedModelDefinition.Builder::setPreProcessors,
6362
(p, c, n) -> ignoreUnknownFields ?

x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/ml/inference/trainedmodel/ensemble/Ensemble.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,10 @@ private static ObjectParser<Ensemble.Builder, Void> createParser(boolean lenient
7373
p.namedObject(StrictlyParsedTrainedModel.class, n, null),
7474
(ensembleBuilder) -> ensembleBuilder.setModelsAreOrdered(true),
7575
TRAINED_MODELS);
76-
parser.declareNamedObjects(Ensemble.Builder::setOutputAggregatorFromParser,
76+
parser.declareNamedObject(Ensemble.Builder::setOutputAggregator,
7777
(p, c, n) ->
7878
lenient ? p.namedObject(LenientlyParsedOutputAggregator.class, n, null) :
7979
p.namedObject(StrictlyParsedOutputAggregator.class, n, null),
80-
(ensembleBuilder) -> {/*Noop as it could be an array or object, it just has to be a one*/},
8180
AGGREGATE_OUTPUT);
8281
parser.declareString(Ensemble.Builder::setTargetType, TARGET_TYPE);
8382
parser.declareStringArray(Ensemble.Builder::setClassificationLabels, CLASSIFICATION_LABELS);
@@ -414,14 +413,6 @@ public Builder setClassificationWeights(List<Double> classificationWeights) {
414413
return this;
415414
}
416415

417-
private void setOutputAggregatorFromParser(List<OutputAggregator> outputAggregators) {
418-
if (outputAggregators.size() != 1) {
419-
throw ExceptionsHelper.badRequestException("[{}] must have exactly one aggregator defined.",
420-
AGGREGATE_OUTPUT.getPreferredName());
421-
}
422-
this.setOutputAggregator(outputAggregators.get(0));
423-
}
424-
425416
private void setTargetType(String targetType) {
426417
this.targetType = TargetType.fromString(targetType);
427418
}

0 commit comments

Comments
 (0)