From c7a34d0201938289c44512c186a053efa44bb6f3 Mon Sep 17 00:00:00 2001 From: Peter-Josef Meisch Date: Thu, 4 Dec 2025 23:19:02 +0100 Subject: [PATCH] Fix UpdateQuery.Builder to allow only a scriptname to be set. Signed-off-by: Peter-Josef Meisch --- .../elasticsearch/core/query/UpdateQuery.java | 4 +- .../core/query/UpdateQueryTest.java | 45 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) create mode 100644 src/test/java/org/springframework/data/elasticsearch/core/query/UpdateQueryTest.java diff --git a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java index e3e0db622..7e2dcfdab 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/query/UpdateQuery.java @@ -438,8 +438,8 @@ public Builder withScriptName(String scriptName) { public UpdateQuery build() { - if (script == null && document == null && query == null) { - throw new IllegalArgumentException("either script, document or query must be set"); + if (script == null && scriptName == null && document == null && query == null) { + throw new IllegalArgumentException("either script, scriptName, document or query must be set"); } return new UpdateQuery(id, script, params, document, upsert, lang, routing, scriptedUpsert, docAsUpsert, diff --git a/src/test/java/org/springframework/data/elasticsearch/core/query/UpdateQueryTest.java b/src/test/java/org/springframework/data/elasticsearch/core/query/UpdateQueryTest.java new file mode 100644 index 000000000..2f4a780d1 --- /dev/null +++ b/src/test/java/org/springframework/data/elasticsearch/core/query/UpdateQueryTest.java @@ -0,0 +1,45 @@ +package org.springframework.data.elasticsearch.core.query; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import org.springframework.data.elasticsearch.core.document.Document; + +class UpdateQueryTest { + + @Test // #3205 + @DisplayName("should build query with only a script") + void shouldBuildQueryWithOnlyAScript() { + + UpdateQuery.builder("id") + .withScript("script") + .build(); + } + + @Test // #3205 + @DisplayName("should build query with only a scriptname") + void shouldBuildQueryWithOnlyAScriptName() { + + UpdateQuery.builder("id") + .withScriptName("scriptname") + .build(); + } + + @Test // #3205 + @DisplayName("should build query with only a document") + void shouldBuildQueryWithOnlyASDocument() { + + UpdateQuery.builder("id") + .withDocument(Document.create()) + .build(); + } + + @Test // #3205 + @DisplayName("should build query with only a query") + void shouldBuildQueryWithOnlyAQuery() { + + Query query = StringQuery.builder("StrignQuery").build(); + + UpdateQuery.builder(query) + .build(); + } +}