Skip to content

Commit 1fca31e

Browse files
author
LucaD
committed
TIKA-4526: Fix nondeterministic failures in TranslateResourceTest by splitting @PUT/@post handlers
1 parent db39298 commit 1fca31e

1 file changed

Lines changed: 34 additions & 16 deletions

File tree

tika-server/tika-server-core/src/main/java/org/apache/tika/server/core/resource/TranslateResource.java

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -57,36 +57,40 @@ public TranslateResource(ServerStatus serverStatus, long timeoutMillis) {
5757
this.serverStatus = serverStatus;
5858
this.timeoutMillis = timeoutMillis;
5959
}
60-
61-
@PUT
60+
61+
// TIKA-4526: handle @PUT and @POST separately to avoid nondeterministic failures
6262
@POST
6363
@Path("/all/{translator}/{src}/{dest}")
6464
@Consumes("*/*")
6565
@Produces("text/plain")
66-
public String translate(final InputStream is, @PathParam("translator") String translator, @PathParam("src") String sLang, @PathParam("dest") String dLang)
66+
public String translatePost(final InputStream is, @PathParam("translator") String translator, @PathParam("src") String sLang, @PathParam("dest") String dLang)
6767
throws TikaException, IOException {
6868
return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang, dLang);
69-
7069
}
7170

7271
@PUT
72+
@Path("/all/{translator}/{src}/{dest}")
73+
@Consumes("*/*")
74+
@Produces("text/plain")
75+
public String translatePut(final InputStream is, @PathParam("translator") String translator, @PathParam("src") String sLang, @PathParam("dest") String dLang)
76+
throws TikaException, IOException {
77+
return doTranslate(IOUtils.toString(is, UTF_8), translator, sLang, dLang);
78+
}
79+
7380
@POST
7481
@Path("/all/{translator}/{dest}")
7582
@Consumes("*/*")
7683
@Produces("text/plain")
77-
public String autoTranslate(final InputStream is, @PathParam("translator") String translator, @PathParam("dest") String dLang) throws TikaException, IOException {
78-
final String content = IOUtils.toString(is, UTF_8);
79-
LanguageResult language = new OptimaizeLangDetector()
80-
.loadModels()
81-
.detect(content);
82-
if (language.isUnknown()) {
83-
throw new TikaException("Unable to detect language to use for translation of text");
84-
}
85-
86-
String sLang = language.getLanguage();
87-
LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
84+
public String autoTranslatePost(final InputStream is, @PathParam("translator") String translator, @PathParam("dest") String dLang) throws TikaException, IOException {
85+
return doAutoTranslate(IOUtils.toString(is, UTF_8), translator, dLang);
86+
}
8887

89-
return doTranslate(content, translator, sLang, dLang);
88+
@PUT
89+
@Path("/all/{translator}/{dest}")
90+
@Consumes("*/*")
91+
@Produces("text/plain")
92+
public String autoTranslatePut(final InputStream is, @PathParam("translator") String translator, @PathParam("dest") String dLang) throws TikaException, IOException {
93+
return doAutoTranslate(IOUtils.toString(is, UTF_8), translator, dLang);
9094
}
9195

9296
private String doTranslate(String content, String translator, String sLang, String dLang) throws TikaException, IOException {
@@ -107,6 +111,20 @@ private String doTranslate(String content, String translator, String sLang, Stri
107111
serverStatus.complete(taskId);
108112
}
109113
}
114+
115+
private String doAutoTranslate(String content, String translator, String dLang) throws TikaException, IOException {
116+
LanguageResult language = new OptimaizeLangDetector()
117+
.loadModels()
118+
.detect(content);
119+
if (language.isUnknown()) {
120+
throw new TikaException("Unable to detect language to use for translation of text");
121+
}
122+
123+
String sLang = language.getLanguage();
124+
LOG.info("LanguageIdentifier: detected source lang: [{}]", sLang);
125+
126+
return doTranslate(content, translator, sLang, dLang);
127+
}
110128

111129
private Translator byClassName(String className) {
112130
List<Translator> translators = loader.loadStaticServiceProviders(Translator.class);

0 commit comments

Comments
 (0)