From 6c6c40cd61ff5b6b21e5283e6027d41df837d0e0 Mon Sep 17 00:00:00 2001 From: Philip Helger Date: Thu, 12 Jan 2023 12:24:52 +0100 Subject: [PATCH] Added special class Phase4PeppolClientException --- .../servlet/Phase4PeppolClientException.java | 36 +++++++++++++++++++ ...hase4PeppolServletMessageProcessorSPI.java | 8 +++++ 2 files changed, 44 insertions(+) create mode 100644 phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolClientException.java diff --git a/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolClientException.java b/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolClientException.java new file mode 100644 index 000000000..c90e8f201 --- /dev/null +++ b/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolClientException.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2015-2023 Philip Helger (www.helger.com) + * philip[at]helger[dot]com + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.helger.phase4.peppol.servlet; + +import javax.annotation.Nonnull; + +/** + * Special client exception that always translates to an AS4 error message send + * back to C2. Compared to the default Exception handling in + * {@link Phase4PeppolServletMessageProcessorSPI} the returned error message in + * the AS4 ErrorMessage contains no custom prefix. So it's all caller induced. + * + * @author Philip Helger + * @since 1.4.3 + */ +public class Phase4PeppolClientException extends RuntimeException +{ + public Phase4PeppolClientException (@Nonnull final String sMsg) + { + super (sMsg); + } +} diff --git a/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolServletMessageProcessorSPI.java b/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolServletMessageProcessorSPI.java index ab89aed9e..7d6a9f1ed 100644 --- a/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolServletMessageProcessorSPI.java +++ b/phase4-peppol-servlet/src/main/java/com/helger/phase4/peppol/servlet/Phase4PeppolServletMessageProcessorSPI.java @@ -613,6 +613,14 @@ public AS4MessageProcessorResult processAS4UserMessage (@Nonnull final IAS4Incom aPeppolSBD, aState); } + catch (final Phase4PeppolClientException ex) + { + final String sMsg = ex.getMessage (); + LOGGER.error (sLogPrefix + "Error invoking Peppol handler " + aHandler + ": " + sMsg); + + // Returned AS4 Error without a custom prefix + return AS4MessageProcessorResult.createFailure (sMsg); + } catch (final Exception ex) { LOGGER.error (sLogPrefix + "Error invoking Peppol handler " + aHandler, ex);