1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io; 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.NotSerializableException; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Hashtable; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Vector; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes@SuppressWarnings( { "serial", "unused" }) 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SerializationStressTest1 extends SerializationStressTest { 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The purpose of these two classes is to test if serialization, when 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // loading, runs the object's constructor (wrong) or the constructor defined 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // at the topmost Serializable superclass(correct). 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final int INIT_INT_VALUE = 7; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // HAS to be static class so that our constructor signature will remain 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // untouched (no synthetic param) 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class SerializationTest implements java.io.Serializable { 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int anInt = INIT_INT_VALUE; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SerializationTest() { 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static final String INIT_STR_VALUE = "a string that is blortz"; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // HAS to be static class so that our constructor signature will remain 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // untouched (no synthetic param) 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class SerializationTestSubclass1 extends SerializationTest { 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String aString = INIT_STR_VALUE; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SerializationTestSubclass1() { 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Just to change default superclass init value 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes anInt = INIT_INT_VALUE / 2; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ----------------------------------------------------------------------------------- 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class SpecTestSuperClass implements Runnable { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected java.lang.String instVar; 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void run() { 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class SpecTest extends SpecTestSuperClass implements 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Cloneable, Serializable { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public java.lang.String instVar1; 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static java.lang.String staticVar1; 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static java.lang.String staticVar2; 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes instVar1 = "NonStaticInitialValue"; 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static { 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes staticVar1 = "StaticInitialValue"; 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes staticVar1 = new String(staticVar1); 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object method(Object objParam, Object objParam2) { 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new Object(); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean method(boolean bParam, Object objParam) { 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return true; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean method(boolean bParam, Object objParam, Object objParam2) { 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return true; 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class SpecTestSubclass extends SpecTest { 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public transient java.lang.String transientInstVar = "transientValue"; 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ----------------------------------------------------------------------------------- 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests what happens if the read/writeObject methods are defined 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Serialization should work fine. 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class ReadWriteObject implements java.io.Serializable { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledWriteObject = false; 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledReadObject = false; 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ReadWriteObject() { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void readObject(java.io.ObjectInputStream in) 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledReadObject = true; 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.readObject(); 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writeObject(java.io.ObjectOutputStream out) 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException { 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledWriteObject = true; 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out.writeObject(FOO); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests what happens if the read/writeObject methods are not 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // private. 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Serialization should fail. 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class PublicReadWriteObject implements java.io.Serializable { 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledWriteObject = false; 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledReadObject = false; 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public PublicReadWriteObject() { 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void readObject(java.io.ObjectInputStream in) 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledReadObject = true; 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.readObject(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void writeObject(java.io.ObjectOutputStream out) 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException { 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledWriteObject = true; 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out.writeObject(FOO); 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests if field names are serialized in the same way (sorting) 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // across different VMs 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class FieldOrder implements Serializable { 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String aaa1NonPrimitive = "aaa1"; 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int bbb1PrimitiveInt = 5; 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean aaa2PrimitiveBoolean = true; 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String bbb2NonPrimitive = "bbb2"; 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests what happens if you define just readObject, but not 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // writeObject. 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Does it run or not ? 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class JustReadObject implements java.io.Serializable { 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledReadObject = false; 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public JustReadObject() { 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void readObject(java.io.ObjectInputStream in) 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledReadObject = true; 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.defaultReadObject(); 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests what happens if you define just writeObject, but not 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // readObject. 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Does it run or not ? 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class JustWriteObject implements java.io.Serializable { 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledWriteObject = false; 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public JustWriteObject() { 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writeObject(java.io.ObjectOutputStream out) 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledWriteObject = true; 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes out.defaultWriteObject(); 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests class-based replacement when dumping 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class ClassBasedReplacementWhenDumping implements 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean calledReplacement = false; 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ClassBasedReplacementWhenDumping() { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object writeReplace() { 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calledReplacement = true; 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return FOO; // Replacement is a String 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests whether class-based replacement supports multiple levels. 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // MultipleClassBasedReplacementWhenDumping -> C1 -> C2 -> C3 -> FOO 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MultipleClassBasedReplacementWhenDumping implements 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class C1 implements java.io.Serializable { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object writeReplace() { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new C2(); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class C2 implements java.io.Serializable { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object writeReplace() { 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new C3(); 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class C3 implements java.io.Serializable { 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object writeReplace() { 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return FOO; 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MultipleClassBasedReplacementWhenDumping() { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object writeReplace() { 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new C1(); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests class-based replacement when loading 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class ClassBasedReplacementWhenLoading implements 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ClassBasedReplacementWhenLoading() { 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object readResolve() { 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return FOO; // Replacement is a String 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This one tests what happens if a loading-replacement is not 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // type-compatible with the original object 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class ClassBasedReplacementWhenLoadingViolatesFieldType 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes implements java.io.Serializable { 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ClassBasedReplacementWhenLoading classBasedReplacementWhenLoading = new ClassBasedReplacementWhenLoading(); 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public ClassBasedReplacementWhenLoadingViolatesFieldType() { 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What happens if dumping causes an error and you try to reload ? 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Should the load throw the same exception ? 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyExceptionWhenDumping1 implements 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyException extends java.io.IOException { 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // A primitive instance variable exposes a bug in the serialization 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // spec. 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Primitive instance variables are written without primitive data tags 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // and so are read without checking for tags. If an exception is 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // written, reading primitive data will just read bytes from the stream 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // which may be tags 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean anInstanceVar = false; 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MyExceptionWhenDumping1() { 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void readObject(java.io.ObjectInputStream in) 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.defaultReadObject(); 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writeObject(java.io.ObjectOutputStream out) 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new MyException(); 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What happens if dumping causes an error and you try to reload ? 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Should the load throw the same exception ? 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyExceptionWhenDumping2 implements 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyException extends java.io.IOException { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Integer anInstanceVar = new Integer(0xA1); 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MyExceptionWhenDumping2() { 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void readObject(java.io.ObjectInputStream in) 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.defaultReadObject(); 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writeObject(java.io.ObjectOutputStream out) 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new MyException(); 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What happens if dumping causes an error (NonSerializable inst var) and 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // you try to reload ? 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Should the load throw the same exception ? 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class NonSerializableExceptionWhenDumping implements 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Object anInstanceVar = new Object(); 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public NonSerializableExceptionWhenDumping() { 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // What happens if dumping causes an error (which is not serializable) and 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // you try to reload ? 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Should the load throw the same exception ? 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyUnserializableExceptionWhenDumping implements 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.Serializable { 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static class MyException extends java.io.IOException { 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Object notSerializable = new Object(); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public boolean anInstanceVar = false; 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public MyUnserializableExceptionWhenDumping() { 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(); 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void readObject(java.io.ObjectInputStream in) 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes in.defaultReadObject(); 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private void writeObject(java.io.ObjectOutputStream out) 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws java.io.IOException, ClassNotFoundException { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new MyException(); 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public SerializationStressTest1(String name) { 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_1_writeObject() { 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = "HelloWorld"; 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, (((String) objLoaded) 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals((String) objToSave))); 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type: " 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_2_writeObject() { 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = null; 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave); 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_3_writeObject() { 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] bytes = { 0, 1, 2, 3 }; 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = bytes; 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte[]) objLoaded, (byte[]) objToSave)); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_4_writeObject() { 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int[] ints = { 0, 1, 2, 3 }; 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ints; 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (int[]) objLoaded, (int[]) objToSave)); 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_5_writeObject() { 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes short[] shorts = { 0, 1, 2, 3 }; 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = shorts; 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (short[]) objLoaded, (short[]) objToSave)); 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_6_writeObject() { 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long[] longs = { 0, 1, 2, 3 }; 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = longs; 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (long[]) objLoaded, (long[]) objToSave)); 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_7_writeObject() { 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes float[] floats = { 0.0f, 1.1f, 2.2f, 3.3f }; 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = floats; 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (float[]) objLoaded, (float[]) objToSave)); 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data: " + e.getMessage()); 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_8_writeObject() { 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes double[] doubles = { 0.0, 1.1, 2.2, 3.3 }; 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = doubles; 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (double[]) objLoaded, (double[]) objToSave)); 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_9_writeObject() { 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean[] booleans = { true, false, false, true }; 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = booleans; 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (boolean[]) objLoaded, (boolean[]) objToSave)); 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " + e.getMessage()); 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_10_writeObject() { 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] strings = { "foo", "bar", "java" }; 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = strings; 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, Arrays.equals( 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (Object[]) objLoaded, (Object[]) objToSave)); 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unable to read Object type: " + e.toString()); 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_11_writeObject() { 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = new Object(); // Not serializable 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean passed = false; 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Throwable t = null; 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NotSerializableException ns) { 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes passed = true; 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t = ns; 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Exception wrongExc) { 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes passed = false; 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t = wrongExc; 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Failed to throw NotSerializableException when serializing " 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + objToSave + " Threw(if non-null) this: " + t, 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes passed); 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_12_writeObject() { 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = <mixed>"); 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes t_MixPrimitivesAndObjects(); 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing data : " + e.getMessage()); 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when dumping mixed types"); 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_13_writeObject() { 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTestSubclass1 st = new SerializationTestSubclass1(); 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Just change the default ivar values 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes st.anInt = Integer.MAX_VALUE; 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes st.aString = FOO; 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = st; 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // non-serializable inst var has to be initialized from top 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // constructor 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MSG_TEST_FAILED + objToSave, 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((SerializationTestSubclass1) objLoaded).anInt == Integer.MAX_VALUE); 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // but serialized var has to be restored as it was in the object 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // when dumped 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((SerializationTestSubclass1) objLoaded).aString 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(FOO)); 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes err.printStackTrace(); 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_14_writeObject() { 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SpecTest specTest = new SpecTest(); 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Just change the default ivar values 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes specTest.instVar = FOO; 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes specTest.instVar1 = specTest.instVar; 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = specTest; 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // non-serializable inst var has to be initialized from top 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // constructor 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(MSG_TEST_FAILED + objToSave, 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((SpecTest) objLoaded).instVar); 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // instVar from non-serialized class, cant be saved/restored 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // by serialization but serialized ivar has to be restored as it 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // was in the object when dumped 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((SpecTest) objLoaded).instVar1.equals(FOO)); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_15_writeObject() { 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SpecTestSubclass specTestSubclass = new SpecTestSubclass(); 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Just change the default ivar values 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes specTestSubclass.transientInstVar = FOO; 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = specTestSubclass; 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // non-serializable inst var cant be saved, and it is not init'ed 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // from top constructor in this case 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(MSG_TEST_FAILED + objToSave, 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((SpecTestSubclass) objLoaded).transientInstVar); 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // transient slot, cant be saved/restored by serialization 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_16_writeObject() { 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] strings = new String[2]; 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes strings[0] = FOO; 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes strings[1] = (" " + FOO + " ").trim(); // Safe way to get a copy 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // that is not == 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = strings; 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String[] stringsLoaded = (String[]) objLoaded; 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Serialization has to use identity-based table for assigning IDs 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !(stringsLoaded[0] == stringsLoaded[1])); 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_17_writeObject() { 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ReadWriteObject readWrite = new ReadWriteObject(); 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = readWrite; 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // has to have called the writeObject on the instance to dump 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, readWrite.calledWriteObject); 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // has to have called the readObject on the instance loaded 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ((ReadWriteObject) objLoaded).calledReadObject); 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_18_writeObject() { 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PublicReadWriteObject publicReadWrite = new PublicReadWriteObject(); 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = publicReadWrite; 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Can't have called the writeObject on the instance to dump 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !publicReadWrite.calledWriteObject); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Can't have called the readObject on the instance loaded 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !((PublicReadWriteObject) objLoaded).calledReadObject); 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Exception serializing " + objToSave + "\t->" 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_19_writeObject() { 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes FieldOrder fieldOrder = new FieldOrder(); 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = fieldOrder; 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This test is only useful for X-loading, so if it managed to 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // dump&load, we passed the test 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_20_writeObject() { 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = Class.forName("java.lang.Integer"); 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Classes with the same name are unique, so test for == 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave); 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_21_writeObject() { 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Even though instances of java.lang.Object are not Serializable, 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // instances of java.lang.Class are. So, the object 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.lang.Object.class 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // should be serializable 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = Class.forName("java.lang.Object"); 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Classes with the same name are unique, so test for == 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave); 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_22_writeObject() { 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.net.URL url = new java.net.URL("http://localhost/a.txt"); 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = url; 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("URLs are not the same: " + url + "\t,\t" + objLoaded, 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes url.equals(objLoaded)); 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_23_writeObject() { 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JustReadObject justReadObject = new JustReadObject(); 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = justReadObject; 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Only calls readObject on the instance loaded if writeObject was 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // also defined 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Called readObject on an object without a writeObject", 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes !((JustReadObject) objLoaded).calledReadObject); 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_24_writeObject() { 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes JustWriteObject justWriteObject = new JustWriteObject(); 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = justWriteObject; 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Call writeObject on the instance even if it does not define 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // readObject 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes justWriteObject.calledWriteObject); 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type: " 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_25_writeObject() { 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Vector<String> vector = new Vector<String>(1); 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes vector.add(FOO); 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = vector; 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have the string there 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, FOO 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals(((java.util.Vector) objLoaded).elementAt(0))); 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_26_writeObject() { 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Hashtable<String, String> hashTable = new Hashtable<String, String>( 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 5); 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes hashTable.put(FOO, FOO); 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = hashTable; 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.util.Hashtable loadedHashTable = (java.util.Hashtable) objLoaded; 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have the key/value there (FOO -> FOO) 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, FOO.equals(loadedHashTable 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .get(FOO))); 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_27_writeObject() { 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ClassBasedReplacementWhenDumping classBasedReplacementWhenDumping = new ClassBasedReplacementWhenDumping(); 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = classBasedReplacementWhenDumping; 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have run the replacement method 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Did not run writeReplace", 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes classBasedReplacementWhenDumping.calledReplacement); 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have loaded a String (replacement object) 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Did not replace properly", FOO.equals(objLoaded)); 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_28_writeObject() { 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MultipleClassBasedReplacementWhenDumping multipleClassBasedReplacementWhenDumping = new MultipleClassBasedReplacementWhenDumping(); 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = multipleClassBasedReplacementWhenDumping; 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have loaded a String (replacement object) 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Executed multiple levels of replacement (see PR 1F9RNT1), loaded= " 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + objLoaded, 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded instanceof MultipleClassBasedReplacementWhenDumping.C1); 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.toString()); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_29_writeObject() { 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ClassBasedReplacementWhenLoading classBasedReplacementWhenLoading = new ClassBasedReplacementWhenLoading(); 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = classBasedReplacementWhenLoading; 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to have loaded a String (replacement object) 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Did not run readResolve", FOO.equals(objLoaded)); 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_30_writeObject() { 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ClassBasedReplacementWhenLoadingViolatesFieldType classBasedReplacementWhenLoadingViolatesFieldType = new ClassBasedReplacementWhenLoadingViolatesFieldType(); 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = classBasedReplacementWhenLoadingViolatesFieldType; 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // We cannot gere here, the load replacement must have caused a 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // field type violation 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail( 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Loading replacements can cause field type violation in this implementation"); 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Loading replacements can NOT cause field type violation in this implementation", 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes true); 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_31_writeObject() { 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MyExceptionWhenDumping1 exceptionWhenDumping = new MyExceptionWhenDumping1(); 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = exceptionWhenDumping; 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean causedException = false; 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes dump(objToSave); 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MyExceptionWhenDumping1.MyException e) { 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have caused an exception when dumping", 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = false; 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = reload(); 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Although the spec says we should get a WriteAbortedException, 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the serialization format handle an Exception when reading 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // primitive data so we get ClassCastException instead 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have caused a ClassCastException when loading", 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_32_writeObject() { 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MyExceptionWhenDumping2 exceptionWhenDumping = new MyExceptionWhenDumping2(); 1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = exceptionWhenDumping; 1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean causedException = false; 1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes dump(objToSave); 1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (MyExceptionWhenDumping2.MyException e) { 1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have caused an exception when dumping", 1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = false; 1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = reload(); 1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.io.WriteAbortedException e) { 1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Should have caused a java.io.WriteAbortedException when loading", 1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassCastException e) { 1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassCastException : " + e.getMessage()); 1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_NonSerializableExceptionWhenDumping() { 1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes NonSerializableExceptionWhenDumping nonSerializableExceptionWhenDumping = new NonSerializableExceptionWhenDumping(); 1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = nonSerializableExceptionWhenDumping; 1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean causedException = false; 1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes dump(objToSave); 1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.io.NotSerializableException e) { 1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have caused an exception when dumping", 1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = false; 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = reload(); 1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.io.WriteAbortedException e) { 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Should have caused a java.io.WriteAbortedException when loading", 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_33_writeObject() { 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes MyUnserializableExceptionWhenDumping exceptionWhenDumping = new MyUnserializableExceptionWhenDumping(); 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = exceptionWhenDumping; 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean causedException = false; 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes dump(objToSave); 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.io.StreamCorruptedException e) { 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException = true; 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ; 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Should have caused an exception when dumping", 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes causedException); 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // As the stream is corrupted, reading the stream will have 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // undefined results 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_34_writeObject() { 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ioe = new java.io.IOException(); 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ioe; 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_35_writeObject() { 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = Class.forName("java.util.Hashtable"); 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Classes with the same name are unique, so test for == 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, objLoaded == objToSave); 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_36_writeObject() { 1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ex = new java.io.InvalidClassException(FOO); 1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ex; 1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_37_writeObject() { 1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ex = new java.io.InvalidObjectException(FOO); 1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ex; 1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_38_writeObject() { 1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ex = new java.io.NotActiveException(FOO); 1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ex; 1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_39_writeObject() { 1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ex = new java.io.NotSerializableException(FOO); 1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ex; 1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_18_40_writeObject() { 1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method void 1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectOutputStream.writeObject(java.lang.Object) 1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objToSave = null; 1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Object objLoaded; 1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes java.io.IOException ex = new java.io.StreamCorruptedException(FOO); 1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objToSave = ex; 1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (DEBUG) 1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Obj = " + objToSave); 1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes objLoaded = dumpAndReload(objToSave); 1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Has to be able to save/load an exception 1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(MSG_TEST_FAILED + objToSave, true); 1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("IOException serializing " + objToSave + " : " 1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("ClassNotFoundException reading Object type : " 1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + e.getMessage()); 1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (Error err) { 1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes System.out.println("Error when obj = " + objToSave); 1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // err.printStackTrace(); 1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw err; 1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1651