in src/main/java/org/opensearch/knn/index/MethodComponentContext.java [74:124]
public static MethodComponentContext parse(Object in) {
if (!(in instanceof Map<?, ?>)) {
throw new MapperParsingException("Unable to parse MethodComponent");
}
@SuppressWarnings("unchecked")
Map<String, Object> methodMap = (Map<String, Object>) in;
String name = "";
Map<String, Object> parameters = new HashMap<>();
String key;
Object value;
for (Map.Entry<String, Object> methodEntry : methodMap.entrySet()) {
key = methodEntry.getKey();
value = methodEntry.getValue();
if (NAME.equals(key)) {
if (!(value instanceof String)) {
throw new MapperParsingException("Component name should be a string");
}
name = (String) value;
} else if (PARAMETERS.equals(key)) {
if (!(value instanceof Map)) {
throw new MapperParsingException("Unable to parse parameters for method component");
}
// Check to interpret map parameters as sub-methodComponentContexts
@SuppressWarnings("unchecked")
Map<String, Object> parameters1 = ((Map<String, Object>) value).entrySet().stream().collect(Collectors.toMap(
Map.Entry::getKey, e -> {
Object v = e.getValue();
if (v instanceof Map) {
return MethodComponentContext.parse(v);
}
return v;
}
));
parameters = parameters1;
} else {
throw new MapperParsingException("Invalid parameter for MethodComponentContext: " + key);
}
}
if (name.isEmpty()) {
throw new MapperParsingException(NAME + " needs to be set");
}
return new MethodComponentContext(name, parameters);
}