Blob Blame History Raw
import jakarta.xml.bind.annotation.XmlRootElement;

import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.JAXBException;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.Unmarshaller;

import java.io.InputStream;
import java.io.ByteArrayOutputStream;
import java.io.ByteArrayInputStream;

@XmlRootElement(namespace = "org.fedoraproject.jaxb.test.smoke")
class Data
{
	public String text = "default text";
	public int number = 123;
}

public class Smoke
{
	public static void main(String[] args) throws Exception
	{
		JAXBContext context = JAXBContext.newInstance(Data.class);
		Marshaller m = context.createMarshaller();
		m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		m.marshal(new Data(), baos);

		Unmarshaller um = context.createUnmarshaller();

		Data data;
		try (InputStream is = new ByteArrayInputStream(baos.toByteArray())) {
			data = Data.class.cast(um.unmarshal(is));
		}
		
		if (!data.text.equals("default text"))
		{
			throw new RuntimeException("Expected \"default text\", found \"" + data.text + "\"");
		}
		if (data.number != 123)
		{
			throw new RuntimeException("Expected 123, found " + String.valueOf(data.number));
		}
	}
}