[Ikvm-commit] ikvm/openjdk/java/io FileDescriptor.java, 1.19, 1.20 FileInputStream.java, 1.5, 1.6 F
Brought to you by:
jfrijters
From: Jeroen F. <jfr...@us...> - 2011-07-01 06:01:20
|
Update of /cvsroot/ikvm/ikvm/openjdk/java/io In directory vz-cvs-4.sog:/tmp/cvs-serv21821/java/io Modified Files: FileDescriptor.java FileInputStream.java FileOutputStream.java ObjectStreamClass.java ObjectStreamField.java Log Message: Updated forked java.io classes (except FilePermission) to OpenJDK 7. Index: FileInputStream.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/io/FileInputStream.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** FileInputStream.java 24 Jan 2011 16:40:22 -0000 1.5 --- FileInputStream.java 1 Jul 2011 06:01:17 -0000 1.6 *************** *** 1,4 **** /* ! * Copyright (c) 1994, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * --- 1,4 ---- /* ! * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * *************** *** 43,46 **** --- 43,47 ---- * @see java.io.FileDescriptor * @see java.io.FileOutputStream + * @see java.nio.file.Files#newInputStream * @since JDK1.0 */ *************** *** 49,61 **** { /* File Descriptor - handle to the open file */ ! private FileDescriptor fd; private FileChannel channel = null; ! private Object closeLock = new Object(); private volatile boolean closed = false; ! private static ThreadLocal<Boolean> runningFinalize = ! new ThreadLocal<Boolean>(); private static boolean isRunningFinalize() { --- 50,62 ---- { /* File Descriptor - handle to the open file */ ! private final FileDescriptor fd; private FileChannel channel = null; ! private final Object closeLock = new Object(); private volatile boolean closed = false; ! private static final ThreadLocal<Boolean> runningFinalize = ! new ThreadLocal<>(); private static boolean isRunningFinalize() { *************** *** 150,153 **** --- 151,159 ---- * If <code>fdObj</code> is null then a <code>NullPointerException</code> * is thrown. + * <p> + * This constructor does not throw an exception if <code>fdObj</code> + * is {@link java.io.FileDescriptor#valid() invalid}. + * However, if the methods are invoked on the resulting stream to attempt + * I/O on the stream, an <code>IOException</code> is thrown. * * @param fdObj the file descriptor to be opened for reading. *************** *** 397,401 **** */ protected void finalize() throws IOException { ! if ((fd != null) && (fd != fd.in)) { /* --- 403,407 ---- */ protected void finalize() throws IOException { ! if ((fd != null) && (fd != FileDescriptor.in)) { /* Index: ObjectStreamField.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/io/ObjectStreamField.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ObjectStreamField.java 24 Jan 2011 16:40:22 -0000 1.3 --- ObjectStreamField.java 1 Jul 2011 06:01:17 -0000 1.4 *************** *** 46,50 **** private String signature; /** field type (Object.class if unknown non-primitive type) */ ! private final Class type; /** whether or not to (de)serialize field values as unshared */ private final boolean unshared; --- 46,50 ---- private String signature; /** field type (Object.class if unknown non-primitive type) */ ! private final Class<?> type; /** whether or not to (de)serialize field values as unshared */ private final boolean unshared; *************** *** 95,99 **** private void lazyInitSignature() { if (signature == null) { ! signature = ObjectStreamClass.getClassSignature(type).intern(); } } --- 95,99 ---- private void lazyInitSignature() { if (signature == null) { ! signature = getClassSignature(type).intern(); } } *************** *** 139,145 **** this.unshared = unshared; name = field.getName(); ! Class ftype = field.getType(); type = (showType || ftype.isPrimitive()) ? ftype : Object.class; ! signature = ObjectStreamClass.getClassSignature(ftype).intern(); } --- 139,145 ---- this.unshared = unshared; name = field.getName(); ! Class<?> ftype = field.getType(); type = (showType || ftype.isPrimitive()) ? ftype : Object.class; ! signature = getClassSignature(ftype).intern(); } *************** *** 286,288 **** --- 286,325 ---- return signature; } + + /** + * Returns JVM type signature for given class. + */ + private static String getClassSignature(Class<?> cl) { + StringBuilder sbuf = new StringBuilder(); + while (cl.isArray()) { + sbuf.append('['); + cl = cl.getComponentType(); + } + if (cl.isPrimitive()) { + if (cl == Integer.TYPE) { + sbuf.append('I'); + } else if (cl == Byte.TYPE) { + sbuf.append('B'); + } else if (cl == Long.TYPE) { + sbuf.append('J'); + } else if (cl == Float.TYPE) { + sbuf.append('F'); + } else if (cl == Double.TYPE) { + sbuf.append('D'); + } else if (cl == Short.TYPE) { + sbuf.append('S'); + } else if (cl == Character.TYPE) { + sbuf.append('C'); + } else if (cl == Boolean.TYPE) { + sbuf.append('Z'); + } else if (cl == Void.TYPE) { + sbuf.append('V'); + } else { + throw new InternalError(); + } + } else { + sbuf.append('L' + cl.getName().replace('.', '/') + ';'); + } + return sbuf.toString(); + } } Index: FileOutputStream.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/io/FileOutputStream.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** FileOutputStream.java 24 Jan 2011 16:40:22 -0000 1.5 --- FileOutputStream.java 1 Jul 2011 06:01:17 -0000 1.6 *************** *** 1,4 **** /* ! * Copyright (c) 1994, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * --- 1,4 ---- /* ! * Copyright (c) 1994, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * *************** *** 47,50 **** --- 47,51 ---- * @see java.io.FileDescriptor * @see java.io.FileInputStream + * @see java.nio.file.Files#newOutputStream * @since JDK1.0 */ *************** *** 53,70 **** { /** ! * The system dependent file descriptor. The value is ! * 1 more than actual file descriptor. This means that ! * the default value 0 indicates that the file is not open. */ ! private FileDescriptor fd; ! private FileChannel channel= null; ! private boolean append = false; ! private Object closeLock = new Object(); private volatile boolean closed = false; ! private static ThreadLocal<Boolean> runningFinalize = ! new ThreadLocal<Boolean>(); private static boolean isRunningFinalize() { --- 54,75 ---- { /** ! * The system dependent file descriptor. */ ! private final FileDescriptor fd; ! /** ! * True if the file is opened for append. ! */ ! private final boolean append; ! /** ! * The associated channel, initalized lazily. ! */ ! private FileChannel channel; ! private final Object closeLock = new Object(); private volatile boolean closed = false; ! private static final ThreadLocal<Boolean> runningFinalize = ! new ThreadLocal<>(); private static boolean isRunningFinalize() { *************** *** 76,80 **** /** ! * Creates an output file stream to write to the file with the * specified name. A new <code>FileDescriptor</code> object is * created to represent this file connection. --- 81,85 ---- /** ! * Creates a file output stream to write to the file with the * specified name. A new <code>FileDescriptor</code> object is * created to represent this file connection. *************** *** 101,106 **** /** ! * Creates an output file stream to write to the file with the specified ! * <code>name</code>. If the second argument is <code>true</code>, then * bytes will be written to the end of the file rather than the beginning. * A new <code>FileDescriptor</code> object is created to represent this --- 106,111 ---- /** ! * Creates a file output stream to write to the file with the specified ! * name. If the second argument is <code>true</code>, then * bytes will be written to the end of the file rather than the beginning. * A new <code>FileDescriptor</code> object is created to represent this *************** *** 201,216 **** throw new NullPointerException(); } ! fd = new FileDescriptor(); ! fd.incrementAndGetUseCount(); this.append = append; ! if (append) { ! openAppend(name); ! } else { ! open(name); ! } } /** ! * Creates an output file stream to write to the specified file * descriptor, which represents an existing connection to an actual * file in the file system. --- 206,218 ---- throw new NullPointerException(); } ! this.fd = new FileDescriptor(); this.append = append; ! ! fd.incrementAndGetUseCount(); ! open(name, append); } /** ! * Creates a file output stream to write to the specified file * descriptor, which represents an existing connection to an actual * file in the file system. *************** *** 219,222 **** --- 221,232 ---- * method is called with the file descriptor <code>fdObj</code> * argument as its argument. + * <p> + * If <code>fdObj</code> is null then a <code>NullPointerException</code> + * is thrown. + * <p> + * This constructor does not throw an exception if <code>fdObj</code> + * is {@link java.io.FileDescriptor#valid() invalid}. + * However, if the methods are invoked on the resulting stream to attempt + * I/O on the stream, an <code>IOException</code> is thrown. * * @param fdObj the file descriptor to be opened for writing *************** *** 234,238 **** security.checkWrite(fdObj); } ! fd = fdObj; /* --- 244,249 ---- security.checkWrite(fdObj); } ! this.fd = fdObj; ! this.append = false; /* *************** *** 245,263 **** /** ! * Opens a file, with the specified name, for writing. * @param name name of file to be opened */ ! private void open(String name) throws FileNotFoundException ! { ! fd.openWriteOnly(name); } /** ! * Opens a file, with the specified name, for appending. ! * @param name name of file to be opened */ ! private void openAppend(String name) throws FileNotFoundException ! { ! fd.openAppend(name); } --- 256,281 ---- /** ! * Opens a file, with the specified name, for overwriting or appending. * @param name name of file to be opened + * @param append whether the file is to be opened in append mode */ ! private void open(String name, boolean append) ! throws FileNotFoundException { ! if (append) { ! fd.openAppend(name); ! } else { ! fd.openWriteOnly(name); ! } } /** ! * Writes the specified byte to this file output stream. ! * ! * @param b the byte to be written. ! * @param append {@code true} if the write operation first ! * advances the position to the end of file */ ! private void write(int b, boolean append) throws IOException { ! fd.write(b); } *************** *** 269,275 **** * @exception IOException if an I/O error occurs. */ ! public void write(int b) throws IOException ! { ! fd.write(b); } --- 287,292 ---- * @exception IOException if an I/O error occurs. */ ! public void write(int b) throws IOException { ! write(b, append); } *************** *** 279,286 **** * @param off the start offset in the data * @param len the number of bytes that are written * @exception IOException If an I/O error has occurred. */ ! private void writeBytes(byte b[], int off, int len) throws IOException ! { fd.writeBytes(b, off, len); } --- 296,305 ---- * @param off the start offset in the data * @param len the number of bytes that are written + * @param append {@code true} to first advance the position to the + * end of file * @exception IOException If an I/O error has occurred. */ ! private void writeBytes(byte b[], int off, int len, boolean append) ! throws IOException { fd.writeBytes(b, off, len); } *************** *** 294,298 **** */ public void write(byte b[]) throws IOException { ! writeBytes(b, 0, b.length); } --- 313,317 ---- */ public void write(byte b[]) throws IOException { ! writeBytes(b, 0, b.length, append); } *************** *** 307,311 **** */ public void write(byte b[], int off, int len) throws IOException { ! writeBytes(b, off, len); } --- 326,330 ---- */ public void write(byte b[], int off, int len) throws IOException { ! writeBytes(b, off, len, append); } *************** *** 413,417 **** protected void finalize() throws IOException { if (fd != null) { ! if (fd == fd.out || fd == fd.err) { flush(); } else { --- 432,436 ---- protected void finalize() throws IOException { if (fd != null) { ! if (fd == FileDescriptor.out || fd == FileDescriptor.err) { flush(); } else { Index: FileDescriptor.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/io/FileDescriptor.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** FileDescriptor.java 24 Jan 2011 16:40:22 -0000 1.19 --- FileDescriptor.java 1 Jul 2011 06:01:17 -0000 1.20 *************** *** 1,4 **** /* ! * Copyright (c) 2003, 2007, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * --- 1,4 ---- /* ! * Copyright (c) 2003, 2008, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * *************** *** 36,50 **** /** * Instances of the file descriptor class serve as an opaque handle ! * to the underlying machine-specific structure representing an open ! * file, an open socket, or another source or sink of bytes. The ! * main practical use for a file descriptor is to create a ! * <code>FileInputStream</code> or <code>FileOutputStream</code> to ! * contain it. ! * <p> ! * Applications should not create their own file descriptors. * * @author Pavani Diwanji - * @see java.io.FileInputStream - * @see java.io.FileOutputStream * @since JDK1.0 */ --- 36,47 ---- /** * Instances of the file descriptor class serve as an opaque handle ! * to the underlying machine-specific structure representing an ! * open file, an open socket, or another source or sink of bytes. ! * The main practical use for a file descriptor is to create a ! * {@link FileInputStream} or {@link FileOutputStream} to contain it. ! * ! * <p>Applications should not create their own file descriptors. * * @author Pavani Diwanji * @since JDK1.0 */ *************** *** 139,143 **** * A handle to the standard input stream. Usually, this file * descriptor is not used directly, but rather via the input stream ! * known as <code>System.in</code>. * * @see java.lang.System#in --- 136,140 ---- * A handle to the standard input stream. Usually, this file * descriptor is not used directly, but rather via the input stream ! * known as {@code System.in}. * * @see java.lang.System#in *************** *** 148,152 **** * A handle to the standard output stream. Usually, this file * descriptor is not used directly, but rather via the output stream ! * known as <code>System.out</code>. * @see java.lang.System#out */ --- 145,149 ---- * A handle to the standard output stream. Usually, this file * descriptor is not used directly, but rather via the output stream ! * known as {@code System.out}. * @see java.lang.System#out */ *************** *** 156,160 **** * A handle to the standard error stream. Usually, this file * descriptor is not used directly, but rather via the output stream ! * known as <code>System.err</code>. * * @see java.lang.System#err --- 153,157 ---- * A handle to the standard error stream. Usually, this file * descriptor is not used directly, but rather via the output stream ! * known as {@code System.err}. * * @see java.lang.System#err *************** *** 165,171 **** * Tests if this file descriptor object is valid. * ! * @return <code>true</code> if the file descriptor object represents a * valid, open file, socket, or other active I/O connection; ! * <code>false</code> otherwise. */ public boolean valid() { --- 162,168 ---- * Tests if this file descriptor object is valid. * ! * @return {@code true} if the file descriptor object represents a * valid, open file, socket, or other active I/O connection; ! * {@code false} otherwise. */ public boolean valid() { Index: ObjectStreamClass.java =================================================================== RCS file: /cvsroot/ikvm/ikvm/openjdk/java/io/ObjectStreamClass.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ObjectStreamClass.java 24 Jan 2011 16:40:22 -0000 1.6 --- ObjectStreamClass.java 1 Jul 2011 06:01:17 -0000 1.7 *************** *** 1,4 **** /* ! * Copyright (c) 1996, 2010, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * --- 1,4 ---- /* ! * Copyright (c) 1996, 2011, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * *************** *** 79,83 **** /** reflection factory for obtaining serialization constructors */ ! private static final ReflectionFactory reflFactory = (ReflectionFactory) AccessController.doPrivileged( new ReflectionFactory.GetReflectionFactoryAction()); --- 79,83 ---- /** reflection factory for obtaining serialization constructors */ ! private static final ReflectionFactory reflFactory = AccessController.doPrivileged( new ReflectionFactory.GetReflectionFactoryAction()); *************** *** 86,105 **** /** cache mapping local classes -> descriptors */ static final ConcurrentMap<WeakClassKey,Reference<?>> localDescs = ! new ConcurrentHashMap<WeakClassKey,Reference<?>>(); /** cache mapping field group/local desc pairs -> field reflectors */ static final ConcurrentMap<FieldReflectorKey,Reference<?>> reflectors = ! new ConcurrentHashMap<FieldReflectorKey,Reference<?>>(); /** queue for WeakReferences to local classes */ private static final ReferenceQueue<Class<?>> localDescsQueue = ! new ReferenceQueue<Class<?>>(); /** queue for WeakReferences to field reflectors keys */ private static final ReferenceQueue<Class<?>> reflectorsQueue = ! new ReferenceQueue<Class<?>>(); } /** class associated with this descriptor (if any) */ ! private Class cl; /** name of class represented by this descriptor */ private String name; --- 86,105 ---- /** cache mapping local classes -> descriptors */ static final ConcurrentMap<WeakClassKey,Reference<?>> localDescs = ! new ConcurrentHashMap<>(); /** cache mapping field group/local desc pairs -> field reflectors */ static final ConcurrentMap<FieldReflectorKey,Reference<?>> reflectors = ! new ConcurrentHashMap<>(); /** queue for WeakReferences to local classes */ private static final ReferenceQueue<Class<?>> localDescsQueue = ! new ReferenceQueue<>(); /** queue for WeakReferences to field reflectors keys */ private static final ReferenceQueue<Class<?>> reflectorsQueue = ! new ReferenceQueue<>(); } /** class associated with this descriptor (if any) */ ! private Class<?> cl; /** name of class represented by this descriptor */ private String name; *************** *** 221,228 **** // REMIND: synchronize instead of relying on volatile? if (suid == null) { ! suid = (Long) AccessController.doPrivileged( ! new PrivilegedAction() { ! public Object run() { ! return Long.valueOf(computeDefaultSUID(cl)); } } --- 221,228 ---- // REMIND: synchronize instead of relying on volatile? if (suid == null) { ! suid = AccessController.doPrivileged( ! new PrivilegedAction<Long>() { ! public Long run() { ! return computeDefaultSUID(cl); } } *************** *** 281,285 **** * return descriptors for serializable classes */ ! static ObjectStreamClass lookup(Class cl, boolean all) { if (!(all || Serializable.class.isAssignableFrom(cl))) { return null; --- 281,285 ---- * return descriptors for serializable classes */ ! static ObjectStreamClass lookup(Class<?> cl, boolean all) { if (!(all || Serializable.class.isAssignableFrom(cl))) { return null; *************** *** 295,299 **** if (entry == null) { EntryFuture newEntry = new EntryFuture(); ! Reference<?> newRef = new SoftReference<EntryFuture>(newEntry); do { if (ref != null) { --- 295,299 ---- if (entry == null) { EntryFuture newEntry = new EntryFuture(); ! Reference<?> newRef = new SoftReference<>(newEntry); do { if (ref != null) { *************** *** 397,402 **** if (interrupted) { AccessController.doPrivileged( ! new PrivilegedAction() { ! public Object run() { Thread.currentThread().interrupt(); return null; --- 397,402 ---- if (interrupted) { AccessController.doPrivileged( ! new PrivilegedAction<Void>() { ! public Void run() { Thread.currentThread().interrupt(); return null; *************** *** 419,423 **** * Creates local class descriptor representing given class. */ ! private ObjectStreamClass(final Class cl) { this.cl = cl; name = cl.getName(); --- 419,423 ---- * Creates local class descriptor representing given class. */ ! private ObjectStreamClass(final Class<?> cl) { this.cl = cl; name = cl.getName(); *************** *** 428,438 **** dynamicClass = isDynamicTypeWrapper(cl); ! Class superCl = cl.getSuperclass(); superDesc = (superCl != null) ? lookup(superCl, false) : null; localDesc = this; if (serializable) { ! AccessController.doPrivileged(new PrivilegedAction() { ! public Object run() { if (isEnum) { suid = Long.valueOf(0); --- 428,438 ---- dynamicClass = isDynamicTypeWrapper(cl); ! Class<?> superCl = cl.getSuperclass(); superDesc = (superCl != null) ? lookup(superCl, false) : null; localDesc = this; if (serializable) { ! AccessController.doPrivileged(new PrivilegedAction<Void>() { ! public Void run() { if (isEnum) { suid = Long.valueOf(0); *************** *** 459,466 **** cons = getSerializableConstructor(cl); writeObjectMethod = getPrivateMethod(cl, "writeObject", ! new Class[] { ObjectOutputStream.class }, Void.TYPE); readObjectMethod = getPrivateMethod(cl, "readObject", ! new Class[] { ObjectInputStream.class }, Void.TYPE); readObjectNoDataMethod = getPrivateMethod( --- 459,466 ---- cons = getSerializableConstructor(cl); writeObjectMethod = getPrivateMethod(cl, "writeObject", ! new Class<?>[] { ObjectOutputStream.class }, Void.TYPE); readObjectMethod = getPrivateMethod(cl, "readObject", ! new Class<?>[] { ObjectInputStream.class }, Void.TYPE); readObjectNoDataMethod = getPrivateMethod( *************** *** 513,517 **** * Initializes class descriptor representing a proxy class. */ ! void initProxy(Class cl, ClassNotFoundException resolveEx, ObjectStreamClass superDesc) --- 513,517 ---- * Initializes class descriptor representing a proxy class. */ ! void initProxy(Class<?> cl, ClassNotFoundException resolveEx, ObjectStreamClass superDesc) *************** *** 546,550 **** */ void initNonProxy(ObjectStreamClass model, ! Class cl, ClassNotFoundException resolveEx, ObjectStreamClass superDesc) --- 546,550 ---- */ void initNonProxy(ObjectStreamClass model, ! Class<?> cl, ClassNotFoundException resolveEx, ObjectStreamClass superDesc) *************** *** 808,812 **** * types only. Returns matching field, or null if no match found. */ ! ObjectStreamField getField(String name, Class type) { for (int i = 0; i < fields.length; i++) { ObjectStreamField f = fields[i]; --- 808,812 ---- * types only. Returns matching field, or null if no match found. */ ! ObjectStreamField getField(String name, Class<?> type) { for (int i = 0; i < fields.length; i++) { ObjectStreamField f = fields[i]; *************** *** 817,821 **** return f; } ! Class ftype = f.getType(); if (ftype != null && type.isAssignableFrom(ftype)) { return f; --- 817,821 ---- return f; } ! Class<?> ftype = f.getType(); if (ftype != null && type.isAssignableFrom(ftype)) { return f; *************** *** 1136,1141 **** throws InvalidClassException { ! ArrayList slots = new ArrayList(); ! Class start = cl, end = cl; // locate closest non-serializable superclass --- 1136,1141 ---- throws InvalidClassException { ! ArrayList<ClassDataSlot> slots = new ArrayList<>(); ! Class<?> start = cl, end = cl; // locate closest non-serializable superclass *************** *** 1148,1153 **** // search up inheritance hierarchy for class with matching name String searchName = (d.cl != null) ? d.cl.getName() : d.name; ! Class match = null; ! for (Class c = start; c != end; c = c.getSuperclass()) { if (searchName.equals(c.getName())) { match = c; --- 1148,1153 ---- // search up inheritance hierarchy for class with matching name String searchName = (d.cl != null) ? d.cl.getName() : d.name; ! Class<?> match = null; ! for (Class<?> c = start; c != end; c = c.getSuperclass()) { if (searchName.equals(c.getName())) { match = c; *************** *** 1158,1162 **** // add "no data" slot for each unmatched class below match if (match != null) { ! for (Class c = start; c != match; c = c.getSuperclass()) { slots.add(new ClassDataSlot( ObjectStreamClass.lookup(c, true), false)); --- 1158,1162 ---- // add "no data" slot for each unmatched class below match if (match != null) { ! for (Class<?> c = start; c != match; c = c.getSuperclass()) { slots.add(new ClassDataSlot( ObjectStreamClass.lookup(c, true), false)); *************** *** 1170,1174 **** // add "no data" slot for any leftover unmatched classes ! for (Class c = start; c != end; c = c.getSuperclass()) { slots.add(new ClassDataSlot( ObjectStreamClass.lookup(c, true), false)); --- 1170,1174 ---- // add "no data" slot for any leftover unmatched classes ! for (Class<?> c = start; c != end; c = c.getSuperclass()) { slots.add(new ClassDataSlot( ObjectStreamClass.lookup(c, true), false)); *************** *** 1177,1182 **** // order slots from superclass -> subclass Collections.reverse(slots); ! return (ClassDataSlot[]) ! slots.toArray(new ClassDataSlot[slots.size()]); } --- 1177,1181 ---- // order slots from superclass -> subclass Collections.reverse(slots); ! return slots.toArray(new ClassDataSlot[slots.size()]); } *************** *** 1295,1299 **** * returns variant of this class descriptor bound to given class. */ ! private ObjectStreamClass getVariantFor(Class cl) throws InvalidClassException { --- 1294,1298 ---- * returns variant of this class descriptor bound to given class. */ ! private ObjectStreamClass getVariantFor(Class<?> cl) throws InvalidClassException { *************** *** 1315,1321 **** * the defining class may still be non-public. */ ! private static Constructor getExternalizableConstructor(Class cl) { try { ! Constructor cons = cl.getDeclaredConstructor((Class[]) null); cons.setAccessible(true); return ((cons.getModifiers() & Modifier.PUBLIC) != 0) ? --- 1314,1320 ---- * the defining class may still be non-public. */ ! private static Constructor getExternalizableConstructor(Class<?> cl) { try { ! Constructor cons = cl.getDeclaredConstructor((Class<?>[]) null); cons.setAccessible(true); return ((cons.getModifiers() & Modifier.PUBLIC) != 0) ? *************** *** 1331,1336 **** * returned constructor (if any). */ ! private static Constructor getSerializableConstructor(Class cl) { ! Class initCl = cl; while (Serializable.class.isAssignableFrom(initCl)) { if ((initCl = initCl.getSuperclass()) == null) { --- 1330,1335 ---- * returned constructor (if any). */ ! private static Constructor getSerializableConstructor(Class<?> cl) { ! Class<?> initCl = cl; while (Serializable.class.isAssignableFrom(initCl)) { if ((initCl = initCl.getSuperclass()) == null) { *************** *** 1339,1343 **** } try { ! Constructor cons = initCl.getDeclaredConstructor((Class[]) null); int mods = cons.getModifiers(); if ((mods & Modifier.PRIVATE) != 0 || --- 1338,1342 ---- } try { ! Constructor cons = initCl.getDeclaredConstructor((Class<?>[]) null); int mods = cons.getModifiers(); if ((mods & Modifier.PRIVATE) != 0 || *************** *** 1361,1370 **** * method (if any). */ ! private static Method getInheritableMethod(Class cl, String name, ! Class[] argTypes, ! Class returnType) { Method meth = null; ! Class defCl = cl; while (defCl != null) { try { --- 1360,1369 ---- * method (if any). */ ! private static Method getInheritableMethod(Class<?> cl, String name, ! Class<?>[] argTypes, ! Class<?> returnType) { Method meth = null; ! Class<?> defCl = cl; while (defCl != null) { try { *************** *** 1397,1403 **** * returned method (if any). */ ! private static Method getPrivateMethod(Class cl, String name, ! Class[] argTypes, ! Class returnType) { try { --- 1396,1402 ---- * returned method (if any). */ ! private static Method getPrivateMethod(Class<?> cl, String name, ! Class<?>[] argTypes, ! Class<?> returnType) { try { *************** *** 1417,1421 **** * otherwise. */ ! private static boolean packageEquals(Class cl1, Class cl2) { return (cl1.getClassLoader() == cl2.getClassLoader() && getPackageName(cl1).equals(getPackageName(cl2))); --- 1416,1420 ---- * otherwise. */ ! private static boolean packageEquals(Class<?> cl1, Class<?> cl2) { return (cl1.getClassLoader() == cl2.getClassLoader() && getPackageName(cl1).equals(getPackageName(cl2))); *************** *** 1425,1429 **** * Returns package name of given class. */ ! private static String getPackageName(Class cl) { String s = cl.getName(); int i = s.lastIndexOf('['); --- 1424,1428 ---- * Returns package name of given class. */ ! private static String getPackageName(Class<?> cl) { String s = cl.getName(); int i = s.lastIndexOf('['); *************** *** 1448,1452 **** * Returns JVM type signature for given class. */ ! static String getClassSignature(Class cl) { StringBuilder sbuf = new StringBuilder(); while (cl.isArray()) { --- 1447,1451 ---- * Returns JVM type signature for given class. */ ! private static String getClassSignature(Class<?> cl) { StringBuilder sbuf = new StringBuilder(); while (cl.isArray()) { *************** *** 1485,1490 **** * Returns JVM type signature for given list of parameters and return type. */ ! private static String getMethodSignature(Class[] paramTypes, ! Class retType) { StringBuilder sbuf = new StringBuilder(); --- 1484,1489 ---- * Returns JVM type signature for given list of parameters and return type. */ ! private static String getMethodSignature(Class<?>[] paramTypes, ! Class<?> retType) { StringBuilder sbuf = new StringBuilder(); *************** *** 1522,1526 **** * declared) serializable fields are invalid. */ ! private static ObjectStreamField[] getSerialFields(Class cl) throws InvalidClassException { --- 1521,1525 ---- * declared) serializable fields are invalid. */ ! private static ObjectStreamField[] getSerialFields(Class<?> cl) throws InvalidClassException { *************** *** 1552,1556 **** * invalid--e.g., if multiple fields share the same name. */ ! private static ObjectStreamField[] getDeclaredSerialFields(Class cl) throws InvalidClassException { --- 1551,1555 ---- * invalid--e.g., if multiple fields share the same name. */ ! private static ObjectStreamField[] getDeclaredSerialFields(Class<?> cl) throws InvalidClassException { *************** *** 1573,1577 **** ObjectStreamField[] boundFields = new ObjectStreamField[serialPersistentFields.length]; ! Set fieldNames = new HashSet(serialPersistentFields.length); for (int i = 0; i < serialPersistentFields.length; i++) { --- 1572,1576 ---- ObjectStreamField[] boundFields = new ObjectStreamField[serialPersistentFields.length]; ! Set<String> fieldNames = new HashSet<>(serialPersistentFields.length); for (int i = 0; i < serialPersistentFields.length; i++) { *************** *** 1609,1615 **** * serializable fields exist, NO_FIELDS is returned. */ ! private static ObjectStreamField[] getDefaultSerialFields(Class cl) { Field[] clFields = cl.getDeclaredFields(); ! ArrayList list = new ArrayList(); int mask = Modifier.STATIC | Modifier.TRANSIENT; --- 1608,1614 ---- * serializable fields exist, NO_FIELDS is returned. */ ! private static ObjectStreamField[] getDefaultSerialFields(Class<?> cl) { Field[] clFields = cl.getDeclaredFields(); ! ArrayList<ObjectStreamField> list = new ArrayList<>(); int mask = Modifier.STATIC | Modifier.TRANSIENT; *************** *** 1621,1625 **** int size = list.size(); return (size == 0) ? NO_FIELDS : ! (ObjectStreamField[]) list.toArray(new ObjectStreamField[size]); } --- 1620,1624 ---- int size = list.size(); return (size == 0) ? NO_FIELDS : ! list.toArray(new ObjectStreamField[size]); } *************** *** 1628,1632 **** * null if none. */ ! private static Long getDeclaredSUID(Class cl) { try { Field f = cl.getDeclaredField("serialVersionUID"); --- 1627,1631 ---- * null if none. */ ! private static Long getDeclaredSUID(Class<?> cl) { try { Field f = cl.getDeclaredField("serialVersionUID"); *************** *** 1644,1648 **** * Computes the default serial version UID value for the given class. */ ! private static long computeDefaultSUID(Class cl) { if (!Serializable.class.isAssignableFrom(cl) || Proxy.isProxyClass(cl)) { --- 1643,1647 ---- * Computes the default serial version UID value for the given class. */ ! private static long computeDefaultSUID(Class<?> cl) { if (!Serializable.class.isAssignableFrom(cl) || Proxy.isProxyClass(cl)) { *************** *** 1678,1682 **** * Serializable for array classes. */ ! Class[] interfaces = cl.getInterfaces(); String[] ifaceNames = new String[interfaces.length]; for (int i = 0; i < interfaces.length; i++) { --- 1677,1681 ---- * Serializable for array classes. */ ! Class<?>[] interfaces = cl.getInterfaces(); String[] ifaceNames = new String[interfaces.length]; for (int i = 0; i < interfaces.length; i++) { *************** *** 1694,1702 **** fieldSigs[i] = new MemberSignature(fields[i]); } ! Arrays.sort(fieldSigs, new Comparator() { ! public int compare(Object o1, Object o2) { ! String name1 = ((MemberSignature) o1).name; ! String name2 = ((MemberSignature) o2).name; ! return name1.compareTo(name2); } }); --- 1693,1699 ---- fieldSigs[i] = new MemberSignature(fields[i]); } ! Arrays.sort(fieldSigs, new Comparator<MemberSignature>() { ! public int compare(MemberSignature ms1, MemberSignature ms2) { ! return ms1.name.compareTo(ms2.name); } }); *************** *** 1727,1735 **** consSigs[i] = new MemberSignature(cons[i]); } ! Arrays.sort(consSigs, new Comparator() { ! public int compare(Object o1, Object o2) { ! String sig1 = ((MemberSignature) o1).signature; ! String sig2 = ((MemberSignature) o2).signature; ! return sig1.compareTo(sig2); } }); --- 1724,1730 ---- consSigs[i] = new MemberSignature(cons[i]); } ! Arrays.sort(consSigs, new Comparator<MemberSignature>() { ! public int compare(MemberSignature ms1, MemberSignature ms2) { ! return ms1.signature.compareTo(ms2.signature); } }); *************** *** 1752,1759 **** methSigs[i] = new MemberSignature(methods[i]); } ! Arrays.sort(methSigs, new Comparator() { ! public int compare(Object o1, Object o2) { ! MemberSignature ms1 = (MemberSignature) o1; ! MemberSignature ms2 = (MemberSignature) o2; int comp = ms1.name.compareTo(ms2.name); if (comp == 0) { --- 1747,1752 ---- methSigs[i] = new MemberSignature(methods[i]); } ! Arrays.sort(methSigs, new Comparator<MemberSignature>() { ! public int compare(MemberSignature ms1, MemberSignature ms2) { int comp = ms1.name.compareTo(ms2.name); if (comp == 0) { *************** *** 1797,1801 **** * false otherwise. */ ! private native static boolean hasStaticInitializer(Class cl); /** --- 1790,1794 ---- * false otherwise. */ ! private native static boolean hasStaticInitializer(Class<?> cl); /** *************** *** 1850,1854 **** private final char[] typeCodes; /** field types */ ! private final Class[] types; /** --- 1843,1847 ---- private final char[] typeCodes; /** field types */ ! private final Class<?>[] types; /** *************** *** 1865,1869 **** offsets = new int[nfields]; typeCodes = new char[nfields]; ! ArrayList typeList = new ArrayList(); for (int i = 0; i < nfields; i++) { --- 1858,1862 ---- offsets = new int[nfields]; typeCodes = new char[nfields]; ! ArrayList<Class<?>> typeList = new ArrayList<>(); for (int i = 0; i < nfields; i++) { *************** *** 1879,1883 **** } ! types = (Class[]) typeList.toArray(new Class[typeList.size()]); numPrimFields = nfields - types.length; } --- 1872,1876 ---- } ! types = typeList.toArray(new Class<?>[typeList.size()]); numPrimFields = nfields - types.length; } *************** *** 2084,2088 **** { // class irrelevant if no fields ! Class cl = (localDesc != null && fields.length > 0) ? localDesc.cl : null; processQueue(Caches.reflectorsQueue, Caches.reflectors); --- 2077,2081 ---- { // class irrelevant if no fields ! Class<?> cl = (localDesc != null && fields.length > 0) ? localDesc.cl : null; processQueue(Caches.reflectorsQueue, Caches.reflectors); *************** *** 2097,2101 **** if (entry == null) { EntryFuture newEntry = new EntryFuture(); ! Reference<?> newRef = new SoftReference<EntryFuture>(newEntry); do { if (ref != null) { --- 2090,2094 ---- if (entry == null) { EntryFuture newEntry = new EntryFuture(); ! Reference<?> newRef = new SoftReference<>(newEntry); do { if (ref != null) { *************** *** 2155,2159 **** private final boolean nullClass; ! FieldReflectorKey(Class cl, ObjectStreamField[] fields, ReferenceQueue<Class<?>> queue) { --- 2148,2152 ---- private final boolean nullClass; ! FieldReflectorKey(Class<?> cl, ObjectStreamField[] fields, ReferenceQueue<Class<?>> queue) { |