From 97f3cff5864fc694314563f66d6eeb04da714968 Mon Sep 17 00:00:00 2001 From: Dominick Leppich Date: Tue, 14 Jan 2025 11:09:18 +0100 Subject: [PATCH] fix: URL encoding in vocabulary server communication --- src/main/java/io/goobi/workflow/api/vocabulary/RESTAPI.java | 4 +++- .../workflow/api/vocabulary/hateoas/HATEOASPaginator.java | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/java/io/goobi/workflow/api/vocabulary/RESTAPI.java b/src/main/java/io/goobi/workflow/api/vocabulary/RESTAPI.java index 2a66aec4d..08cdc7229 100644 --- a/src/main/java/io/goobi/workflow/api/vocabulary/RESTAPI.java +++ b/src/main/java/io/goobi/workflow/api/vocabulary/RESTAPI.java @@ -16,6 +16,8 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import java.io.IOException; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; @@ -43,7 +45,7 @@ private String generateUrl(String endpoint, Object... parameters) { if (url.contains("{{" + i + "}}")) { url = url.replace("{{" + i + "}}", parameters[i].toString()); } else { - queryParams.add(parameters[i].toString()); + queryParams.add(URLEncoder.encode(parameters[i].toString(), StandardCharsets.UTF_8)); } } if (!queryParams.isEmpty()) { diff --git a/src/main/java/io/goobi/workflow/api/vocabulary/hateoas/HATEOASPaginator.java b/src/main/java/io/goobi/workflow/api/vocabulary/hateoas/HATEOASPaginator.java index 54e08ee9f..5f2b39a5b 100644 --- a/src/main/java/io/goobi/workflow/api/vocabulary/hateoas/HATEOASPaginator.java +++ b/src/main/java/io/goobi/workflow/api/vocabulary/hateoas/HATEOASPaginator.java @@ -13,6 +13,8 @@ import javax.ws.rs.client.Invocation; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import java.util.Collection; import java.util.HashMap; import java.util.LinkedList; @@ -231,8 +233,8 @@ private static String updatePageAndSizeUrlParameters(String url, Optional } pageSize.ifPresent(value -> parameters.put("size", String.valueOf(value))); pageNumber.ifPresent(value -> parameters.put("page", String.valueOf(value))); - sortField.ifPresent(s -> parameters.put("sort", s)); - searchParameter.ifPresent(s -> parameters.put("search", s)); + sortField.ifPresent(s -> parameters.put("sort", URLEncoder.encode(s, StandardCharsets.UTF_8))); + searchParameter.ifPresent(s -> parameters.put("search", URLEncoder.encode(s, StandardCharsets.UTF_8))); if (searchParameter.isEmpty()) { parameters.remove("search"); }