diff --git a/commons/ihe/hl7v2/src/main/java/org/openehealth/ipf/commons/ihe/hl7v2/Hl7v2TransactionConfiguration.java b/commons/ihe/hl7v2/src/main/java/org/openehealth/ipf/commons/ihe/hl7v2/Hl7v2TransactionConfiguration.java index 4c07498bfe..44d2c44b25 100644 --- a/commons/ihe/hl7v2/src/main/java/org/openehealth/ipf/commons/ihe/hl7v2/Hl7v2TransactionConfiguration.java +++ b/commons/ihe/hl7v2/src/main/java/org/openehealth/ipf/commons/ihe/hl7v2/Hl7v2TransactionConfiguration.java @@ -219,11 +219,13 @@ private static Map createDefinitionsMap( * Returns true when request messages of the given type are auditable. */ public boolean isAuditable(String messageType) { - Definition definition = definitions.get(true).get(messageType); - if (definition == null) { - throw new IllegalArgumentException("Unknown message type " + messageType); + try { + Definition definition = getDefinitionForMessageType(messageType, true); + return definition.auditable; + } catch (Hl7v2AcceptanceException e) { + throw new IllegalArgumentException(e); } - return definition.auditable; + } @@ -236,11 +238,12 @@ public boolean isAuditable(String messageType) { * structure -- segments DSC, QAK. */ public boolean isContinuable(String messageType) { - Definition definition = definitions.get(true).get(messageType); - if (definition == null) { - throw new IllegalArgumentException("Unknown message type " + messageType); + try { + Definition definition = getDefinitionForMessageType(messageType, true); + return definition.responseContinuable; + } catch (Hl7v2AcceptanceException e) { + throw new IllegalArgumentException(e); } - return definition.responseContinuable; } @@ -339,15 +342,7 @@ public void checkMessageAcceptance( { checkMessageVersion(version); - Definition definition = definitions.get(isRequest).get(messageType); - - if (definition == null) { - definition = definitions.get(isRequest).get("*"); - if (definition == null) { - throw new Hl7v2AcceptanceException("Invalid message type " + messageType + ", must be one of " + - join(definitions.get(isRequest).keySet()), ErrorCode.UNSUPPORTED_MESSAGE_TYPE); - } - } + Definition definition = getDefinitionForMessageType(messageType, isRequest); if (! definition.isAllowedTriggerEvent(triggerEvent)) { throw new Hl7v2AcceptanceException("Invalid trigger event " + triggerEvent + ", must be one of " + @@ -383,6 +378,18 @@ public void checkMessageAcceptance( } } + private Definition getDefinitionForMessageType(String messageType, boolean isRequest) throws Hl7v2AcceptanceException { + Definition definition = definitions.get(isRequest).get(messageType); + if (definition == null) { + definition = definitions.get(isRequest).get("*"); + if (definition == null) { + throw new Hl7v2AcceptanceException("Invalid message type " + messageType + ", must be one of " + + join(definitions.get(isRequest).keySet()), ErrorCode.UNSUPPORTED_MESSAGE_TYPE); + } + } + return definition; + } + private void checkMessageVersion(String version) throws Hl7v2AcceptanceException { Version messageVersion = Version.versionOf(version); if (! ArrayUtils.contains(hl7Versions, messageVersion)) {