1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.io; 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayInputStream; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ByteArrayOutputStream; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.DataInputStream; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileInputStream; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileOutputStream; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStream; 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InvalidObjectException; 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.NotActiveException; 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectInputStream; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectOutputStream; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectStreamClass; 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.ObjectStreamException; 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Serializable; 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.StreamCorruptedException; 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.WriteAbortedException; 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.security.Permission; 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.security.PermissionCollection; 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayList; 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Arrays; 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Calendar; 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.GregorianCalendar; 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.HashMap; 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.HashSet; 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Hashtable; 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.IdentityHashMap; 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.LinkedHashMap; 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.LinkedHashSet; 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.LinkedList; 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.List; 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Map; 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.PropertyPermission; 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Set; 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SimpleTimeZone; 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SortedMap; 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.SortedSet; 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TimeZone; 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TreeMap; 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.TreeSet; 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Vector; 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport libcore.io.Streams; 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/** 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Automated Test Suite for class java.io.ObjectOutputStream 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath@SuppressWarnings("serial") 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class SerializationStressTest extends junit.framework.TestCase implements 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Serializable { 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // protected static final String MODE_XLOAD = "xload"; 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // protected static final String MODE_XDUMP = "xdump"; 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final String FOO = "foo"; 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final String MSG_TEST_FAILED = "Failed to write/read/assertion checking: "; 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected static final boolean DEBUG = false; 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected static boolean xload = false; 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected static boolean xdump = false; 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected static String xFileName = null; 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected transient int dumpCount = 0; 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected transient ObjectInputStream ois; 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected transient ObjectOutputStream oos; 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected transient ByteArrayOutputStream bao; 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // ----------------------------------------------------------------------------------- 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class ObjectInputStreamSubclass extends ObjectInputStream { 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Vector<Class> resolvedClasses = new Vector<Class>(); 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public ObjectInputStreamSubclass(InputStream in) throws IOException, 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath StreamCorruptedException { 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(in); 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Class<?> resolveClass(ObjectStreamClass osClass) 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throws IOException, ClassNotFoundException { 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Class result = super.resolveClass(osClass); 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath resolvedClasses.addElement(result); 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return result; 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Class[] resolvedClasses() { 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return (Class[]) resolvedClasses.toArray(new Class[resolvedClasses 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .size()]); 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final Map<String, String> TABLE = new Hashtable<String, String>(); 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final Map<String, String> MAP = new HashMap<String, String>(); 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final SortedMap<String, String> TREE = new TreeMap<String, String>(); 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final LinkedHashMap<String, String> LINKEDMAP = new LinkedHashMap<String, String>(); 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final LinkedHashSet<String> LINKEDSET = new LinkedHashSet<String>(); 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final IdentityHashMap<String, String> IDENTITYMAP = new IdentityHashMap<String, String>(); 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final List<String> ALIST = Arrays.asList(new String[] { "a", "list", "of", 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "strings" }); 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final List<String> LIST = new ArrayList<String>(ALIST); 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final Set<String> SET = new HashSet<String>(Arrays.asList(new String[] { "one", 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "two", "three" })); 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final SortedSet<String> SORTSET = new TreeSet<String>(Arrays.asList(new String[] { 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "one", "two", "three" })); 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final java.text.DateFormat DATEFORM = java.text.DateFormat 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .getInstance(); 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final java.text.ChoiceFormat CHOICE = new java.text.ChoiceFormat( 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "1#one|2#two|3#three"); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final java.text.NumberFormat NUMBERFORM = java.text.NumberFormat 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .getInstance(); 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final java.text.MessageFormat MESSAGE = new java.text.MessageFormat( 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "the time: {0,time} and date {0,date}"); 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final LinkedList<String> LINKEDLIST = new LinkedList<String>(Arrays 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .asList(new String[] { "a", "linked", "list", "of", "strings" })); 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final SimpleTimeZone TIME_ZONE = new SimpleTimeZone(3600000, 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "S-TEST"); 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static final Calendar CALENDAR = new GregorianCalendar(TIME_ZONE); 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static { 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TABLE.put("one", "1"); 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TABLE.put("two", "2"); 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TABLE.put("three", "3"); 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath MAP.put("one", "1"); 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath MAP.put("two", "2"); 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath MAP.put("three", "3"); 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDMAP.put("one", "1"); 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDMAP.put("two", "2"); 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDMAP.put("three", "3"); 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath IDENTITYMAP.put("one", "1"); 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath IDENTITYMAP.put("two", "2"); 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath IDENTITYMAP.put("three", "3"); 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDSET.add("one"); 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDSET.add("two"); 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath LINKEDSET.add("three"); 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TREE.put("one", "1"); 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TREE.put("two", "2"); 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath TREE.put("three", "3"); 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // To make sure they all use the same Calendar 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath CALENDAR.setTimeZone(new SimpleTimeZone(0, "GMT")); 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath CALENDAR.set(1999, Calendar.JUNE, 23, 15, 47, 13); 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath CALENDAR.set(Calendar.MILLISECOND, 553); 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath DATEFORM.setCalendar(CALENDAR); 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath java.text.DateFormatSymbols symbols = new java.text.DateFormatSymbols(); 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath symbols.setZoneStrings(new String[][] { { "a", "b", "c", "d", "e" }, 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath { "f", "g", "h", "i", "j" } }); 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((java.text.SimpleDateFormat) DATEFORM).setDateFormatSymbols(symbols); 187c96651d01dc87a20aa718d60feaff6611451852eNeil Fuller DATEFORM.setNumberFormat(new java.text.DecimalFormat("#0.#")); 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath DATEFORM.setTimeZone(TimeZone.getTimeZone("EST")); 189c96651d01dc87a20aa718d60feaff6611451852eNeil Fuller ((java.text.DecimalFormat) NUMBERFORM).applyPattern("#0.#"); 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath MESSAGE.setFormat(0, DATEFORM); 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath MESSAGE.setFormat(1, DATEFORM); 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public SerializationStressTest() { 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public SerializationStressTest(String name) { 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(name); 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public String getDumpName() { 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return getName() + dumpCount; 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void dump(Object o) throws IOException, ClassNotFoundException { 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (dumpCount > 0) 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath setUp(); 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Dump the object 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(o); 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected Object dumpAndReload(Object o) throws IOException, 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ClassNotFoundException { 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath dump(o); 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return reload(); 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected InputStream loadStream() throws IOException { 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Choose the load stream 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (xload || xdump) { 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Load from pre-existing file 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new FileInputStream(xFileName + "-" + getDumpName() + ".ser"); 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } else { 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Just load from memory, we dumped to memory 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ByteArrayInputStream(bao.toByteArray()); 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected Object reload() throws IOException, ClassNotFoundException { 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath dumpCount++; 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return ois.readObject(); 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Sets up the fixture, for example, open a network connection. This method 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * is called before a test is executed. 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void setUp() { 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (xdump) { 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = new ObjectOutputStream(new FileOutputStream(xFileName 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + "-" + getDumpName() + ".ser")); 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } else { 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = new ObjectOutputStream(bao = new ByteArrayOutputStream()); 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Exception thrown during setup : " + e.getMessage()); 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Tears down the fixture, for example, close a network connection. This 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * method is called after a test is executed. 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() { 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (oos != null) { 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Exception e) { 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_1_Constructor() throws Exception { 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method java.io.ObjectOutputStream(java.io.OutputStream) 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = new ObjectOutputStream(new ByteArrayOutputStream()); 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_2_close() { 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.close() 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = new ObjectOutputStream(bao = new ByteArrayOutputStream()); 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeChar('T'); 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(FOO); 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Writing to a closed stream does not cause problems. This is 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the expected behavior 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Operation on closed stream threw IOException : " 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + e.getMessage()); 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_3_defaultWriteObject() { 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.defaultWriteObject() 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.defaultWriteObject(); 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NotActiveException e) { 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Correct 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return; 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail( 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "Failed to throw NotActiveException when invoked outside readObject"); 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_4_flush() { 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.flush() 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = new ObjectOutputStream(bao = new ByteArrayOutputStream()); 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int size = bao.size(); 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeByte(127); 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Data flushed already", bao.size() == size); 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.flush(); 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Failed to flush data", bao.size() > size); 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // we don't know how many bytes are actually written for 1 byte, 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // so we test > <before> 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos = null; 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_5_reset() { 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.reset() 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String o = "HelloWorld"; 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(o); 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(o); 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.reset(); 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(o); 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_6_write() { 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.write(byte [], int, 346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // int) 347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buf = new byte[255]; 349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] output = new byte[255]; 350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < output.length; i++) 351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath output[i] = (byte) i; 352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.write(output, 0, output.length); 353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readFully(buf); 356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < output.length; i++) 358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (buf[i] != output[i]) 359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Read incorrect byte: " + i); 360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_6a_write() { 366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.write(byte [], int, 367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // int) 368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buf = new byte[256]; 370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] output = new byte[256]; 371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < output.length; i++) 372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath output[i] = (byte) (i & 0xff); 373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.write(output, 0, output.length); 374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readFully(buf); 377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < output.length; i++) 379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (buf[i] != output[i]) 380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Read incorrect byte: " + i); 381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_7_write() { 387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.write(int) 388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.write('T'); 390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect byte", 'T', ois.read()); 393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_8_write() { 400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.write(byte []) 401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buf = new byte[10]; 403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.write("HelloWorld".getBytes()); 404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.read(buf, 0, 10); 407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Read incorrect bytes", "HelloWorld", new String(buf, 0, 10) 409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ); 410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_9_writeBoolean() { 416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeBoolean(boolean) 417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeBoolean(true); 419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrote incorrect byte value", ois.readBoolean()); 422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_10_writeByte() { 428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeByte(int) 429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeByte(127); 431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect byte value", 127, ois.readByte()); 434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_11_writeBytes() { 440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void 441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.io.ObjectOutputStream.writeBytes(java.lang.String) 442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] buf = new byte[10]; 444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeBytes("HelloWorld"); 445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readFully(buf); 448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect bytes value", "HelloWorld", new String(buf, 0, 10, "UTF-8") 450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ); 451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_12_writeChar() { 457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeChar(int) 458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeChar('T'); 460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect char value", 'T', ois.readChar()); 463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_13_writeChars() { 469cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void 470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.io.ObjectOutputStream.writeChars(java.lang.String) 471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int avail = 0; 473cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] buf = new char[10]; 474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeChars("HelloWorld"); 475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Number of prim data bytes in stream / 2 to give char index 478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath avail = ois.available() / 2; 479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath for (int i = 0; i < avail; ++i) 480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath buf[i] = ois.readChar(); 481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect chars", "HelloWorld", new String(buf, 0, 10) 483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ); 484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_14_writeDouble() { 490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeDouble(double) 491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeDouble(Double.MAX_VALUE); 493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrote incorrect double value", 496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readDouble() == Double.MAX_VALUE); 497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_15_writeFloat() { 503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeFloat(float) 504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeFloat(Float.MAX_VALUE); 506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrote incorrect double value", 509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readFloat() == Float.MAX_VALUE); 510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = null; 512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_16_writeInt() { 518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeInt(int) 519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeInt(Integer.MAX_VALUE); 521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrote incorrect double value", 524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readInt() == Integer.MAX_VALUE); 525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_17_writeLong() { 532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeLong(long) 533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeLong(Long.MAX_VALUE); 535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrote incorrect double value", 538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readLong() == Long.MAX_VALUE); 539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_19_writeShort() { 545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void java.io.ObjectOutputStream.writeShort(int) 546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeShort(127); 548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect short value", 127, ois.readShort()); 551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_20_writeUTF() { 557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // Test for method void 558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.io.ObjectOutputStream.writeUTF(java.lang.String) 559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeUTF("HelloWorld"); 561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrote incorrect UTF value", 564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "HelloWorld", ois.readUTF()); 565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_25_available() { 571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(FOO); 573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(FOO); 574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.flush(); 575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int available1 = 0; 576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int available2 = 0; 577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object obj1 = null; 578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object obj2 = null; 579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ObjectInputStream ois = new ObjectInputStream(loadStream()); 580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath available1 = ois.available(); 581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj1 = ois.readObject(); 582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath available2 = ois.available(); 583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj2 = ois.readObject(); 584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("available returned incorrect value", 0, available1); 586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("available returned incorrect value", 0, available2); 587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("available caused incorrect reading", FOO.equals(obj1)); 589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("available returned incorrect value", FOO.equals(obj2)); 590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing object : " + e.getMessage()); 593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Unable to read Object type : " + e.toString()); 595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Error err) { 596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.out.println("Error " + err); 597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw err; 598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void t_MixPrimitivesAndObjects() throws IOException, 603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ClassNotFoundException { 604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int i = 7; 605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String s1 = "string 1"; 606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String s2 = "string 2"; 607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] bytes = { 1, 2, 3 }; 608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeInt(i); 610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(s1); 611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeUTF(s2); 612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(bytes); 613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int j = ois.readInt(); 618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong int :" + j, i == j); 619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String l1 = (String) ois.readObject(); 621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong obj String :" + l1, s1.equals(l1)); 622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String l2 = (String) ois.readUTF(); 624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong UTF String :" + l2, s2.equals(l2)); 625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] bytes2 = (byte[]) ois.readObject(); 627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Wrong byte[]", Arrays.equals(bytes, bytes2)); 628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } finally { 630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_resolveClass() { 635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new Object[] { Integer.class, new Integer(1) }); 637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStreamSubclass(loadStream()); 640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readObject(); 641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e1) { 643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException : " + e1.getMessage()); 644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e2) { 645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("ClassNotFoundException : " + e2.getMessage()); 646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Class[] resolvedClasses = ((ObjectInputStreamSubclass) ois) 649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .resolvedClasses(); 650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("missing resolved", 3, resolvedClasses.length); 651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("resolved class 1", resolvedClasses[0] == Object[].class); 652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("resolved class 2", resolvedClasses[1] == Integer.class); 653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("resolved class 3", resolvedClasses[2] == Number.class); 654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_reset() throws IOException, ClassNotFoundException { 657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.reset(); 658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject("R"); 659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.reset(); 660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeByte(24); 661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath DataInputStream dis = new DataInputStream(loadStream()); 664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] input = Streams.readFully(dis); 665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath byte[] result = new byte[] { (byte) 0xac, (byte) 0xed, (byte) 0, 666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath (byte) 5, (byte) 0x79, (byte) 0x74, (byte) 0, (byte) 1, 667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath (byte) 'R', (byte) 0x79, (byte) 0x77, (byte) 1, (byte) 24 }; 668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("incorrect output", Arrays.equals(input, result)); 669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStreamSubclass(loadStream()); 671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrong result from readObject()", "R", ois.readObject()); 672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("Wrong result from readByte()", 24, ois.readByte()); 673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.close(); 674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class ResolveObjectTest implements Serializable { 677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object field1, field2; 678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private static class ResolveObjectInputStream extends ObjectInputStream { 681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectInputStream(InputStream in) 682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throws StreamCorruptedException, IOException { 683cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(in); 684cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 685cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 686cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void enableResolve() { 687cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath enableResolveObject(true); 688cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 689cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 690cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object resolveObject(Object obj) { 691cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (obj instanceof Vector) // test_1_resolveObject() 692cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Hashtable(); 693cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath else if ("abc".equals(obj)) // test_2_resolveObject() 694cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return "ABC"; 695cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath else if (obj instanceof String) // test_3_resolveObject() 696cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return String.valueOf(((String) obj).length()); 697cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath else if (obj instanceof int[]) // test_4_resolveObject() 698cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new Object[1]; 699cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath else if (obj instanceof Object[] && ((Object[]) obj).length == 2) // test_5_resolveObject() 700cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new char[1]; 701cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return obj; 702cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 703cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 704cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 705cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_1_resolveObject() { 706cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 707cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest obj = new ResolveObjectTest(); 708cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field1 = new Vector(); 709cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field2 = obj.field1; 710cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(obj); 711cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 712cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ResolveObjectInputStream(loadStream()); 713cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((ResolveObjectInputStream) ois).enableResolve(); 714cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest result = null; 715cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 716cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = (ResolveObjectTest) ois.readObject(); 717cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 718cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(e.toString()); 719cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 720cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Object not resolved", 721cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 instanceof Hashtable); 722cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Second reference not resolved", 723cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 == result.field2); 724cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 725cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 726cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 727cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 728cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 729cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_2_resolveObject() { 730cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 731cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest obj = new ResolveObjectTest(); 732cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field1 = "abc"; 733cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field2 = obj.field1; 734cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(obj); 735cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 736cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ResolveObjectInputStream(loadStream()); 737cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((ResolveObjectInputStream) ois).enableResolve(); 738cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest result = null; 739cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 740cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = (ResolveObjectTest) ois.readObject(); 741cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 742cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(e.toString()); 743cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 744cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("String not resolved", "ABC", result.field1); 745cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Second reference not resolved", 746cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 == result.field2); 747cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 748cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 749cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 750cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 751cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 752cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_3_resolveObject() { 753cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 754cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest obj = new ResolveObjectTest(); 755cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath char[] lchars = new char[70000]; 756cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field1 = new String(lchars); 757cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field2 = obj.field1; 758cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(obj); 759cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 760cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ResolveObjectInputStream(loadStream()); 761cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((ResolveObjectInputStream) ois).enableResolve(); 762cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest result = null; 763cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 764cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = (ResolveObjectTest) ois.readObject(); 765cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 766cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(e.toString()); 767cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 768cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Long String not resolved", "70000" 769cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .equals(result.field1)); 770cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Second reference not resolved", 771cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 == result.field2); 772cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 773cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 774cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 775cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 776cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 777cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_4_resolveObject() { 778cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 779cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest obj = new ResolveObjectTest(); 780cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field1 = new int[5]; 781cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field2 = obj.field1; 782cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(obj); 783cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 784cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ResolveObjectInputStream(loadStream()); 785cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((ResolveObjectInputStream) ois).enableResolve(); 786cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest result = null; 787cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 788cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = (ResolveObjectTest) ois.readObject(); 789cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 790cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(e.toString()); 791cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 792cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Class cl = new Object[0].getClass(); 793cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("int[] not resolved", result.field1.getClass() == cl); 794cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Second reference not resolved", 795cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 == result.field2); 796cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 797cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 798cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 799cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 800cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 801cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_5_resolveObject() { 802cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 803cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest obj = new ResolveObjectTest(); 804cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field1 = new Object[2]; 805cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath obj.field2 = obj.field1; 806cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(obj); 807cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 808cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ResolveObjectInputStream(loadStream()); 809cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ((ResolveObjectInputStream) ois).enableResolve(); 810cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResolveObjectTest result = null; 811cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 812cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = (ResolveObjectTest) ois.readObject(); 813cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 814cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail(e.toString()); 815cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 816cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Class cl = new char[0].getClass(); 817cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("int[] not resolved", result.field1.getClass() == cl); 818cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Second reference not resolved", 819cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result.field1 == result.field2); 820cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 821cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 822cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 823cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 824cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 825cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestA implements Serializable { 826cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object writeReplace() throws ObjectStreamException { 827cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestB(); 828cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 829cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 830cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 831cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestB extends WriteReplaceTestA { 832cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 833cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 834cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestC extends WriteReplaceTestA { 835cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object writeReplace() throws ObjectStreamException { 836cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestC(); 837cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 838cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 839cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 840cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestD implements Serializable { 841cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Object writeReplace() throws ObjectStreamException { 842cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestD(); 843cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 844cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 845cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 846cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestE extends WriteReplaceTestD { 847cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 848cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 849cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class WriteReplaceTestF implements Serializable { 850cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int type, readType; 851cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 852cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public WriteReplaceTestF(int type, int readType) { 853cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.type = type; 854cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.readType = readType; 855cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 856cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 857cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object writeReplace() throws ObjectStreamException { 858cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath switch (type) { 859cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 0: 860cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new InvalidObjectException("invalid"); 861cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 1: 862cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new RuntimeException("runtime"); 863cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 2: 864cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new Error("error"); 865cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath default: 866cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestE(readType); 867cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 868cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 869cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 870cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 871cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestA implements Serializable { 872cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object readResolve() throws ObjectStreamException { 873cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestA(); 874cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 875cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 876cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 877cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestB extends ReadResolveTestA { 878cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 879cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 880cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestC implements Serializable { 881cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Object readResolve() throws ObjectStreamException { 882cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestB(); 883cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 884cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 885cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 886cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestD extends ReadResolveTestC { 887cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 888cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 889cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestE implements Serializable { 890cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int type; 891cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 892cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public ReadResolveTestE(int type) { 893cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath this.type = type; 894cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 895cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 896cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public Object readResolve() throws ObjectStreamException { 897cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath switch (type) { 898cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 0: 899cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new InvalidObjectException("invalid"); 900cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 1: 901cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new RuntimeException("runtime"); 902cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 2: 903cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throw new Error("error"); 904cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath case 3: 905cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return this; 906cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath default: 907cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return new ReadResolveTestF(); 908cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 909cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 910cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 911cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 912cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class ReadResolveTestF implements Serializable { 913cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 914cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 915cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_1_writeReplace() { 916cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 917cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Vector<Object> v = new Vector<Object>(); 918cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestA()); 919cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestB()); 920cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestB()); 921cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestC()); 922cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestD()); 923cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath v.addElement(new WriteReplaceTestE()); 924cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(v); 925cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 926cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 927cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Vector result = (Vector) ois.readObject(); 928cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 0 : " + result.elementAt(0), result 929cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(0).getClass() == ReadResolveTestA.class); 930cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 1 : " + result.elementAt(1), result 931cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(1).getClass() == ReadResolveTestA.class); 932cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 2 : " + result.elementAt(2), result 933cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(2).getClass() == ReadResolveTestA.class); 934cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 3 : " + result.elementAt(3), result 935cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(3).getClass() == ReadResolveTestB.class); 936cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 4 : " + result.elementAt(4), result 937cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(4).getClass() == ReadResolveTestD.class); 938cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("invalid 5 : " + result.elementAt(5), result 939cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .elementAt(5).getClass() == WriteReplaceTestE.class); 940cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 941cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 942cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 943cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("ClassNotFoundException serializing data : " + e.getMessage()); 944cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 945cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 946cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 947cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_2_writeReplace() { 948cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 949cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath boolean exception = false; 950cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 951cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(0, -1)); 952cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ObjectStreamException e) { 953cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 954cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 955cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Should throw ObjectStreamException", exception); 956cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = false; 957cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 958cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(1, -1)); 959cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (RuntimeException e) { 960cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 961cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 962cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Should throw RuntimeException", exception); 963cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = false; 964cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 965cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(2, -1)); 966cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Error e) { 967cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 968cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 969cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Should throw Error", exception); 970cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 971cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(3, 0)); 972cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(3, 1)); 973cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(new WriteReplaceTestF(3, 2)); 974cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath WriteReplaceTestF test = new WriteReplaceTestF(3, 3); 975cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(test); 976cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(test); 977cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath WriteReplaceTestF test2 = new WriteReplaceTestF(3, 4); 978cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(test2); 979cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.writeObject(test2); 980cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath oos.close(); 981cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois = new ObjectInputStream(loadStream()); 982cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 983cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readObject(); 984cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (WriteAbortedException e) { 985cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 986cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 987cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = false; 988cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 989cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readObject(); 990cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ObjectStreamException e) { 991cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 992cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 993cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Expected ObjectStreamException", exception); 994cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = false; 995cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 996cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readObject(); 997cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (RuntimeException e) { 998cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 999cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 1000cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Expected RuntimeException", exception); 1001cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = false; 1002cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 1003cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ois.readObject(); 1004cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (Error e) { 1005cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath exception = true; 1006cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 1007cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Expected Error", exception); 1008cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 1009cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object readE1 = ois.readObject(); 1010cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object readE2 = ois.readObject(); 1011cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Replaced objects should be identical", readE1 == readE2); 1012cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object readF1 = ois.readObject(); 1013cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Object readF2 = ois.readObject(); 1014cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue("Replaced resolved objects should be identical: " 1015cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + readF1 + " " + readF2, readF1 == readF2); 1016cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IOException e) { 1017cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("IOException serializing data : " + e.getMessage()); 1018cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (ClassNotFoundException e) { 1019cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("ClassNotFoundException serializing data : " + e.getMessage()); 1020cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 1021cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 1022cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 1023