From ef2bc88b77d8a1d93f0df7d5ecb8edc125ce8178 Mon Sep 17 00:00:00 2001 From: Alexander Goussas Date: Tue, 2 Jun 2026 11:31:27 -0500 Subject: [PATCH] feat: fetch defs/translations in parallel and url encode word param --- .../net/frustratedfunctor/ui/UiResource.java | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/main/java/net/frustratedfunctor/ui/UiResource.java b/src/main/java/net/frustratedfunctor/ui/UiResource.java index 00e688d..06b07e7 100644 --- a/src/main/java/net/frustratedfunctor/ui/UiResource.java +++ b/src/main/java/net/frustratedfunctor/ui/UiResource.java @@ -11,12 +11,19 @@ import jakarta.ws.rs.core.MediaType; import net.frustratedfunctor.definitions.WordDefinitionService; import net.frustratedfunctor.translations.WordTranslationService; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + @Path("/ui") public class UiResource { private final WordDefinitionService definitions; private final WordTranslationService translations; + private static final ExecutorService exec = Executors.newVirtualThreadPerTaskExecutor(); + @Location("pub/index.html") Template index; @@ -31,11 +38,12 @@ public class UiResource { public TemplateInstance getTranslationsDefinitions( @FormParam("word") String word, @FormParam("lang") String lang - ) { - final var data = new WordTranslationsDefinitions( - translations.translate(word).translations(), - definitions.define(word, lang).definitions() - ); + ) throws Exception { + final var encodedWord = URLEncoder.encode(word, StandardCharsets.UTF_8); + final var f1 = exec.submit(() -> translations.translate(encodedWord).translations()); + final var f2 = exec.submit(() -> definitions.define(encodedWord, lang).definitions()); + // TODO: Handle error + final var data = new WordTranslationsDefinitions(f1.get(), f2.get()); return index.data("translationsDefinitions", data); } -- 2.43.0