diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIGermplasmController.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIGermplasmController.java index 948e68c20..a0fdad1ac 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIGermplasmController.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIGermplasmController.java @@ -178,7 +178,7 @@ private void batchProcessGermplasm(List germplasmList, String pr Pattern programKeyPattern = Utilities.getRegexPatternMatchAllProgramKeysAnyAccession(programKey); germplasmList.parallelStream().forEach(germplasm -> { // Set dbId - germplasm.germplasmDbId(Utilities.getExternalReference(germplasm.getExternalReferences(), "breedinginsight.org") + germplasm.germplasmDbId(Utilities.getExternalReference(germplasm.getExternalReferences(), "breeding-insight.net") .orElseThrow(() -> new IllegalStateException("No BI external reference found")) .getReferenceId()); // Process synonyms diff --git a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java index be5046077..42af9b8d7 100644 --- a/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java +++ b/src/main/java/org/breedinginsight/brapi/v2/BrAPIV2Controller.java @@ -17,6 +17,7 @@ package org.breedinginsight.brapi.v2; +import io.micronaut.context.annotation.Value; import io.micronaut.http.HttpRequest; import io.micronaut.http.HttpResponse; import io.micronaut.http.HttpStatus; @@ -186,6 +187,15 @@ public HttpResponse getCatchall(@PathVariable("path") String path, @PathVaria return executeRequest(path, programId, request, "GET"); } + @Delete("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/{+path}") + @Produces(MediaType.APPLICATION_JSON) + @ProgramSecured(roleGroups = {ProgramSecuredRoleGroup.PROGRAM_SCOPED_ROLES}) + public HttpResponse deleteCatchall(@PathVariable("path") String path, + @PathVariable("programId") UUID programId, + HttpRequest request) { + return executeDeleteRequest(path, programId, request); + } + @Post("/${micronaut.bi.api.version}/programs/{programId}" + BrapiVersion.BRAPI_V2 + "/{+path}") @Consumes(MediaType.ALL) @Produces(MediaType.APPLICATION_JSON) @@ -241,6 +251,22 @@ private HttpResponse executeRequest(String path, UUID programId, HttpReq throw new HttpStatusException(HttpStatus.UNAUTHORIZED, "Unauthorized BrAPI Request"); } + private HttpResponse executeDeleteRequest(String path, UUID programId, HttpRequest request) { + AuthenticatedUser actingUser = securityService.getUser(); + + if (programId != null) { + HttpUrl requestUrl = getUrl(programId, path, request); + + var brapiRequest = new Request.Builder().url(requestUrl) + .method("DELETE", null) + .build(); + + return makeCall(brapiRequest); + } + + throw new HttpStatusException(HttpStatus.UNAUTHORIZED, "Unauthorized BrAPI Request"); + } + private HttpResponse makeCall(Request brapiRequest) { // TODO: use config parameter for timeout OkHttpClient client = new OkHttpClient.Builder()