This is an automated email from the ASF dual-hosted git repository.
tilman pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tika.git
The following commit(s) were added to refs/heads/main by this push:
new f24204d28 TIKA-4526: Fix nondeterministic failures in
TranslateResourceTest by splitting @PUT/@POST handlers (#2368)
f24204d28 is described below
commit f24204d285c2c3e22fbbae1b56d3e464d399eb33
Author: Luca Dai <[email protected]>
AuthorDate: Mon Oct 20 22:37:36 2025 -0500
TIKA-4526: Fix nondeterministic failures in TranslateResourceTest by
splitting @PUT/@POST handlers (#2368)
Co-authored-by: LucaD <[email protected]>
---
.../server/core/resource/TranslateResource.java | 50 +++++++++++++++-------
1 file changed, 34 insertions(+), 16 deletions(-)
diff --git
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
index d19ead2f7..19b382c8b 100644
---
a/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
+++
b/tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java
@@ -57,36 +57,40 @@ public class TranslateResource {
this.serverStatus = serverStatus;
this.timeoutMillis = timeoutMillis;
}
-
- @PUT
+
+ // TIKA-4526: handle @PUT and @POST separately to avoid nondeterministic
failures
@POST
@Path("/all/{translator}/{src}/{dest}")
@Consumes("*/*")
@Produces("text/plain")
- public String translate(final InputStream is, @PathParam("translator")
String translator, @PathParam("src") String sLang, @PathParam("dest") String
dLang)
+ public String translatePost(final InputStream is, @PathParam("translator")
String translator, @PathParam("src") String sLang, @PathParam("dest") String
dLang)
throws TikaException, IOException {
return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang,
dLang);
-
}
@PUT
+ @Path("/all/{translator}/{src}/{dest}")
+ @Consumes("*/*")
+ @Produces("text/plain")
+ public String translatePut(final InputStream is, @PathParam("translator")
String translator, @PathParam("src") String sLang, @PathParam("dest") String
dLang)
+ throws TikaException, IOException {
+ return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang,
dLang);
+ }
+
@POST
@Path("/all/{translator}/{dest}")
@Consumes("*/*")
@Produces("text/plain")
- public String autoTranslate(final InputStream is, @PathParam("translator")
String translator, @PathParam("dest") String dLang) throws TikaException,
IOException {
- final String content = IOUtils.toString(is, UTF_8);
- LanguageResult language = new OptimaizeLangDetector()
- .loadModels()
- .detect(content);
- if (language.isUnknown()) {
- throw new TikaException("Unable to detect language to use for
translation of text");
- }
-
- String sLang = language.getLanguage();
- LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
+ public String autoTranslatePost(final InputStream is,
@PathParam("translator") String translator, @PathParam("dest") String dLang)
throws TikaException, IOException {
+ return doAutoTranslate(IOUtils.toString(is, UTF_8), translator, dLang);
+ }
- return doTranslate(content, translator, sLang, dLang);
+ @PUT
+ @Path("/all/{translator}/{dest}")
+ @Consumes("*/*")
+ @Produces("text/plain")
+ public String autoTranslatePut(final InputStream is,
@PathParam("translator") String translator, @PathParam("dest") String dLang)
throws TikaException, IOException {
+ return doAutoTranslate(IOUtils.toString(is, UTF_8), translator, dLang);
}
private String doTranslate(String content, String translator, String
sLang, String dLang) throws TikaException, IOException {
@@ -107,6 +111,20 @@ public class TranslateResource {
serverStatus.complete(taskId);
}
}
+
+ private String doAutoTranslate(String content, String translator, String
dLang) throws TikaException, IOException {
+ LanguageResult language = new OptimaizeLangDetector()
+ .loadModels()
+ .detect(content);
+ if (language.isUnknown()) {
+ throw new TikaException("Unable to detect language to use for
translation of text");
+ }
+
+ String sLang = language.getLanguage();
+ LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
+
+ return doTranslate(content, translator, sLang, dLang);
+ }
private Translator byClassName(String className) {
List<Translator> translators =
loader.loadStaticServiceProviders(Translator.class);