From e184f64d8d6d6ac0cecc973f2d0db3cf0a40de8d Mon Sep 17 00:00:00 2001 From: Kurt Nordstrom Date: Fri, 3 Oct 2025 15:58:44 -0400 Subject: [PATCH] Add render for 500 errors in ExternalApiController. Make marshaller for confirmation message thread-safe --- .../controllers/mod/rs/ExternalApiController.groovy | 3 ++- .../org/olf/rs/ConfirmationMessageService.groovy | 12 ++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/service/grails-app/controllers/mod/rs/ExternalApiController.groovy b/service/grails-app/controllers/mod/rs/ExternalApiController.groovy index 342a11b36..204461388 100644 --- a/service/grails-app/controllers/mod/rs/ExternalApiController.groovy +++ b/service/grails-app/controllers/mod/rs/ExternalApiController.groovy @@ -188,7 +188,8 @@ class ExternalApiController implements EventPublisher { } catch (SAXException e){ return render(status: 400, text: "Response validation failed: ${e.message}") } catch ( Exception e ) { - log.error("Exception receiving ISO message",e); + log.error("Exception while handling incoming ISO message",e); + return render(status: 500, text: "Error: ${e.getLocalizedMessage()}"); } finally { log.debug("ExternalApiController::iso18626 exiting cleanly"); } diff --git a/service/grails-app/services/org/olf/rs/ConfirmationMessageService.groovy b/service/grails-app/services/org/olf/rs/ConfirmationMessageService.groovy index 9896d5db3..f59b88a62 100644 --- a/service/grails-app/services/org/olf/rs/ConfirmationMessageService.groovy +++ b/service/grails-app/services/org/olf/rs/ConfirmationMessageService.groovy @@ -14,7 +14,6 @@ class ConfirmationMessageService { Iso18626MessageValidationService iso18626MessageValidationService JAXBContext context = JAXBContext.newInstance(ObjectFactory.class) - Marshaller marshaller = null def confirmationMessageReadable(def confirmationMessage) { StringWriter sw = new StringWriter() @@ -25,11 +24,12 @@ class ConfirmationMessageService { } Marshaller getMarshaller() { - if(marshaller == null){ - marshaller = context.createMarshaller() - marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, Iso18626Constants.SCHEMA_LOCATION) - marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new IllNamespacePrefixMapper()) - } + Marshaller marshaller; + + marshaller = context.createMarshaller() + marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, Iso18626Constants.SCHEMA_LOCATION) + marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new IllNamespacePrefixMapper()) + return marshaller }