package com.orientechnologies.orient.core.record;
import com.orientechnologies.orient.core.db.ODatabaseDocumentInternal;
import com.orientechnologies.orient.core.db.document.ODatabaseDocument;
import com.orientechnologies.orient.core.db.document.ODatabaseDocumentTx;
import com.orientechnologies.orient.core.metadata.schema.OClass;
import com.orientechnologies.orient.core.metadata.schema.OType;
import com.orientechnologies.orient.core.record.impl.ODocument;
import org.junit.Test;
import java.io.*;
import static org.junit.Assert.assertEquals;
/**
* Created by tglman on 24/06/16.
*/
public class DocumentIndependentJavaSerializationTest {
@Test
public void testSerialization() throws IOException, ClassNotFoundException {
ODatabaseDocument db = new ODatabaseDocumentTx("memory:" + DocumentIndependentJavaSerializationTest.class.getSimpleName());
db.create();
byte[] ser;
try {
OClass clazz = db.getMetadata().getSchema().createClass("Test");
clazz.createProperty("test", OType.STRING);
ODocument doc = new ODocument(clazz);
doc.field("test", "Some Value");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(doc);
ser = baos.toByteArray();
} finally {
db.drop();
}
ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(ser));
ODocument doc = (ODocument) input.readObject();
assertEquals(doc.getClassName(), "Test");
assertEquals(doc.field("test"), "Some Value");
}
@Test
public void testDeserializationSave() throws IOException, ClassNotFoundException {
ODocument doc = new ODocument("Test");
doc.field("test", "Some Value");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(doc);
byte[] ser = baos.toByteArray();
ODatabaseDocumentInternal db = new ODatabaseDocumentTx(
"memory:" + DocumentIndependentJavaSerializationTest.class.getSimpleName());
db.create();
try {
OClass clazz = db.getMetadata().getSchema().createClass("Test");
clazz.createProperty("test", OType.STRING);
ObjectInputStream input = new ObjectInputStream(new ByteArrayInputStream(ser));
ODocument doc1 = (ODocument) input.readObject();
assertEquals(doc1._recordFormat, db.getSerializer());
assertEquals(doc1.getClassName(), "Test");
assertEquals(doc1.field("test"), "Some Value");
} finally {
db.drop();
}
}
}