From: Alexander Goussas Date: Tue, 2 Jun 2026 16:31:27 +0000 (-0500) Subject: feat: fetch defs/translations in parallel and url encode word param X-Git-Url: http://git.frustrated-labs.net/?a=commitdiff_plain;h=ef2bc88b77d8a1d93f0df7d5ecb8edc125ce8178;p=larousseapi feat: fetch defs/translations in parallel and url encode word param --- 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); }