Skip to content
ShortJobDescriptionTest.java 2.33 KiB
Newer Older
package net.ivoa.xml.uws.v1;

import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.bind.JAXB;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import org.junit.jupiter.api.Test;

public class ShortJobDescriptionTest {

    @Test
    public void testXmlSerialization() throws Exception {

        ShortJobDescription jobDesc = getShortJobDescription();

        String xml;
        try ( StringWriter sw = new StringWriter()) {
            JAXB.marshal(jobDesc, sw);
            xml = sw.toString();
            System.out.println(xml);
        }

        assertTrue(xml.contains("xlink:type=\"type\""));

        try ( StringReader sr = new StringReader(xml)) {
            ShortJobDescription deserialized = JAXB.unmarshal(sr, ShortJobDescription.class);
            verifyJobsAreEquals(deserialized);
        }
    }

    private ShortJobDescription getShortJobDescription() {

        ShortJobDescription jobDesc = new ShortJobDescription();
        jobDesc.setCreationTime(getXmlDate("2015-05-26T11:06:45.713"));
        jobDesc.setId("job_id");
        jobDesc.setPhase(ExecutionPhase.EXECUTING);
        jobDesc.setHref("href");
        jobDesc.setOwnerId("owner_id");
        jobDesc.setRunId("run_id");
        jobDesc.setType("type");

        return jobDesc;
    }

    private XMLGregorianCalendar getXmlDate(String dateTimeString) {
        try {
            return DatatypeFactory.newInstance().newXMLGregorianCalendar(dateTimeString);
        } catch (DatatypeConfigurationException ex) {
            throw new RuntimeException(ex);
        }
    }

    private void verifyJobsAreEquals(ShortJobDescription deserialized) {

        assertEquals("href", deserialized.getHref());
        assertEquals("job_id", deserialized.getId());
        assertEquals("owner_id", deserialized.getOwnerId());
        assertEquals("run_id", deserialized.getRunId());
        assertEquals("type", deserialized.getType());
        assertEquals("href", deserialized.getHref());
        assertEquals("2015-05-26T11:06:45.713", deserialized.getCreationTime().toString());
        assertEquals(ExecutionPhase.EXECUTING, deserialized.getPhase());
    }
}