summaryrefslogtreecommitdiff
path: root/src/main/java/com/stileeducation/markr/converter
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/stileeducation/markr/converter')
-rw-r--r--src/main/java/com/stileeducation/markr/converter/XmlMarkrMessageConverter.java43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/main/java/com/stileeducation/markr/converter/XmlMarkrMessageConverter.java b/src/main/java/com/stileeducation/markr/converter/XmlMarkrMessageConverter.java
new file mode 100644
index 0000000..04207a1
--- /dev/null
+++ b/src/main/java/com/stileeducation/markr/converter/XmlMarkrMessageConverter.java
@@ -0,0 +1,43 @@
+package com.stileeducation.markr.converter;
+
+import com.stileeducation.markr.dto.MCQTestResultsDTO;
+import jakarta.xml.bind.JAXBContext;
+import jakarta.xml.bind.Marshaller;
+import jakarta.xml.bind.Unmarshaller;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter;
+
+import javax.xml.transform.Result;
+import javax.xml.transform.Source;
+import java.util.Collections;
+import java.util.List;
+
+public class XmlMarkrMessageConverter extends AbstractXmlHttpMessageConverter<MCQTestResultsDTO> {
+
+ public static final MediaType MEDIA_TYPE = new MediaType("text", "xml+markr");
+
+ @Override
+ protected MCQTestResultsDTO readFromSource(Class<? extends MCQTestResultsDTO> clazz, HttpHeaders headers, Source source) throws Exception {
+ JAXBContext jaxbContext = JAXBContext.newInstance(MCQTestResultsDTO.class);
+ Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
+ return (MCQTestResultsDTO) unmarshaller.unmarshal(source);
+ }
+
+ @Override
+ protected void writeToResult(MCQTestResultsDTO testResultsDTO, HttpHeaders headers, Result result) throws Exception {
+ JAXBContext jaxbContext = JAXBContext.newInstance(MCQTestResultsDTO.class);
+ Marshaller marshaller = jaxbContext.createMarshaller();
+ marshaller.marshal(testResultsDTO, result);
+ }
+
+ @Override
+ protected boolean supports(Class<?> clazz) {
+ return MCQTestResultsDTO.class.isAssignableFrom(clazz);
+ }
+
+ @Override
+ public List<MediaType> getSupportedMediaTypes() {
+ return Collections.singletonList(MEDIA_TYPE);
+ }
+}