blob: aa6006d8bff817d1612d28b1ab634371470ed945 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 1998 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/*
25 * @test
26 * @bug 4085756
27 * @summary Ensure readObject() works when InputStream.available() is not implemented.
28 * In JDK 1.1.x, Win32 System Console available() thows IOException
29 * to denote that it is not implemented.
30 */
31
32import java.io.*;
33
34public class NotAvailable {
35 public static void main(String[] args) throws Exception {
36 ByteArrayOutputStream baos;
37 ObjectOutput out;
38 try {
39 // Write class out
40 baos = new ByteArrayOutputStream();
41 out = new ObjectOutputStream(baos);
42 out.writeObject(new Class1(22,33));
43 out.writeObject(new Class1(22,33));
44 out.flush();
45 } catch (IOException e) {
46 e.printStackTrace();
47 throw e;
48 }
49
50 ObjectInputStream in = null;
51 try {
52 // Read it back
53 ByteArrayInputStream bois =
54 new ByteArrayInputStream(baos.toByteArray()) {
55 /* simulate available() not being implemented. */
56 public int available() {
57 throw new Error("available() is not implemented");
58 }
59 };
60 in = new ObjectInputStream(bois);
61 Class1 cc1 = (Class1) in.readObject();
62 Class1 cc2 = (Class1) in.readObject();
63 } catch (IOException e) {
64 e.printStackTrace();
65 throw e;
66 } catch (ClassNotFoundException e) {
67 e.printStackTrace();
68 throw e;
69 } finally {
70 if (in != null)
71 in.close();
72 if (out != null)
73 out.close();
74 }
75 }
76}
77
78class Class1 implements Serializable {
79 int a, b;
80
81 public Class1(int aa, int bb) {
82 a = aa;
83 b = bb;
84 }
85}