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);

Reply via email to