Skip to content

Commit 988736d

Browse files
authored
Fix NPE in RequestFactory when language in UpdateQuery is not set (4.4.x).
Original Pull Request #2288 Closes #2287
1 parent 346c5cc commit 988736d

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

src/main/java/org/springframework/data/elasticsearch/core/RequestFactory.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ public IndexRequest indexRequest(IndexQuery query, IndexCoordinates index) {
613613
Object queryObject = query.getObject();
614614

615615
if (queryObject != null) {
616-
String id = StringUtils.isEmpty(query.getId()) ? getPersistentEntityId(queryObject) : query.getId();
616+
String id = StringUtils.hasText(query.getId()) ? query.getId() : getPersistentEntityId(queryObject);
617617
// If we have a query id and a document id, do not ask ES to generate one.
618618
if (id != null) {
619619
indexRequest = new IndexRequest(indexName).id(id);
@@ -1027,7 +1027,14 @@ public UpdateRequest updateRequest(UpdateQuery query, IndexCoordinates index) {
10271027
if (params == null) {
10281028
params = new HashMap<>();
10291029
}
1030-
Script script = new Script(getScriptType(query.getScriptType()), query.getLang(), query.getScript(), params);
1030+
org.elasticsearch.script.ScriptType scriptType = getScriptType(query.getScriptType());
1031+
String lang = query.getLang();
1032+
1033+
if (scriptType == org.elasticsearch.script.ScriptType.INLINE && lang == null) {
1034+
lang = "painless";
1035+
}
1036+
1037+
Script script = new Script(scriptType, lang, query.getScript(), params);
10311038
updateRequest.script(script);
10321039
}
10331040

src/test/java/org/springframework/data/elasticsearch/core/RequestFactoryTests.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,18 @@ public void shouldUseUpsertOnUpdate() {
140140
assertThat(request.upsertRequest()).isNotNull();
141141
}
142142

143+
@Test // #2287
144+
@DisplayName("should create update query when script language is not set")
145+
void shouldCreateUpdateQueryWhenScriptTypeIsSetToNull() {
146+
147+
UpdateQuery updateQuery = UpdateQuery.builder("1") //
148+
.withScript("script").build();
149+
150+
UpdateRequest request = requestFactory.updateRequest(updateQuery, IndexCoordinates.of("index"));
151+
152+
assertThat(request).isNotNull();
153+
}
154+
143155
@Test // DATAES-693
144156
public void shouldReturnSourceWhenRequested() {
145157
// given

0 commit comments

Comments
 (0)