1 4 package com.tc.objectserver.managedobject; 5 6 import com.tc.io.serializer.TCObjectInputStream; 7 import com.tc.io.serializer.TCObjectOutputStream; 8 import com.tc.object.ObjectID; 9 import com.tc.object.tx.TransactionID; 10 import com.tc.objectserver.api.ObjectInstanceMonitor; 11 import com.tc.objectserver.core.api.ManagedObject; 12 import com.tc.objectserver.core.api.TestDNA; 13 import com.tc.objectserver.core.api.TestDNACursor; 14 import com.tc.objectserver.impl.ObjectInstanceMonitorImpl; 15 import com.tc.objectserver.persistence.impl.InMemoryPersistor; 16 17 import java.io.ByteArrayInputStream ; 18 import java.io.ByteArrayOutputStream ; 19 20 import junit.framework.TestCase; 21 22 public class ManagedObjectSerializerTest extends TestCase { 23 24 private ObjectID id; 25 private ManagedObjectStateSerializer stateSerializer; 26 27 public void test() throws Exception { 28 ManagedObjectStateFactory.disableSingleton(true); 29 ManagedObjectStateFactory.createInstance(new NullManagedObjectChangeListenerProvider(), new InMemoryPersistor()); 30 31 stateSerializer = new ManagedObjectStateSerializer(); 32 id = new ObjectID(1); 33 34 ManagedObjectSerializer mos = new ManagedObjectSerializer(stateSerializer); 35 ManagedObjectImpl mo = new ManagedObjectImpl(id); 36 assertTrue(mo.isDirty()); 37 assertTrue(mo.isNew()); 38 TestDNA dna = newDNA(1); 39 ObjectInstanceMonitor imo = new ObjectInstanceMonitorImpl(); 40 mo.apply(dna, new TransactionID(1), new BackReferences(), imo); 41 assertFalse(mo.isNew()); 42 43 ByteArrayOutputStream baout = new ByteArrayOutputStream (); 44 TCObjectOutputStream out = new TCObjectOutputStream(baout); 45 mos.serializeTo(mo, out); 46 out.flush(); 47 ManagedObject mo2 = (ManagedObject) mos.deserializeFrom(new TCObjectInputStream(new ByteArrayInputStream (baout 48 .toByteArray()))); 49 50 assertFalse(mo2.isDirty()); 51 assertFalse(mo2.isNew()); 52 mo.setIsDirty(false); 53 assertNotSame(mo, mo2); 54 assertTrue(mo.isEqual(mo2)); 55 } 56 57 private TestDNA newDNA(int fieldSetCount) { 58 TestDNACursor cursor = new TestDNACursor(); 59 for (int i = 0; i < fieldSetCount; i++) { 60 cursor.addPhysicalAction("refField" + i, new ObjectID(1)); 61 cursor.addPhysicalAction("booleanField" + i, new Boolean (true)); 62 cursor.addPhysicalAction("byteField" + i, new Byte ((byte) 1)); 63 cursor.addPhysicalAction("characterField" + i, new Character ('c')); 64 cursor.addPhysicalAction("doubleField" + i, new Double (100.001d)); 65 cursor.addPhysicalAction("floatField" + i, new Float (100.001f)); 66 cursor.addPhysicalAction("integerField" + i, new Integer (100)); 67 cursor.addPhysicalAction("longField" + i, new Long (100)); 68 cursor.addPhysicalAction("stringField" + i, "Some nice string field" + i); 69 cursor.addPhysicalAction("shortField" + i, new Short ((short) 1)); 70 } 71 TestDNA dna = new TestDNA(cursor); 72 return dna; 73 } 74 } 75 | Popular Tags |