Skip to content

Commit f242543

Browse files
committed
rename converter to utils
Signed-off-by: xil <fridalu66@gmail.com>
1 parent 7fc8f8d commit f242543

18 files changed

+321
-947
lines changed
Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,28 @@
2020
import java.util.Map;
2121

2222
/**
23-
* Protocol Buffer converter for ExpDecayFunction.
24-
* This converter handles the transformation of Protocol Buffer ExpDecayFunction objects
25-
* into OpenSearch ExpDecayFunctionBuilder instances.
23+
* Utility class for converting Protocol Buffer DecayFunction to OpenSearch ExponentialDecayFunctionBuilder.
24+
* This utility handles the transformation of Protocol Buffer DecayFunction objects
25+
* into OpenSearch ExponentialDecayFunctionBuilder instances.
2626
*/
27-
public class ExpDecayFunctionProtoConverter {
27+
class ExpDecayFunctionProtoUtils {
2828

29-
/**
30-
* Default constructor for ExpDecayFunctionProtoConverter.
31-
*/
32-
public ExpDecayFunctionProtoConverter() {
33-
// Default constructor
29+
private ExpDecayFunctionProtoUtils() {
30+
// Utility class, no instances
3431
}
3532

3633
/**
3734
* Converts a Protocol Buffer DecayFunction to an OpenSearch ScoreFunctionBuilder.
38-
* Similar to {@link org.opensearch.index.query.functionscore.ExponentialDecayFunctionBuilder},
35+
* Similar to {@link org.opensearch.index.query.functionscore.DecayFunctionParser#fromXContent(org.opensearch.core.xcontent.XContentParser)},
3936
* this method parses the Protocol Buffer representation and creates a properly configured
4037
* ExponentialDecayFunctionBuilder with decay placement parameters (numeric, geo, or date).
38+
* Equivalent to {@code #fromProto(DecayFunction)} for gRPC Protocol Buffer conversion.
4139
*
4240
* @param decayFunction the Protocol Buffer DecayFunction
4341
* @return the corresponding OpenSearch ScoreFunctionBuilder
4442
* @throws IllegalArgumentException if the decayFunction is null or doesn't contain placements
4543
*/
46-
public ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
44+
static ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
4745
if (decayFunction == null || decayFunction.getPlacementCount() == 0) {
4846
throw new IllegalArgumentException("DecayFunction must have at least one placement");
4947
}
@@ -141,5 +139,4 @@ private static ScoreFunctionBuilder<?> parseDateExpDecay(String fieldName, DateD
141139

142140
return builder;
143141
}
144-
145142
}
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,29 +13,27 @@
1313
import org.opensearch.protobufs.FieldValueFactorScoreFunction;
1414

1515
/**
16-
* Protocol Buffer converter for FieldValueFactorScoreFunction.
17-
* This converter handles the transformation of Protocol Buffer FieldValueFactorScoreFunction objects
16+
* Utility class for converting Protocol Buffer FieldValueFactorScoreFunction to OpenSearch objects.
17+
* This utility handles the transformation of Protocol Buffer FieldValueFactorScoreFunction objects
1818
* into OpenSearch FieldValueFactorFunctionBuilder instances.
1919
*/
20-
public class FieldValueFactorFunctionProtoConverter {
20+
class FieldValueFactorFunctionProtoUtils {
2121

22-
/**
23-
* Default constructor for FieldValueFactorFunctionProtoConverter.
24-
*/
25-
public FieldValueFactorFunctionProtoConverter() {
26-
// Default constructor
22+
private FieldValueFactorFunctionProtoUtils() {
23+
// Utility class, no instances
2724
}
2825

2926
/**
3027
* Converts a Protocol Buffer FieldValueFactorScoreFunction to an OpenSearch ScoreFunctionBuilder.
31-
* Similar to {@link org.opensearch.index.query.functionscore.FieldValueFactorFunctionBuilder#fromXContent},
32-
* this method parses the field, factor, missing value, and modifier parameters.
28+
* Similar to {@link FieldValueFactorFunctionBuilder#fromXContent(XContentParser)}, this method
29+
* parses the field, factor, missing value, and modifier parameters.
30+
* Equivalent to {@code #fromProto(FieldValueFactorScoreFunction)} for gRPC Protocol Buffer conversion.
3331
*
3432
* @param fieldValueFactor the Protocol Buffer FieldValueFactorScoreFunction
3533
* @return the corresponding OpenSearch ScoreFunctionBuilder
3634
* @throws IllegalArgumentException if the fieldValueFactor is null
3735
*/
38-
public ScoreFunctionBuilder<?> fromProto(FieldValueFactorScoreFunction fieldValueFactor) {
36+
static ScoreFunctionBuilder<?> fromProto(FieldValueFactorScoreFunction fieldValueFactor) {
3937
if (fieldValueFactor == null) {
4038
throw new IllegalArgumentException("FieldValueFactorScoreFunction cannot be null");
4139
}

modules/transport-grpc/src/main/java/org/opensearch/transport/grpc/proto/request/search/query/functionscore/FunctionScoreQueryBuilderProtoUtils.java

Lines changed: 35 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ static FunctionScoreQueryBuilder fromProto(FunctionScoreQuery functionScoreQuery
8989
combineFunction = parseBoostMode(functionScoreQueryProto.getBoostMode());
9090
}
9191

92-
if (functionScoreQueryProto.hasScoreMode()) {
92+
if (functionScoreQueryProto.hasScoreMode()
93+
&& functionScoreQueryProto.getScoreMode() != FunctionScoreMode.FUNCTION_SCORE_MODE_UNSPECIFIED) {
9394
scoreMode = parseScoreMode(functionScoreQueryProto.getScoreMode());
9495
}
9596

@@ -144,13 +145,10 @@ private static FunctionScoreQueryBuilder.FilterFunctionBuilder parseFunctionScor
144145
filter = registry.fromProto(filterContainer);
145146
}
146147

147-
// Check for weight (only set if present, otherwise use default)
148148
if (container.hasWeight()) {
149149
functionWeight = container.getWeight();
150150
}
151151

152-
// Parse the function score container directly
153-
// If there's no function type but there's a weight, create a WeightBuilder
154152
if (container.getFunctionScoreContainerCase() == FunctionScoreContainer.FunctionScoreContainerCase.FUNCTIONSCORECONTAINER_NOT_SET) {
155153
scoreFunction = null;
156154
} else {
@@ -183,58 +181,51 @@ private static ScoreFunctionBuilder<?> parseScoreFunction(FunctionScoreContainer
183181
FunctionScoreContainer.FunctionScoreContainerCase functionCase = container.getFunctionScoreContainerCase();
184182

185183
return switch (functionCase) {
186-
case FIELD_VALUE_FACTOR -> new FieldValueFactorFunctionProtoConverter().fromProto(container.getFieldValueFactor());
187-
case RANDOM_SCORE -> new RandomScoreFunctionProtoConverter().fromProto(container.getRandomScore());
188-
case SCRIPT_SCORE -> new ScriptScoreFunctionProtoConverter().fromProto(container.getScriptScore());
189-
case EXP -> new ExpDecayFunctionProtoConverter().fromProto(container.getExp());
190-
case GAUSS -> new GaussDecayFunctionProtoConverter().fromProto(container.getGauss());
191-
case LINEAR -> new LinearDecayFunctionProtoConverter().fromProto(container.getLinear());
184+
case FIELD_VALUE_FACTOR -> FieldValueFactorFunctionProtoUtils.fromProto(container.getFieldValueFactor());
185+
case RANDOM_SCORE -> RandomScoreFunctionProtoUtils.fromProto(container.getRandomScore());
186+
case SCRIPT_SCORE -> ScriptScoreFunctionProtoUtils.fromProto(container.getScriptScore());
187+
case EXP -> ExpDecayFunctionProtoUtils.fromProto(container.getExp());
188+
case GAUSS -> GaussDecayFunctionProtoUtils.fromProto(container.getGauss());
189+
case LINEAR -> LinearDecayFunctionProtoUtils.fromProto(container.getLinear());
192190
default -> throw new IllegalArgumentException("Unsupported function score type: " + functionCase);
193191
};
194192
}
195193

196194
/**
197-
* Parses a FunctionBoostMode enum to CombineFunction.
195+
* Parses a FunctionBoostMode enum to CombineFunction. *
196+
* @param boostMode the FunctionBoostMode to parse
197+
* @return the corresponding CombineFunction
198+
* @throws IllegalArgumentException if the boostMode is unknown or unsupported
198199
*/
199200
private static CombineFunction parseBoostMode(FunctionBoostMode boostMode) {
200-
switch (boostMode) {
201-
case FUNCTION_BOOST_MODE_AVG:
202-
return CombineFunction.AVG;
203-
case FUNCTION_BOOST_MODE_MAX:
204-
return CombineFunction.MAX;
205-
case FUNCTION_BOOST_MODE_MIN:
206-
return CombineFunction.MIN;
207-
case FUNCTION_BOOST_MODE_MULTIPLY:
208-
return CombineFunction.MULTIPLY;
209-
case FUNCTION_BOOST_MODE_REPLACE:
210-
return CombineFunction.REPLACE;
211-
case FUNCTION_BOOST_MODE_SUM:
212-
return CombineFunction.SUM;
213-
default:
214-
throw new IllegalArgumentException("Unsupported boost mode: " + boostMode);
215-
}
201+
return switch (boostMode) {
202+
case FUNCTION_BOOST_MODE_AVG -> CombineFunction.AVG;
203+
case FUNCTION_BOOST_MODE_MAX -> CombineFunction.MAX;
204+
case FUNCTION_BOOST_MODE_MIN -> CombineFunction.MIN;
205+
case FUNCTION_BOOST_MODE_MULTIPLY -> CombineFunction.MULTIPLY;
206+
case FUNCTION_BOOST_MODE_REPLACE -> CombineFunction.REPLACE;
207+
case FUNCTION_BOOST_MODE_SUM -> CombineFunction.SUM;
208+
default -> throw new IllegalArgumentException("Unsupported boost mode: " + boostMode);
209+
};
216210
}
217211

218212
/**
219-
* Parses a FunctionScoreMode enum to FunctionScoreQuery.ScoreMode.
213+
* Parses a FunctionScoreMode enum to ScoreMode.
214+
*
215+
* @param scoreMode the FunctionScoreMode to parse
216+
* @return the corresponding FunctionScoreQuery.ScoreMode
217+
* @throws IllegalArgumentException if the scoreMode is unknown or unsupported
220218
*/
221219
private static org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode parseScoreMode(FunctionScoreMode scoreMode) {
222-
switch (scoreMode) {
223-
case FUNCTION_SCORE_MODE_AVG:
224-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.AVG;
225-
case FUNCTION_SCORE_MODE_FIRST:
226-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.FIRST;
227-
case FUNCTION_SCORE_MODE_MAX:
228-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MAX;
229-
case FUNCTION_SCORE_MODE_MIN:
230-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MIN;
231-
case FUNCTION_SCORE_MODE_MULTIPLY:
232-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MULTIPLY;
233-
case FUNCTION_SCORE_MODE_SUM:
234-
return org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.SUM;
235-
default:
236-
return FunctionScoreQueryBuilder.DEFAULT_SCORE_MODE;
237-
}
220+
return switch (scoreMode) {
221+
case FUNCTION_SCORE_MODE_AVG -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.AVG;
222+
case FUNCTION_SCORE_MODE_FIRST -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.FIRST;
223+
case FUNCTION_SCORE_MODE_MAX -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MAX;
224+
case FUNCTION_SCORE_MODE_MIN -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MIN;
225+
case FUNCTION_SCORE_MODE_MULTIPLY -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.MULTIPLY;
226+
case FUNCTION_SCORE_MODE_SUM -> org.opensearch.common.lucene.search.function.FunctionScoreQuery.ScoreMode.SUM;
227+
default -> throw new IllegalArgumentException("Unsupported score mode: " + scoreMode);
228+
};
238229
}
239230

240231
}
Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,28 @@
2020
import java.util.Map;
2121

2222
/**
23-
* Protocol Buffer converter for GaussDecayFunction.
24-
* This converter handles the transformation of Protocol Buffer GaussDecayFunction objects
23+
* Utility class for converting Protocol Buffer DecayFunction to OpenSearch GaussDecayFunctionBuilder.
24+
* This utility handles the transformation of Protocol Buffer DecayFunction objects
2525
* into OpenSearch GaussDecayFunctionBuilder instances.
2626
*/
27-
public class GaussDecayFunctionProtoConverter {
27+
class GaussDecayFunctionProtoUtils {
2828

29-
/**
30-
* Default constructor for GaussDecayFunctionProtoConverter.
31-
*/
32-
public GaussDecayFunctionProtoConverter() {
33-
// Default constructor
29+
private GaussDecayFunctionProtoUtils() {
30+
// Utility class, no instances
3431
}
3532

3633
/**
3734
* Converts a Protocol Buffer DecayFunction to an OpenSearch ScoreFunctionBuilder.
38-
* Similar to {@link org.opensearch.index.query.functionscore.GaussDecayFunctionBuilder},
35+
* Similar to {@link org.opensearch.index.query.functionscore.DecayFunctionParser#fromXContent(org.opensearch.core.xcontent.XContentParser)},
3936
* this method parses the Protocol Buffer representation and creates a properly configured
4037
* GaussDecayFunctionBuilder with decay placement parameters (numeric, geo, or date).
38+
* Equivalent to {@code #fromProto(DecayFunction)} for gRPC Protocol Buffer conversion.
4139
*
4240
* @param decayFunction the Protocol Buffer DecayFunction
4341
* @return the corresponding OpenSearch ScoreFunctionBuilder
4442
* @throws IllegalArgumentException if the decayFunction is null or doesn't contain placements
4543
*/
46-
public ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
44+
static ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
4745
if (decayFunction == null || decayFunction.getPlacementCount() == 0) {
4846
throw new IllegalArgumentException("DecayFunction must have at least one placement");
4947
}
@@ -141,5 +139,4 @@ private static ScoreFunctionBuilder<?> parseDateGaussDecay(String fieldName, Dat
141139

142140
return builder;
143141
}
144-
145142
}
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,30 +20,28 @@
2020
import java.util.Map;
2121

2222
/**
23-
* Protocol Buffer converter for LinearDecayFunction.
24-
* This converter handles the transformation of Protocol Buffer LinearDecayFunction objects
23+
* Utility class for converting Protocol Buffer DecayFunction to OpenSearch LinearDecayFunctionBuilder.
24+
* This utility handles the transformation of Protocol Buffer DecayFunction objects
2525
* into OpenSearch LinearDecayFunctionBuilder instances.
2626
*/
27-
public class LinearDecayFunctionProtoConverter {
27+
class LinearDecayFunctionProtoUtils {
2828

29-
/**
30-
* Default constructor for LinearDecayFunctionProtoConverter.
31-
*/
32-
public LinearDecayFunctionProtoConverter() {
33-
// Default constructor
29+
private LinearDecayFunctionProtoUtils() {
30+
// Utility class, no instances
3431
}
3532

3633
/**
3734
* Converts a Protocol Buffer DecayFunction to an OpenSearch ScoreFunctionBuilder.
38-
* Similar to {@link org.opensearch.index.query.functionscore.LinearDecayFunctionBuilder},
35+
* Similar to {@link org.opensearch.index.query.functionscore.DecayFunctionParser#fromXContent(org.opensearch.core.xcontent.XContentParser)},
3936
* this method parses the Protocol Buffer representation and creates a properly configured
4037
* LinearDecayFunctionBuilder with decay placement parameters (numeric, geo, or date).
38+
* Equivalent to {@code #fromProto(DecayFunction)} for gRPC Protocol Buffer conversion.
4139
*
4240
* @param decayFunction the Protocol Buffer DecayFunction
4341
* @return the corresponding OpenSearch ScoreFunctionBuilder
4442
* @throws IllegalArgumentException if the decayFunction is null or doesn't contain placements
4543
*/
46-
public ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
44+
static ScoreFunctionBuilder<?> fromProto(DecayFunction decayFunction) {
4745
if (decayFunction == null || decayFunction.getPlacementCount() == 0) {
4846
throw new IllegalArgumentException("DecayFunction must have at least one placement");
4947
}
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,27 @@
1212
import org.opensearch.protobufs.RandomScoreFunction;
1313

1414
/**
15-
* Protocol Buffer converter for RandomScoreFunction.
16-
* This converter handles the transformation of Protocol Buffer RandomScoreFunction objects
15+
* Utility class for converting Protocol Buffer RandomScoreFunction to OpenSearch objects.
16+
* This utility handles the transformation of Protocol Buffer RandomScoreFunction objects
1717
* into OpenSearch RandomScoreFunctionBuilder instances.
1818
*/
19-
public class RandomScoreFunctionProtoConverter {
19+
class RandomScoreFunctionProtoUtils {
2020

21-
/**
22-
* Default constructor for RandomScoreFunctionProtoConverter.
23-
*/
24-
public RandomScoreFunctionProtoConverter() {
25-
// Default constructor
21+
private RandomScoreFunctionProtoUtils() {
22+
// Utility class, no instances
2623
}
2724

2825
/**
2926
* Converts a Protocol Buffer RandomScoreFunction to an OpenSearch ScoreFunctionBuilder.
30-
* Similar to {@link RandomScoreFunctionBuilder#fromXContent(XContentParser)},
31-
* this method parses the seed and optional field parameters.
27+
* Similar to {@link RandomScoreFunctionBuilder#fromXContent(XContentParser)}, this method
28+
* parses the seed and optional field parameters.
29+
* Equivalent to {@code #fromProto(RandomScoreFunction)} for gRPC Protocol Buffer conversion.
3230
*
3331
* @param randomScore the Protocol Buffer RandomScoreFunction
3432
* @return the corresponding OpenSearch ScoreFunctionBuilder
3533
* @throws IllegalArgumentException if the randomScore is null
3634
*/
37-
public ScoreFunctionBuilder<?> fromProto(RandomScoreFunction randomScore) {
35+
static ScoreFunctionBuilder<?> fromProto(RandomScoreFunction randomScore) {
3836
if (randomScore == null) {
3937
throw new IllegalArgumentException("RandomScoreFunction cannot be null");
4038
}
Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,26 @@
1313
import org.opensearch.transport.grpc.proto.request.common.ScriptProtoUtils;
1414

1515
/**
16-
* Converter for ScriptScoreFunction.
17-
* This class converts Protocol Buffer ScriptScoreFunction objects into OpenSearch ScriptScoreFunctionBuilder instances.
16+
* Utility class for converting Protocol Buffer ScriptScoreFunction to OpenSearch objects.
17+
* This utility converts Protocol Buffer ScriptScoreFunction objects into OpenSearch ScriptScoreFunctionBuilder instances.
1818
*/
19-
public class ScriptScoreFunctionProtoConverter {
19+
class ScriptScoreFunctionProtoUtils {
2020

21-
/**
22-
* Default constructor for ScriptScoreFunctionProtoConverter.
23-
*/
24-
public ScriptScoreFunctionProtoConverter() {
25-
// Default constructor
21+
private ScriptScoreFunctionProtoUtils() {
22+
// Utility class, no instances
2623
}
2724

2825
/**
2926
* Converts a Protocol Buffer ScriptScoreFunction to an OpenSearch ScoreFunctionBuilder.
30-
* Similar to {@link org.opensearch.index.query.functionscore.ScriptScoreFunctionBuilder#fromXContent(XContentParser)},
31-
* this method parses the script parameter and constructs the builder.
27+
* Similar to {@link org.opensearch.index.query.functionscore.ScriptScoreFunctionBuilder#fromXContent(org.opensearch.core.xcontent.XContentParser)}, this method
28+
* parses the script parameter and constructs the builder.
29+
* Equivalent to {@code #fromProto(ScriptScoreFunction)} for gRPC Protocol Buffer conversion.
3230
*
3331
* @param scriptScore the Protocol Buffer ScriptScoreFunction
3432
* @return the corresponding OpenSearch ScoreFunctionBuilder
3533
* @throws IllegalArgumentException if the scriptScore is null or doesn't contain a script
3634
*/
37-
public ScoreFunctionBuilder<?> fromProto(ScriptScoreFunction scriptScore) {
35+
static ScoreFunctionBuilder<?> fromProto(ScriptScoreFunction scriptScore) {
3836
if (scriptScore == null) {
3937
throw new IllegalArgumentException("ScriptScoreFunction cannot be null");
4038
}

modules/transport-grpc/src/main/java/org/opensearch/transport/grpc/proto/request/search/query/functionscore/package-info.java

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,9 @@
77
*/
88

99
/**
10-
* Package for converting protobuf function score containers to OpenSearch ScoreFunctionBuilder instances.
11-
*
12-
* This package contains converters for various function score types including:
13-
* <ul>
14-
* <li>Exponential decay functions</li>
15-
* <li>Gaussian decay functions</li>
16-
* <li>Linear decay functions</li>
17-
* <li>Script score functions</li>
18-
* <li>Field value factor functions</li>
19-
* <li>Random score functions</li>
20-
* </ul>
21-
*
22-
* Each converter is responsible for converting protobuf representations to their corresponding
23-
* OpenSearch ScoreFunctionBuilder implementations.
10+
* This package contains utility classes for converting function score components between OpenSearch
11+
* and Protocol Buffers formats. These utilities handle the transformation of score function builders,
12+
* function parameters, and function configurations to ensure proper communication between gRPC clients
13+
* and the OpenSearch server.
2414
*/
2515
package org.opensearch.transport.grpc.proto.request.search.query.functionscore;

0 commit comments

Comments
 (0)