From 6e54d9a97e751daa2146a248f1b87701e5060be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Kov=C3=A1cs?= Date: Tue, 24 Aug 2021 13:12:16 +0200 Subject: [PATCH 1/4] SO-4916: add language parameter --- .../core/rest/suggest/SuggestRestParameters.java | 13 +++++++++++++ .../core/rest/suggest/SuggestRestService.java | 3 +++ 2 files changed, 16 insertions(+) diff --git a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java index 2e98b72560a..cc93972fbf8 100644 --- a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java +++ b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java @@ -15,7 +15,10 @@ */ package com.b2international.snowowl.core.rest.suggest; +import org.springframework.http.HttpHeaders; + import io.swagger.v3.oas.annotations.Parameter; +import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.media.Schema; /** @@ -34,6 +37,9 @@ public class SuggestRestParameters { @Parameter(description = "The preferred term display in case of SNOMED CT", example = "PT", schema = @Schema(allowableValues = {"FSN", "PT", "ID_ONLY"}, defaultValue = "PT")) private String preferredDisplay = "PT"; + + @Parameter(name = HttpHeaders.ACCEPT_LANGUAGE, in = ParameterIn.HEADER, description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") + private String acceptLanguage = "en-US;q=0.8,en-GB;q=0.6"; public String getCodeSystemPath() { return codeSystemPath; @@ -67,4 +73,11 @@ public void setPreferredDisplay(String preferredDisplay) { this.preferredDisplay = preferredDisplay; } + public String getAcceptLanguage() { + return acceptLanguage; + } + + public void setAcceptLanguage(String acceptLanguage) { + this.acceptLanguage = acceptLanguage; + } } diff --git a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java index 0f80da46bd3..042ed3b71f3 100644 --- a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java +++ b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java @@ -54,6 +54,7 @@ public class SuggestRestService extends AbstractRestService { public Promise getSuggest(@ParameterObject final SuggestRestParameters params) { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(params.getLimit()) + .setLocales(params.getAcceptLanguage()) .setPreferredDisplay(params.getPreferredDisplay()) .filterByTerm(params.getTerm()) .sortBy(SORT_BY) @@ -72,6 +73,7 @@ public Promise getSuggest(@ParameterObject final SuggestRestParamet public Promise postSuggest(@RequestBody final SuggestRestParameters body) { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(body.getLimit()) + .setLocales(body.getAcceptLanguage()) .setPreferredDisplay(body.getPreferredDisplay()) .filterByTerm(body.getTerm()) .sortBy(SORT_BY) @@ -91,6 +93,7 @@ public Promise> postBulkSuggest(@RequestBody final List> promises = body.stream().map(params -> { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(params.getLimit()) + .setLocales(params.getAcceptLanguage()) .setPreferredDisplay(params.getPreferredDisplay()) .filterByTerm(params.getTerm()) .sortBy(SORT_BY) From d5d3b0c0cbc8fd5a540016a7fcab26bc521f83cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Kov=C3=A1cs?= Date: Tue, 24 Aug 2021 13:33:34 +0200 Subject: [PATCH 2/4] SO-4916: remove invalid modifiers --- .../snowowl/core/rest/suggest/SuggestRestParameters.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java index cc93972fbf8..6588b911833 100644 --- a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java +++ b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java @@ -15,10 +15,7 @@ */ package com.b2international.snowowl.core.rest.suggest; -import org.springframework.http.HttpHeaders; - import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.enums.ParameterIn; import io.swagger.v3.oas.annotations.media.Schema; /** @@ -38,7 +35,7 @@ public class SuggestRestParameters { @Parameter(description = "The preferred term display in case of SNOMED CT", example = "PT", schema = @Schema(allowableValues = {"FSN", "PT", "ID_ONLY"}, defaultValue = "PT")) private String preferredDisplay = "PT"; - @Parameter(name = HttpHeaders.ACCEPT_LANGUAGE, in = ParameterIn.HEADER, description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") + @Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") private String acceptLanguage = "en-US;q=0.8,en-GB;q=0.6"; public String getCodeSystemPath() { From 9459583bf5f5c2fa5399313b7d39d74e8518c9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Kov=C3=A1cs?= Date: Wed, 25 Aug 2021 18:07:06 +0200 Subject: [PATCH 3/4] SO-4916: add acceptLanguage fallback to header params --- .../core/rest/suggest/SuggestRestService.java | 33 +++++++++++++++---- 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java index 042ed3b71f3..1a5805cc056 100644 --- a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java +++ b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestService.java @@ -18,7 +18,9 @@ import java.util.List; import java.util.stream.Collectors; +import org.elasticsearch.common.Strings; import org.springdoc.api.annotations.ParameterObject; +import org.springframework.http.HttpHeaders; import org.springframework.web.bind.annotation.*; import com.b2international.snowowl.core.codesystem.CodeSystemRequests; @@ -29,6 +31,7 @@ import com.b2international.snowowl.core.rest.AbstractRestService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; @@ -51,10 +54,16 @@ public class SuggestRestService extends AbstractRestService { @ApiResponse(responseCode = "400", description = "Bad Request") }) @GetMapping - public Promise getSuggest(@ParameterObject final SuggestRestParameters params) { + public Promise getSuggest( + @ParameterObject + final SuggestRestParameters params, + + @Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") + @RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false) + final String acceptLanguage) { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(params.getLimit()) - .setLocales(params.getAcceptLanguage()) + .setLocales(Strings.isNullOrEmpty(params.getAcceptLanguage()) ? acceptLanguage : params.getAcceptLanguage()) .setPreferredDisplay(params.getPreferredDisplay()) .filterByTerm(params.getTerm()) .sortBy(SORT_BY) @@ -70,10 +79,16 @@ public Promise getSuggest(@ParameterObject final SuggestRestParamet @ApiResponse(responseCode = "400", description = "Bad Request") }) @PostMapping(consumes = { AbstractRestService.JSON_MEDIA_TYPE }) - public Promise postSuggest(@RequestBody final SuggestRestParameters body) { + public Promise postSuggest( + @RequestBody + final SuggestRestParameters body, + + @Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") + @RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false) + final String acceptLanguage) { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(body.getLimit()) - .setLocales(body.getAcceptLanguage()) + .setLocales(Strings.isNullOrEmpty(body.getAcceptLanguage()) ? acceptLanguage : body.getAcceptLanguage()) .setPreferredDisplay(body.getPreferredDisplay()) .filterByTerm(body.getTerm()) .sortBy(SORT_BY) @@ -89,11 +104,17 @@ public Promise postSuggest(@RequestBody final SuggestRestParameters @ApiResponse(responseCode = "400", description = "Bad Request") }) @PostMapping(value = "/bulk", consumes = { AbstractRestService.JSON_MEDIA_TYPE }) - public Promise> postBulkSuggest(@RequestBody final List body) { + public Promise> postBulkSuggest( + @RequestBody + final List body, + + @Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") + @RequestHeader(value=HttpHeaders.ACCEPT_LANGUAGE, defaultValue="en-US;q=0.8,en-GB;q=0.6", required=false) + final String acceptLanguage) { final List> promises = body.stream().map(params -> { return CodeSystemRequests.prepareSuggestConcepts() .setLimit(params.getLimit()) - .setLocales(params.getAcceptLanguage()) + .setLocales(Strings.isNullOrEmpty(params.getAcceptLanguage()) ? acceptLanguage : params.getAcceptLanguage()) .setPreferredDisplay(params.getPreferredDisplay()) .filterByTerm(params.getTerm()) .sortBy(SORT_BY) From 7dbffaf38cbe6cfa2c37e4bc007d2256e7a6964d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tam=C3=A1s=20Kov=C3=A1cs?= Date: Wed, 25 Aug 2021 18:07:20 +0200 Subject: [PATCH 4/4] SO-4916: remove default value of acceptLanguage --- .../snowowl/core/rest/suggest/SuggestRestParameters.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java index 6588b911833..45739830f58 100644 --- a/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java +++ b/core/com.b2international.snowowl.core.rest/src/com/b2international/snowowl/core/rest/suggest/SuggestRestParameters.java @@ -35,8 +35,8 @@ public class SuggestRestParameters { @Parameter(description = "The preferred term display in case of SNOMED CT", example = "PT", schema = @Schema(allowableValues = {"FSN", "PT", "ID_ONLY"}, defaultValue = "PT")) private String preferredDisplay = "PT"; - @Parameter(description = "Accepted language tags, in order of preference", example = "en-US;q=0.8,en-GB;q=0.6") - private String acceptLanguage = "en-US;q=0.8,en-GB;q=0.6"; + @Parameter(description = "Accepted language tags, in order of preference") + private String acceptLanguage; public String getCodeSystemPath() { return codeSystemPath;