/* The contents of this file are subject to the license and copyright terms * detailed in the license directory at the root of the source tree (also * available online at http://fedora-commons.org/license/). */ package fedora.server.test; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.HashMap; import junit.framework.TestCase; import fedora.common.Constants; import fedora.server.errors.ServerException; import fedora.server.storage.translation.DODeserializer; import fedora.server.storage.translation.DOSerializer; import fedora.server.storage.translation.DOTranslationUtility; import fedora.server.storage.translation.DOTranslatorImpl; import fedora.server.storage.translation.FOXML1_1DODeserializer; import fedora.server.storage.translation.FOXML1_1DOSerializer; import fedora.server.storage.types.BasicDigitalObject; import fedora.server.storage.types.DigitalObject; /** * Tests the FOXML deserializer and serializer by parsing a FOXML input file and * re-serializing it in the storage context. * * @author Sandy Payette */ public class FOXMLInOutTest extends TestCase implements Constants { protected File inFile = null; protected File outFile = null; protected DigitalObject obj = null; @Override protected void setUp() { //inFile=new File("TestIngestFiles/foxml-reference-example.xml"); inFile = new File("TestIngestFiles/foxml-simple-nodissem.xml"); outFile = new File("TestExportFiles/STORE-foxml.xml"); System.setProperty("fedoraServerHost", "localhost"); System.setProperty("fedoraServerPort", "8080"); FileInputStream in = null; try { in = new FileInputStream(inFile); } catch (IOException ioe) { System.out.println("Error on FOXML file inputstream: " + ioe.getMessage()); ioe.printStackTrace(); } try { // setup FOXML1_1DODeserializer deser = new FOXML1_1DODeserializer(); FOXML1_1DOSerializer ser = new FOXML1_1DOSerializer(); HashMap<String, DODeserializer> desermap = new HashMap<String, DODeserializer>(); HashMap<String, DOSerializer> sermap = new HashMap<String, DOSerializer>(); desermap.put(FOXML1_1.uri, deser); DOTranslatorImpl trans = new DOTranslatorImpl(sermap, desermap); obj = new BasicDigitalObject(); // deserialize input XML System.out.println("Deserializing..."); trans.deserialize(in, obj, FOXML1_1.uri, "UTF-8", DOTranslationUtility.DESERIALIZE_INSTANCE); System.out.println("Digital Object PID= " + obj.getPid()); // serialize sermap.put(FOXML1_1.uri, ser); System.out.println("Re-serializing..."); System.out.println("Writing file to... " + outFile.getPath()); FileOutputStream out = new FileOutputStream(outFile); // re-serialize (either for the EXPORT or STORAGE context) int m_transContext = DOTranslationUtility.SERIALIZE_EXPORT_MIGRATE; trans.serialize(obj, out, FOXML1_1.uri, "UTF-8", m_transContext); System.out.println("Done. Serialized for context: " + m_transContext); } catch (ServerException e) { System.out .println("ServerException: suppressing info not available without running server."); } catch (Exception e) { e.printStackTrace(); System.out.println("Exception: (" + e.getClass().getName() + "):" + e.getMessage()); } } public void testDigitalObject() { //assertNotNull("Failure: digital object PID is null.", obj.getPid()); //assertNotNull("Failure: digital object audit record set is null.", obj.getAuditRecords()); //assertNotNull("Failure: digital object cmodel is null.", obj.getContentModelId()); //assertNotNull("Failure: digital object createDate is null.", obj.getCreateDate()); } }