From 3d17f2723ce29ba78511704f2e1f89d8ce34466c Mon Sep 17 00:00:00 2001 From: cameroncaci Date: Wed, 1 Nov 2023 10:43:20 -0400 Subject: [PATCH] better contentUpdatedSinceDateTime handling --- .../milmove/controller/GetTableController.java | 9 ++++++++- .../milmove/model/gettable/GetTableRequest.java | 4 +--- .../trdmlambda/milmove/service/GetTableService.java | 13 ++++++++++--- 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/milmove/trdmlambda/milmove/controller/GetTableController.java b/src/main/java/com/milmove/trdmlambda/milmove/controller/GetTableController.java index 9c3ffe2..bb6f90a 100644 --- a/src/main/java/com/milmove/trdmlambda/milmove/controller/GetTableController.java +++ b/src/main/java/com/milmove/trdmlambda/milmove/controller/GetTableController.java @@ -16,6 +16,8 @@ import java.io.IOException; +import javax.xml.datatype.DatatypeConfigurationException; + import org.slf4j.LoggerFactory; import ch.qos.logback.classic.Logger; @@ -39,6 +41,8 @@ public class GetTableController { @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "Success", content = { @Content(mediaType = "application/json", schema = @Schema(implementation = GetTableResponse.class)) }), + @ApiResponse(responseCode = "400", description = "Bad Request", content = { + @Content(mediaType = "application/json") }), @ApiResponse(responseCode = "500", description = "Internal Server Error", content = { @Content(mediaType = "application/json") }) }) @@ -48,8 +52,11 @@ public ResponseEntity getTable(@Valid @RequestBody GetTableReq GetTableResponse response = getTableService.getTableRequest(requestBody); return ResponseEntity.ok(response); } catch (IOException e) { - logger.error("Error processing GetTable request", e); + logger.error("Error processing attachment for GetTable request", e); return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); + } catch (DatatypeConfigurationException e) { + logger.error("Error processing XMLGregorianCalendar type for provided contentUpdatedSinceDateTime value for GetTable request", e); + return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); } } } diff --git a/src/main/java/com/milmove/trdmlambda/milmove/model/gettable/GetTableRequest.java b/src/main/java/com/milmove/trdmlambda/milmove/model/gettable/GetTableRequest.java index bf7b86e..afe1166 100644 --- a/src/main/java/com/milmove/trdmlambda/milmove/model/gettable/GetTableRequest.java +++ b/src/main/java/com/milmove/trdmlambda/milmove/model/gettable/GetTableRequest.java @@ -1,7 +1,5 @@ package com.milmove.trdmlambda.milmove.model.gettable; -import javax.xml.datatype.XMLGregorianCalendar; - import com.milmove.trdmlambda.milmove.contraints.ContentUpdatedSinceDateTimeConstraint; import com.milmove.trdmlambda.milmove.contraints.PhysicalNameConstraint; @@ -12,6 +10,6 @@ public class GetTableRequest { @PhysicalNameConstraint private String physicalName; @ContentUpdatedSinceDateTimeConstraint - private XMLGregorianCalendar contentUpdatedSinceDateTime; + private String contentUpdatedSinceDateTime; // To be converted to javax.xml.datatype.XMLGregorianCalendar private boolean returnContent; } diff --git a/src/main/java/com/milmove/trdmlambda/milmove/service/GetTableService.java b/src/main/java/com/milmove/trdmlambda/milmove/service/GetTableService.java index 00ed44d..161430f 100644 --- a/src/main/java/com/milmove/trdmlambda/milmove/service/GetTableService.java +++ b/src/main/java/com/milmove/trdmlambda/milmove/service/GetTableService.java @@ -2,6 +2,9 @@ import java.io.IOException; import java.util.Map; + +import javax.xml.datatype.DatatypeConfigurationException; +import javax.xml.datatype.DatatypeFactory; import javax.xml.stream.XMLStreamException; import org.apache.commons.io.output.ByteArrayOutputStream; @@ -59,8 +62,9 @@ public GetTableService(TrdmProps trdmProps, ClientPasswordCallback clientPasswor * @param request GetTableRequest * @return GetTableResponse * @throws IOException attachment processing failure + * @throws DatatypeConfigurationException user provided string for contentUpdatedSinceDateTime not valid for XMLGregorianCalendar type */ - public GetTableResponse getTableRequest(GetTableRequest request) throws IOException { + public GetTableResponse getTableRequest(GetTableRequest request) throws IOException, DatatypeConfigurationException { return createSoapRequest(request); } @@ -70,16 +74,19 @@ public GetTableResponse getTableRequest(GetTableRequest request) throws IOExcept * @param request - GetTableRequest * @return built SOAP XML body with header. * @throws IOException + * @throws DatatypeConfigurationException * @throws XMLStreamException */ - private GetTableResponse createSoapRequest(GetTableRequest request) throws IOException { + private GetTableResponse createSoapRequest(GetTableRequest request) throws IOException, DatatypeConfigurationException { ReturnTableRequestElement requestElement = new ReturnTableRequestElement(); ReturnTableInput input = new ReturnTableInput(); TRDM trdm = new TRDM(); trdm.setPhysicalName(request.getPhysicalName()); trdm.setReturnContent(request.isReturnContent()); - trdm.setContentUpdatedSinceDateTime(request.getContentUpdatedSinceDateTime()); + trdm.setReturnContent(Boolean.valueOf(request.isReturnContent())); + trdm.setContentUpdatedSinceDateTime(DatatypeFactory.newInstance() + .newXMLGregorianCalendar(request.getContentUpdatedSinceDateTime())); input.setTRDM(trdm); requestElement.setInput(input);