/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at http://www.gnu.org/licenses/lgpl.txt ******************************************************************************/ package debugging; import java.io.ByteArrayInputStream; import java.io.InputStream; import java.io.Serializable; import java.io.StringWriter; import java.io.UnsupportedEncodingException; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import javax.xml.bind.PropertyException; import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlRootElement; import com.opendoorlogistics.api.tables.ODLColumnType; import com.opendoorlogistics.core.scripts.elements.AdapterConfig; import com.opendoorlogistics.core.scripts.elements.AdaptedTableConfig; import com.opendoorlogistics.core.scripts.elements.Script; public class TestJAXB { @XmlRootElement(name = "GeocoderConfig") public static class GeocodeConfig implements Serializable{ private String filename= "blah"; private boolean testBool; public String getFilename() { return filename; } public void setFilename(String filename) { this.filename = filename; } public boolean isTestBool() { return testBool; } public void setTestBool(boolean testBool) { this.testBool = testBool; } } public static class DM implements Serializable{ private double speedMultiplier; public double getSpeedMultiplier() { return speedMultiplier; } public void setSpeedMultiplier(double speedMultiplier) { this.speedMultiplier = speedMultiplier; } } public enum UserConfigSaveType{ binarySerialization, // object is serialized and saved as bytes (default if nothing else applies) xmlNodes, jaxbMarshalling, // object is marshalled using jaxb (check for XMLRootElement ? ) string // object is a string (check if is string) } public static void main(String[] args) throws Exception { // ODLTableDefinitionImpl tbl = new ODLTableDefinitionImpl(-1, "Customers"); // tbl.setFlags(2); // tbl.addColumn("name", ODLColumnType.STRING, 42); // AdapterConfig conf = new AdapterConfig(); // TableConfig tableConfig = conf.createTable("Postcodes", "Customers"); // tableConfig.addField("Postcode", null, ODLColumnType.STRING, 0); // tableConfig.addField("x", "lng", ODLColumnType.DOUBLE, 2); // // PushConfig push = new PushConfig("Customers", conf); // // Test test = new Test(); // test.setO(push.toString()); // marshallUnmarshall(test); //Script script = createScript(); // Document document= ScriptIO.toXML(script); // // String xml = ScriptIO.document2String(document.getFirstChild().getFirstChild(), ScriptIO.getPrettyPrintFormat()); // System.out.println(xml); // System.out.println("#################################################"); // System.out.println(); // // unmarshall(Script.class, xml); } public static void main2(String[] args) throws Exception { AdapterConfig conf = new AdapterConfig(); AdaptedTableConfig tableConfig = conf.createTable("Postcodes", "Customers"); tableConfig.addMappedColumn("Postcode", null, ODLColumnType.STRING, 0); tableConfig.addMappedColumn("x", "lng", ODLColumnType.DOUBLE, 2); System.out.println(tableConfig); marshallUnmarshall(conf); } public static void marshallUnmarshall(Object conf) throws JAXBException, PropertyException, UnsupportedEncodingException { JAXBContext context = JAXBContext.newInstance(conf.getClass()); Marshaller m = context.createMarshaller(); m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); StringWriter writer = new StringWriter(); m.marshal(conf,writer); System.out.println(writer.toString()); String xml = writer.toString(); unmarshall(conf.getClass(), xml); } public static void unmarshall(Class<?> cls, String xml) throws UnsupportedEncodingException, JAXBException { InputStream stream = new ByteArrayInputStream(xml.getBytes("UTF-8")); JAXBContext context = JAXBContext.newInstance(cls); Unmarshaller um = context.createUnmarshaller(); Object tc2 = um.unmarshal(stream); // System.out.println(tc2); } }