1 4 package org.oddjob.state; 5 6 import java.io.ByteArrayInputStream ; 7 import java.io.ByteArrayOutputStream ; 8 import java.io.IOException ; 9 import java.io.ObjectInput ; 10 import java.io.ObjectInputStream ; 11 import java.io.ObjectOutput ; 12 import java.io.ObjectOutputStream ; 13 import java.util.Date ; 14 15 import junit.framework.TestCase; 16 17 import org.apache.log4j.Logger; 18 import org.oddjob.OddjobException; 19 20 23 public class JobStateEventTest extends TestCase { 24 private static final Logger logger = Logger.getLogger(JobStateEvent.class); 25 26 String message = "This should serialize."; 27 28 class NotSerializable { 29 30 } 31 32 class NotSerializableException extends Exception { 33 public NotSerializableException() { 34 super(message); 35 } 36 NotSerializable ns = new NotSerializable(); 37 } 38 39 public void testSerialize1() throws IOException , ClassNotFoundException { 40 Object source = new Object (); 41 JobStateEvent event = new JobStateEvent(source, 42 JobState.EXCEPTION, new Date (1234), new OddjobException(message)); 43 44 JobStateEvent event2 = (JobStateEvent) outAndBack(event); 45 logger.debug(event2); 46 assertNull(event2.getSource()); 48 assertEquals(JobState.EXCEPTION, event2.getJobState()); 49 assertEquals(1234, event2.getTime().getTime()); 50 assertEquals(message, event2.getException().getMessage()); 51 } 52 53 public void testSerialize2() throws IOException , ClassNotFoundException { 54 Object source = new Object (); 55 JobStateEvent event = new JobStateEvent(source, 56 JobState.EXCEPTION, new Date (1234), new NotSerializableException()); 57 58 JobStateEvent event2 = (JobStateEvent) outAndBack(event); 59 logger.debug(event2); 60 logger.debug("Exception:", event2.getException()); 61 assertNull(event2.getSource()); 63 assertEquals(JobState.EXCEPTION, event2.getJobState()); 64 assertEquals(1234, event2.getTime().getTime()); 65 assertEquals(JobStateEvent.REPLACEMENT_EXCEPTION_TEXT + message, event2.getException().getMessage()); 66 } 67 68 public void testSerializeComplete() throws IOException , ClassNotFoundException { 69 Object source = new Object (); 70 JobStateEvent event = new JobStateEvent(source, 71 JobState.COMPLETE, new Date (1234), null); 72 73 JobStateEvent event2 = (JobStateEvent) outAndBack(event); 74 logger.debug(event2); 75 assertNull(event2.getSource()); 77 assertEquals(JobState.COMPLETE, event2.getJobState()); 78 assertEquals(1234, event2.getTime().getTime()); 79 assertEquals(null, event2.getException()); 80 } 81 82 83 Object outAndBack(Object object) throws IOException , ClassNotFoundException { 84 85 ByteArrayOutputStream os = new ByteArrayOutputStream (); 86 ObjectOutput oo = new ObjectOutputStream (os); 87 oo.writeObject(object); 88 oo.close(); 89 90 ByteArrayInputStream in = new ByteArrayInputStream (os.toByteArray()); 91 ObjectInput oi = new ObjectInputStream (in); 92 93 Object o = oi.readObject(); 94 return o; 95 } 96 } 97 | Popular Tags |