package org.opennaas.extensions.vcpe.test;
import java.io.Reader;
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import junit.framework.Assert;
import org.junit.Test;
import org.opennaas.core.resources.ObjectSerializer;
import org.opennaas.core.resources.SerializationException;
import org.opennaas.core.resources.descriptor.vcpe.VCPENetworkDescriptor;
import org.opennaas.core.resources.descriptor.vcpe.helper.VCPENetworkDescriptorHelper;
import org.opennaas.extensions.vcpe.model.VCPENetworkModel;
import org.opennaas.extensions.vcpe.model.helper.VCPENetworkModelHelper;
public class DescriptorTest {
@Test
public void marshallDescriptorTest() throws JAXBException, SerializationException {
StringWriter writer = new StringWriter();
VCPENetworkModel model = VCPENetworkModelHelper.generateSampleModel();
VCPENetworkDescriptor descriptor = VCPENetworkDescriptorHelper.generateSampleDescriptor(
"vcpeNet1", model.toXml());
marshallVCPENetDescriptor(writer, descriptor);
VCPENetworkDescriptor loaded = unmarshallVCPENetDescriptor(new StringReader(writer.toString()));
Assert.assertEquals(loaded.getInformation(), descriptor.getInformation());
Assert.assertEquals(loaded.getvCPEModel(), descriptor.getvCPEModel());
VCPENetworkModel loadedModel = (VCPENetworkModel) ObjectSerializer.fromXml(loaded.getvCPEModel(), VCPENetworkModel.class);
Assert.assertEquals(model, loadedModel);
System.out.println(writer.toString());
}
private static Writer marshallVCPENetDescriptor(Writer writer, VCPENetworkDescriptor descriptor) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(VCPENetworkDescriptor.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
m.marshal(descriptor, writer);
return writer;
}
private static VCPENetworkDescriptor unmarshallVCPENetDescriptor(Reader reader) throws JAXBException {
JAXBContext context = JAXBContext.newInstance(VCPENetworkDescriptor.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
return (VCPENetworkDescriptor) unmarshaller.unmarshal(reader);
}
}