public static DigitalObject deepCopy(DigitalObject obj) throws Exception {
if (System.getProperty("fedoraServerHost") == null
|| System.getProperty("fedoraServerPort") == null) {
System.setProperty("fedoraServerHost", "localhost");
System.setProperty("fedoraServerPort", "8080");
}
String charEncoding = "UTF-8";
int transContext = DOTranslationUtility.SERIALIZE_STORAGE_INTERNAL;
ReadableByteArrayOutputStream out = new ReadableByteArrayOutputStream(4096);
FOXML1_1DOSerializer ser = new FOXML1_1DOSerializer();
ser.serialize(obj, out, charEncoding, transContext);
FOXML1_1DODeserializer deser = new FOXML1_1DODeserializer();
ByteArrayInputStream in = out.toInputStream();
DigitalObject objCopy = new BasicDigitalObject();
deser.deserialize(in, objCopy, charEncoding, transContext);
try {
Thread.sleep(100);
} catch (Exception e) {
}
return objCopy;
}