Skip to content
Snippets Groups Projects
Commit b9bfac8d authored by Felix Reichenbach's avatar Felix Reichenbach
Browse files

OZG-7038 create XztaFileReader

parent e9409eeb
No related branches found
No related tags found
1 merge request!3Ozg 7038 evaluation dms quittung
package de.ozgcloud.archive.common.xta;
import java.io.IOException;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Unmarshaller;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.xta.client.model.XtaFile;
class XtaFileReader<T> {
private final Unmarshaller unmarshaller;
XtaFileReader(Class<T> clazz) {
try {
unmarshaller = JAXBContext.newInstance(clazz).createUnmarshaller();
} catch (JAXBException e) {
throw new TechnicalException("Error reading xta file content", e);
}
}
@SuppressWarnings("unchecked")
public T read(XtaFile xtaFile) {
try {
return (T) unmarshaller.unmarshal(xtaFile.content().getInputStream());
} catch (JAXBException | IOException e) {
throw new TechnicalException("Error on reading file %s.".formatted(xtaFile.name()), e);
}
}
}
package de.ozgcloud.archive.common.xta;
import static org.assertj.core.api.Assertions.*;
import static org.junit.jupiter.api.Assertions.*;
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.Unmarshaller;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import de.ozgcloud.common.errorhandling.TechnicalException;
import de.ozgcloud.common.test.ReflectionTestUtils;
import de.ozgcloud.xta.client.model.XtaFile;
import de.xoev.xdomea.AbgabeImportBestaetigen0402;
import lombok.SneakyThrows;
class XtaFileReaderTest {
@Nested
class TestConstruction {
@Test
@SneakyThrows
void shouldSetUnmarshaller() {
var reader = new XtaFileReader<AbgabeImportBestaetigen0402>(AbgabeImportBestaetigen0402.class);
assertThat(ReflectionTestUtils.getField(reader, "unmarshaller", Unmarshaller.class)).usingRecursiveComparison()
.isEqualTo(JAXBContext.newInstance(AbgabeImportBestaetigen0402.class).createUnmarshaller());
}
}
@Nested
class TestRead {
@Test
@SneakyThrows
void shouldReadContent() {
var reader = new XtaFileReader<AbgabeImportBestaetigen0402>(AbgabeImportBestaetigen0402.class);
var abgabe = reader.read(XtaFileTestFactory.create(AbgabeImportBestaetigen0402TestFactory.FILE_PATH));
assertThat(abgabe).usingRecursiveComparison().isEqualTo(AbgabeImportBestaetigen0402TestFactory.create());
}
@Test
@SneakyThrows
void shouldThrowTechnicalException() {
var reader = new XtaFileReader<AbgabeImportBestaetigen0402>(AbgabeImportBestaetigen0402.class);
XtaFile unknownFile = XtaFileTestFactory.create();
assertThrows(TechnicalException.class, () -> reader.read(unknownFile));
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment