Fix NPE in RequestFactory when language in UpdateQuery is not set (4.4.x).

Original Pull Request #2288
Closes #2287
This commit is contained in:
Peter-Josef Meisch 2022-09-03 07:50:01 +02:00 committed by GitHub
parent 346c5cce58
commit 988736dd41
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 2 deletions

View File

@ -613,7 +613,7 @@ class RequestFactory {
Object queryObject = query.getObject(); Object queryObject = query.getObject();
if (queryObject != null) { if (queryObject != null) {
String id = StringUtils.isEmpty(query.getId()) ? getPersistentEntityId(queryObject) : query.getId(); String id = StringUtils.hasText(query.getId()) ? query.getId() : getPersistentEntityId(queryObject);
// If we have a query id and a document id, do not ask ES to generate one. // If we have a query id and a document id, do not ask ES to generate one.
if (id != null) { if (id != null) {
indexRequest = new IndexRequest(indexName).id(id); indexRequest = new IndexRequest(indexName).id(id);
@ -1027,7 +1027,14 @@ class RequestFactory {
if (params == null) { if (params == null) {
params = new HashMap<>(); params = new HashMap<>();
} }
Script script = new Script(getScriptType(query.getScriptType()), query.getLang(), query.getScript(), params); org.elasticsearch.script.ScriptType scriptType = getScriptType(query.getScriptType());
String lang = query.getLang();
if (scriptType == org.elasticsearch.script.ScriptType.INLINE && lang == null) {
lang = "painless";
}
Script script = new Script(scriptType, lang, query.getScript(), params);
updateRequest.script(script); updateRequest.script(script);
} }

View File

@ -140,6 +140,18 @@ class RequestFactoryTests {
assertThat(request.upsertRequest()).isNotNull(); assertThat(request.upsertRequest()).isNotNull();
} }
@Test // #2287
@DisplayName("should create update query when script language is not set")
void shouldCreateUpdateQueryWhenScriptTypeIsSetToNull() {
UpdateQuery updateQuery = UpdateQuery.builder("1") //
.withScript("script").build();
UpdateRequest request = requestFactory.updateRequest(updateQuery, IndexCoordinates.of("index"));
assertThat(request).isNotNull();
}
@Test // DATAES-693 @Test // DATAES-693
public void shouldReturnSourceWhenRequested() { public void shouldReturnSourceWhenRequested() {
// given // given