From caf5d8c47ae3b7390dca7f5538902bb35574b0f1 Mon Sep 17 00:00:00 2001
From: Jan Zickermann <jan.zickermann@dataport.de>
Date: Wed, 23 Oct 2024 14:07:25 +0200
Subject: [PATCH] OZG-6891 KOP-2773 Use XtaClientRuntimeException instead of
 TechnicalException

---
 .../client/xdomea/XdomeaXtaMessageCreator.java | 18 ++++++++++--------
 .../xdomea/XdomeaXtaMessageCreatorFactory.java |  8 ++++----
 .../client/xdomea/mapper/MetadataMapper.java   | 12 ++++++------
 .../client/xdomea/reader/XmlValueReader.java   |  4 ++--
 .../xdomea/reader/XmlValueReaderFactory.java   |  4 ++--
 .../xdomea/reader/ZipFileEntryReader.java      |  8 ++++----
 .../ozgcloud/xta/client/extension/Patch.java   |  6 +++---
 .../xta/client/extension/PatchHunk.java        | 12 ++++++------
 .../XdomeaXtaMessageCreatorFactoryTest.java    |  8 ++++----
 .../xdomea/XdomeaXtaMessageCreatorTest.java    |  6 +++---
 .../xdomea/mapper/MetadataMapperTest.java      |  8 ++++----
 .../reader/XmlValueReaderFactoryTest.java      |  8 ++++----
 .../xdomea/reader/ZipFileEntryReaderTest.java  |  8 ++++----
 13 files changed, 56 insertions(+), 54 deletions(-)

diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java
index 17fc6b5..13b5ec0 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreator.java
@@ -10,8 +10,8 @@ import javax.xml.parsers.DocumentBuilder;
 import org.w3c.dom.Document;
 import org.xml.sax.SAXException;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.xta.client.exception.XtaClientException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.model.XtaFile;
 import de.ozgcloud.xta.client.model.XtaMessage;
 import de.ozgcloud.xta.client.model.XtaMessageMetaData;
@@ -26,8 +26,8 @@ import lombok.RequiredArgsConstructor;
  * Creator of {@link XtaMessage}s for Xdomea.
  *
  * <p>
- *     The XdomeaXtaMessageCreator is used to create an {@link XtaMessage} for an Xdomea zip file.
- *     The resulting message may be send via the {@link de.ozgcloud.xta.client.XtaClient XtaClient}.
+ * The XdomeaXtaMessageCreator is used to create an {@link XtaMessage} for an Xdomea zip file. The resulting message may be send via the
+ * {@link de.ozgcloud.xta.client.XtaClient XtaClient}.
  * </p>
  *
  *
@@ -64,13 +64,15 @@ public class XdomeaXtaMessageCreator {
 	 * Creates an {@link XtaMessage} from the given xdomea zip file.
 	 *
 	 * <p>
-	 * The zip file has to follow the XTA/Xdomea generic transport specification.
-	 * According to the specification, only the Xdomea messages of type 0201, 0401 and 0402 are supported.
+	 * The zip file has to follow the XTA/Xdomea generic transport specification. According to the specification, only the Xdomea messages of type
+	 * 0201, 0401 and 0402 are supported.
 	 * </p>
 	 *
 	 * <p>
-	 *     <small>The XTA/Xdomea generic transport specification is unofficially available as <i>"Transportfestlegungen Generischer Antragsdienst.pdf"</i>.</small>
+	 * <small>The XTA/Xdomea generic transport specification is unofficially available as <i>"Transportfestlegungen Generischer
+	 * Antragsdienst.pdf"</i>.</small>
 	 * </p>
+	 *
 	 * @param xdomeaZipFile the xdomea zip file
 	 * @return the xta message with metadata derived from the xdomea zip file
 	 * @throws XtaClientException if no valid metadata could be derived from the xdomea zip file.
@@ -89,7 +91,7 @@ public class XdomeaXtaMessageCreator {
 			var messageMetadataData = metadataMapper.mapXtaMessageMetadata(xdomeaXmlValues);
 			metaDataValidator.validate(xdomeaZipFile, xdomeaXmlValues, messageMetadataData);
 			return messageMetadataData;
-		} catch (TechnicalException e) {
+		} catch (XtaClientRuntimeException e) {
 			throw new XtaClientException("Failed to derive valid message metadata from xdomea document!", e);
 		}
 	}
@@ -111,7 +113,7 @@ public class XdomeaXtaMessageCreator {
 		try {
 			return documentBuilder.parse(inputStream);
 		} catch (SAXException | IOException e) {
-			throw new TechnicalException("Failed to parse xml document!", e);
+			throw new XtaClientRuntimeException("Failed to parse xml document!", e);
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactory.java b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactory.java
index 3b6ff6a..914f9e3 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactory.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactory.java
@@ -22,7 +22,7 @@ import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 import org.xml.sax.SAXParseException;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.xdomea.mapper.MetadataMapper;
 import de.ozgcloud.xta.client.xdomea.reader.XdomeaValueReaderFactory;
 import de.ozgcloud.xta.client.xdomea.reader.ZipFileEntryReader;
@@ -82,7 +82,7 @@ public class XdomeaXtaMessageCreatorFactory {
 			xPathFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, Boolean.TRUE);
 			return xPathFactory;
 		} catch (XPathFactoryConfigurationException e) {
-			throw new TechnicalException("Failed to configure xpath factory!", e);
+			throw new XtaClientRuntimeException("Failed to configure xpath factory!", e);
 		}
 	}
 
@@ -126,7 +126,7 @@ public class XdomeaXtaMessageCreatorFactory {
 			schemaFactory.setResourceResolver(createResourceResolver());
 			return schemaFactory.newSchema(createSchemaStreamSources());
 		} catch (SAXException e) {
-			throw new TechnicalException("Failed to initialize schema", e);
+			throw new XtaClientRuntimeException("Failed to initialize schema", e);
 		}
 	}
 
@@ -140,7 +140,7 @@ public class XdomeaXtaMessageCreatorFactory {
 			documentBuilder.setErrorHandler(errorHandler);
 			return documentBuilder;
 		} catch (ParserConfigurationException e) {
-			throw new TechnicalException("Failed to configure document builder!", e);
+			throw new XtaClientRuntimeException("Failed to configure document builder!", e);
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java b/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
index cfa714d..5d02ec8 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapper.java
@@ -5,7 +5,7 @@ import org.mapstruct.Mapping;
 import org.mapstruct.Named;
 import org.mapstruct.ReportingPolicy;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.model.XtaIdentifier;
 import de.ozgcloud.xta.client.model.XtaMessageMetaData;
 import de.ozgcloud.xta.client.xdomea.reader.XdomeaXmlValues;
@@ -51,8 +51,8 @@ public interface MetadataMapper {
 	default String getServiceByMessageTypeCode(String messageTypeCode) {
 		return switch (messageTypeCode) {
 			case CODE_0201 -> SERVICE_XDOMEA_240;
-			case CODE_0401,CODE_0402 -> SERVICE_XDOMEA_300;
-			default -> throw new TechnicalException("Unknown messageTypeCode: " + messageTypeCode);
+			case CODE_0401, CODE_0402 -> SERVICE_XDOMEA_300;
+			default -> throw new XtaClientRuntimeException("Unknown messageTypeCode: " + messageTypeCode);
 		};
 	}
 
@@ -62,7 +62,7 @@ public interface MetadataMapper {
 			case CODE_0201 -> MESSAGE_TYPE_CODE_0201;
 			case CODE_0401 -> MESSAGE_TYPE_CODE_0401;
 			case CODE_0402 -> MESSAGE_TYPE_CODE_0402;
-			default -> throw new TechnicalException("Unknown messageTypeCode: " + messageTypeCode);
+			default -> throw new XtaClientRuntimeException("Unknown messageTypeCode: " + messageTypeCode);
 		};
 	}
 
@@ -70,8 +70,8 @@ public interface MetadataMapper {
 	default String getMessageTypePayloadSchemaByMessageTypeCode(String messageTypeCode) {
 		return switch (messageTypeCode) {
 			case CODE_0201 -> MESSAGE_TYPE_PAYLOAD_SCHEMA_XDOMEA_240;
-			case CODE_0401,CODE_0402 -> MESSAGE_TYPE_PAYLOAD_SCHEMA_XDOMEA_300;
-			default -> throw new TechnicalException("Unknown messageTypeCode: " + messageTypeCode);
+			case CODE_0401, CODE_0402 -> MESSAGE_TYPE_PAYLOAD_SCHEMA_XDOMEA_300;
+			default -> throw new XtaClientRuntimeException("Unknown messageTypeCode: " + messageTypeCode);
 		};
 	}
 
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReader.java b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReader.java
index 642bff5..8019eef 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReader.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReader.java
@@ -11,7 +11,7 @@ import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import lombok.Builder;
 import lombok.RequiredArgsConstructor;
 
@@ -34,7 +34,7 @@ public class XmlValueReader {
 							XPathConstants.NODESET
 					);
 		} catch (XPathExpressionException e) {
-			throw new TechnicalException("Failed to execute xpath search!", e);
+			throw new XtaClientRuntimeException("Failed to execute xpath search!", e);
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactory.java b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactory.java
index 5f28091..24b7b95 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactory.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactory.java
@@ -4,7 +4,7 @@ import javax.xml.xpath.XPathExpression;
 import javax.xml.xpath.XPathExpressionException;
 import javax.xml.xpath.XPathFactory;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import lombok.Builder;
 import lombok.RequiredArgsConstructor;
 
@@ -19,7 +19,7 @@ public class XmlValueReaderFactory {
 		try {
 			return xPathFactory.newXPath().compile(textXpathString);
 		} catch (XPathExpressionException e) {
-			throw new TechnicalException("Failed to compile xpath expression!", e);
+			throw new XtaClientRuntimeException("Failed to compile xpath expression!", e);
 		}
 	}
 
diff --git a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReader.java b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReader.java
index 8b0df0b..de117ea 100644
--- a/src/main/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReader.java
+++ b/src/main/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReader.java
@@ -10,7 +10,7 @@ import java.util.zip.ZipInputStream;
 
 import jakarta.activation.DataHandler;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import lombok.Builder;
 import lombok.RequiredArgsConstructor;
 
@@ -27,9 +27,9 @@ public class ZipFileEntryReader {
 				}
 				zipInputStream.closeEntry();
 			}
-			throw new TechnicalException("Failed to find zip entry '%s'!".formatted(entryName));
+			throw new XtaClientRuntimeException("Failed to find zip entry '%s'!".formatted(entryName));
 		} catch (IOException e) {
-			throw new TechnicalException("Failed reading zip file!", e);
+			throw new XtaClientRuntimeException("Failed reading zip file!", e);
 		}
 	}
 
@@ -43,7 +43,7 @@ public class ZipFileEntryReader {
 			}
 			return entryNames;
 		} catch (IOException e) {
-			throw new TechnicalException("Failed reading zip file!", e);
+			throw new XtaClientRuntimeException("Failed reading zip file!", e);
 		}
 	}
 }
diff --git a/src/test/java/de/ozgcloud/xta/client/extension/Patch.java b/src/test/java/de/ozgcloud/xta/client/extension/Patch.java
index d527b0f..425cdfa 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/Patch.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/Patch.java
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 
 public record Patch(
 		String filePath,
@@ -30,8 +30,8 @@ public record Patch(
 				lineOffset = patchResult.lineOffset();
 			}
 			lines.forEachRemaining(patchedContent::append);
-		} catch (TechnicalException exception) {
-			throw new TechnicalException("Error applying patch! filePath=" + filePath, exception);
+		} catch (XtaClientRuntimeException exception) {
+			throw new XtaClientRuntimeException("Error applying patch! filePath=" + filePath, exception);
 		}
 		return patchedContent.toString();
 	}
diff --git a/src/test/java/de/ozgcloud/xta/client/extension/PatchHunk.java b/src/test/java/de/ozgcloud/xta/client/extension/PatchHunk.java
index 912c39b..4c3c426 100644
--- a/src/test/java/de/ozgcloud/xta/client/extension/PatchHunk.java
+++ b/src/test/java/de/ozgcloud/xta/client/extension/PatchHunk.java
@@ -4,7 +4,7 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 
 public record PatchHunk(
 		int contextStartLineNumber,
@@ -27,7 +27,7 @@ public record PatchHunk(
 					var contextLine = lines.next();
 					lineOffset++;
 					if (!hunkLine.line.equals(contextLine)) {
-						throw new TechnicalException(
+						throw new XtaClientRuntimeException(
 								"Unexpected context line! expected='" + hunkLine.line + "' actual='" + contextLine + "', lineOffset=" + lineOffset);
 					}
 					patchedLines.add(contextLine);
@@ -37,7 +37,7 @@ public record PatchHunk(
 					var removeLine = lines.next();
 					lineOffset++;
 					if (!hunkLine.line.equals(removeLine)) {
-						throw new TechnicalException(
+						throw new XtaClientRuntimeException(
 								"Unexpected remove line! expected='" + hunkLine.line + "' actual='" + removeLine + "', lineOffset=" + lineOffset);
 					}
 				}
@@ -49,7 +49,7 @@ public record PatchHunk(
 	private int skipToContextStart(Iterator<String> lines, int lineOffset, List<String> patchedLines) {
 		for (; lineOffset < contextStartLineNumber - 1; lineOffset++) {
 			if (!lines.hasNext()) {
-				throw new TechnicalException("Unexpected end of target file! lineOffset=" + lineOffset);
+				throw new XtaClientRuntimeException("Unexpected end of target file! lineOffset=" + lineOffset);
 			}
 			patchedLines.add(lines.next());
 		}
@@ -90,14 +90,14 @@ public record PatchHunk(
 		var sourceLineOffset = 0;
 		while (sourceLineOffset < header.sourceLineCount()) {
 			if (!lines.hasNext()) {
-				throw new TechnicalException("Unexpected end of patch hunk! sourceLineOffset=" + sourceLineOffset + ", header=" + header);
+				throw new XtaClientRuntimeException("Unexpected end of patch hunk! sourceLineOffset=" + sourceLineOffset + ", header=" + header);
 			}
 			var line = lines.next();
 			var operation = switch (line.substring(0, 1)) {
 				case " " -> PatchOperation.CONTEXT;
 				case "+" -> PatchOperation.ADD;
 				case "-" -> PatchOperation.REMOVE;
-				default -> throw new TechnicalException(
+				default -> throw new XtaClientRuntimeException(
 						"Unexpected line in patch hunk! line=" + line + "sourceLineOffset=" + sourceLineOffset + ", header=" + header);
 			};
 			sourceLineOffset += switch (operation) {
diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactoryTest.java
index 723de05..2dac4c5 100644
--- a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactoryTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorFactoryTest.java
@@ -33,7 +33,7 @@ import org.w3c.dom.ls.LSResourceResolver;
 import org.xml.sax.ErrorHandler;
 import org.xml.sax.SAXException;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.xdomea.mapper.MetadataMapper;
 import de.ozgcloud.xta.client.xdomea.reader.XdomeaValueReader;
 import de.ozgcloud.xta.client.xdomea.reader.XdomeaValueReaderFactory;
@@ -164,7 +164,7 @@ class XdomeaXtaMessageCreatorFactoryTest {
 			doThrow(parserConfigurationException).when(documentBuilderFactory).setFeature(DISALLOW_DOCTYPE_DECL_FEATURE_URL, true);
 
 			assertThatThrownBy(() -> factory.create())
-					.isInstanceOf(TechnicalException.class)
+					.isInstanceOf(XtaClientRuntimeException.class)
 					.hasCause(parserConfigurationException);
 		}
 
@@ -222,14 +222,14 @@ class XdomeaXtaMessageCreatorFactoryTest {
 			verify(schemaFactory).setResourceResolver(resolver);
 		}
 
-		@DisplayName("should throw technical initialization exception")
+		@DisplayName("should throw runtime initialization exception")
 		@Test
 		@SneakyThrows
 		void shouldThrowTechnicalInitializationException() {
 			doThrow(new SAXException()).when(schemaFactory).newSchema(schemaSources);
 
 			assertThatThrownBy(() -> factory.createSchema())
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 	}
 
diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorTest.java b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorTest.java
index a183007..48864bc 100644
--- a/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/xdomea/XdomeaXtaMessageCreatorTest.java
@@ -19,8 +19,8 @@ import org.mockito.Mock;
 import org.mockito.Spy;
 import org.w3c.dom.Document;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
 import de.ozgcloud.xta.client.exception.XtaClientException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.factory.XdomeaXmlValuesTestFactory;
 import de.ozgcloud.xta.client.factory.XtaFileTestFactory;
 import de.ozgcloud.xta.client.factory.XtaMessageMetaDataTestFactory;
@@ -111,7 +111,7 @@ class XdomeaXtaMessageCreatorTest {
 		private XtaMessageMetaData metaData;
 
 		@Mock
-		private TechnicalException technicalException;
+		private XtaClientRuntimeException runtimeException;
 
 		@BeforeEach
 		@SneakyThrows
@@ -153,7 +153,7 @@ class XdomeaXtaMessageCreatorTest {
 		@DisplayName("should throw client exception")
 		@Test
 		void shouldThrowClientException() {
-			doThrow(technicalException).when(metadataMapper).mapXtaMessageMetadata(xdomeaXmlValues);
+			doThrow(runtimeException).when(metadataMapper).mapXtaMessageMetadata(xdomeaXmlValues);
 
 			assertThatThrownBy(() -> creator.deriveValidMetaData(xdomeaZipFile))
 					.isInstanceOf(XtaClientException.class);
diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapperTest.java b/src/test/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapperTest.java
index 59f5515..95529c1 100644
--- a/src/test/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapperTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/xdomea/mapper/MetadataMapperTest.java
@@ -11,7 +11,7 @@ import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.ValueSource;
 import org.mapstruct.factory.Mappers;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import de.ozgcloud.xta.client.factory.XdomeaXmlValuesTestFactory;
 import de.ozgcloud.xta.client.model.XtaMessageMetaData;
 
@@ -158,11 +158,11 @@ class MetadataMapperTest {
 			assertThat(metadata.readerIdentifier().category()).isEqualTo(READER_ID_CATEGORY);
 		}
 
-		@DisplayName("should throw technical exception with unknown message type code")
+		@DisplayName("should throw xta client runtime exception with unknown message type code")
 		@Test
-		void shouldThrowTechnicalExceptionWithUnknownMessageTypeCode() {
+		void shouldThrowXtaClientRuntimeExceptionWithUnknownMessageTypeCode() {
 			assertThatThrownBy(() -> doMapping("unknown"))
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 
 		private XtaMessageMetaData doMapping(String code) {
diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactoryTest.java b/src/test/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactoryTest.java
index b848a3a..ddce12f 100644
--- a/src/test/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactoryTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/xdomea/reader/XmlValueReaderFactoryTest.java
@@ -14,7 +14,7 @@ import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 import lombok.SneakyThrows;
 
 class XmlValueReaderFactoryTest {
@@ -66,14 +66,14 @@ class XmlValueReaderFactoryTest {
 					.build());
 		}
 
-		@DisplayName("should throw technical exception")
+		@DisplayName("should throw xta client runtime exception")
 		@Test
 		@SneakyThrows
-		void shouldThrowTechnicalException() {
+		void shouldThrowXtaClientRuntimeException() {
 			when(xpath.compile(textXpathString)).thenThrow(exception);
 
 			assertThatThrownBy(() -> factory.create())
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 	}
 
diff --git a/src/test/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReaderTest.java b/src/test/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReaderTest.java
index 37d1a03..038e663 100644
--- a/src/test/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReaderTest.java
+++ b/src/test/java/de/ozgcloud/xta/client/xdomea/reader/ZipFileEntryReaderTest.java
@@ -16,7 +16,7 @@ import org.junit.jupiter.api.DisplayName;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 
-import de.ozgcloud.common.errorhandling.TechnicalException;
+import de.ozgcloud.xta.client.exception.XtaClientRuntimeException;
 
 class ZipFileEntryReaderTest {
 	private static final DataHandler ZIP_FILE = EXAMPLE_ABGABE_MESSAGE.messageFile().content();
@@ -51,14 +51,14 @@ class ZipFileEntryReaderTest {
 		@Test
 		void shouldThrowExceptionIfEntryIsMissing() {
 			assertThatThrownBy(() -> reader.mapEntryData(ZIP_FILE, "?", inputStreamConsumer))
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 
 		@DisplayName("should throw exception on bad zip file")
 		@Test
 		void shouldThrowExceptionOnBadZipFile() {
 			assertThatThrownBy(() -> reader.mapEntryData(BAD_ZIP_FILE, ENTRY_NAME, inputStreamConsumer))
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 	}
 
@@ -83,7 +83,7 @@ class ZipFileEntryReaderTest {
 		@Test
 		void shouldThrowExceptionOnBadZipFile() {
 			assertThatThrownBy(() -> reader.getEntryNames(createMissingFileDataHandler()))
-					.isInstanceOf(TechnicalException.class);
+					.isInstanceOf(XtaClientRuntimeException.class);
 		}
 
 		private static DataHandler createMissingFileDataHandler() {
-- 
GitLab