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 Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.io; 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.File; 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Externalizable; 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectInput; 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectOutput; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectStreamClass; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ObjectStreamField; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 28747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughesimport java.net.URL; 29747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughesimport java.net.URLClassLoader; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.lang.reflect.Proxy; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class ObjectStreamClassTest extends TestCase { 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class DummyClass implements Serializable { 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final long serialVersionUID = 999999999999999L; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes long bam = 999L; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes int ham = 9999; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static long getUID() { 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return serialVersionUID; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 47747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#forClass() 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_forClass() { 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Need to test during serialization to be sure an instance is 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // returned 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("forClass returned an object: " + osc.forClass(), 56747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes DummyClass.class, osc.forClass()); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#getField(java.lang.String) 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFieldLjava_lang_String() { 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("getField did not return correct field", 'J', osc 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getField("bam").getTypeCode()); 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull("getField did not null for non-existent field", osc 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getField("wham")); 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#getFields() 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getFields() { 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamField[] osfArray = osc.getFields(); 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue( 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "Array of fields should be of length 2 but is instead of length: " 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + osfArray.length, osfArray.length == 2); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#getName() 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getName() { 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "getName returned incorrect name: " + osc.getName(), 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "org.apache.harmony.luni.tests.java.io.ObjectStreamClassTest$DummyClass", 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc.getName()); 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#getSerialVersionUID() 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSerialVersionUID() { 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("getSerialversionUID returned incorrect uid: " 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + osc.getSerialVersionUID() + " instead of " 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + DummyClass.getUID(), osc.getSerialVersionUID() == DummyClass 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getUID()); 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class SyntheticTest implements Serializable { 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private int i; 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private class X implements Serializable { 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public int get() { 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return i; 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public X foo() { 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new X(); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSerialVersionUID_inner_private_class() { 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc1 = ObjectStreamClass.lookup(SyntheticTest.class); 119747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes assertEquals(-4332969662791850406L, osc1.getSerialVersionUID()); 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 121747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes ObjectStreamClass osc2 = ObjectStreamClass.lookup(SyntheticTest.X.class); 122747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes assertEquals(-3926212872029449440L, osc2.getSerialVersionUID()); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#getSerialVersionUID() 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_getSerialVersionUID_classloader() throws Exception { 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes File file = new File( 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "resources/org/apache/harmony/luni/tests/ObjectStreamClassTest.jar"); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ClassLoader loader = new URLClassLoader(new URL[] { file.toURL() }, 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes null); 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class cl1 = Class.forName("Test1$TestVarArgs", false, loader); 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc1 = ObjectStreamClass.lookup(cl1); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Test1$TestVarArgs unexpected UID: " 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + osc1.getSerialVersionUID(), -6051121963037986215L, osc1 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSerialVersionUID()); 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class cl2 = Class.forName("Test1$TestBridge", false, loader); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc2 = ObjectStreamClass.lookup(cl2); 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Test1$TestBridge unexpected UID: " 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + osc2.getSerialVersionUID(), 568585976855071180L, osc2 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getSerialVersionUID()); 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#lookup(java.lang.Class) 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_lookupLjava_lang_Class() { 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals( 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "lookup returned wrong class: " + osc.getName(), 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "org.apache.harmony.luni.tests.java.io.ObjectStreamClassTest$DummyClass", 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc.getName()); 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#toString() 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_toString() { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookup(DummyClass.class); 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes String oscString = osc.toString(); 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The previous test was more specific than the spec so it was replaced 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // with the test below 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("toString returned incorrect string: " + osc.toString(), 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes oscString.indexOf("serialVersionUID") >= 0 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes && oscString.indexOf("999999999999999L") >= 0); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testSerialization() { 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .lookup(ObjectStreamClass.class); 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals(0, osc.getFields().length); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_specialTypes() { 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Class<?> proxyClass = Proxy.getProxyClass(this.getClass() 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getClassLoader(), new Class[] { Runnable.class }); 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass proxyStreamClass = ObjectStreamClass 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .lookup(proxyClass); 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Proxy classes should have zero serialVersionUID", 0, 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyStreamClass.getSerialVersionUID()); 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamField[] proxyFields = proxyStreamClass.getFields(); 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Proxy classes should have no serialized fields", 0, 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes proxyFields.length); 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass enumStreamClass = ObjectStreamClass 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .lookup(Thread.State.class); 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Enum classes should have zero serialVersionUID", 0, 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumStreamClass.getSerialVersionUID()); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamField[] enumFields = enumStreamClass.getFields(); 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("Enum classes should have no serialized fields", 0, 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enumFields.length); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 201747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes * @since 1.6 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class NonSerialzableClass { 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final long serialVersionUID = 1l; 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static long getUID() { 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return serialVersionUID; 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 209747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes static class ExternalizableClass implements Externalizable { 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final long serialVersionUID = -4285635779249689129L; 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void readExternal(ObjectInput input) throws IOException, ClassNotFoundException { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new ClassNotFoundException(); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void writeExternal(ObjectOutput output) throws IOException { 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new IOException(); 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 224747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 226747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests java.io.ObjectStreamClass#lookupAny(java.lang.Class) 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @since 1.6 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void test_lookupAnyLjava_lang_Class() { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test for method java.io.ObjectStreamClass 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // java.io.ObjectStreamClass.lookupAny(java.lang.Class) 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ObjectStreamClass osc = ObjectStreamClass.lookupAny(DummyClass.class); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("lookup returned wrong class: " + osc.getName(), 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "org.apache.harmony.luni.tests.java.io.ObjectStreamClassTest$DummyClass", osc 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getName()); 238747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc = ObjectStreamClass.lookupAny(NonSerialzableClass.class); 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("lookup returned wrong class: " + osc.getName(), 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "org.apache.harmony.luni.tests.java.io.ObjectStreamClassTest$NonSerialzableClass", 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc.getName()); 243747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 244747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes osc = ObjectStreamClass.lookupAny(ExternalizableClass.class); 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("lookup returned wrong class: " + osc.getName(), 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "org.apache.harmony.luni.tests.java.io.ObjectStreamClassTest$ExternalizableClass", 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc.getName()); 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes osc = ObjectStreamClass.lookup(NonSerialzableClass.class); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(osc); 251747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 254747d4cd5e39da3be38ec1d2da9fb7403006ed7c4Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 256