diff options
author | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-12-10 20:25:39 +0000 |
---|---|---|
committer | Andrew John Hughes <gnu_andrew@member.fsf.org> | 2006-12-10 20:25:39 +0000 |
commit | da66af5951b18b6f5e8752cbbe11f5f842332a33 (patch) | |
tree | a28e126d1415e3689be6c7b2c2d061ae51194195 /java/io | |
parent | ab90923ee693a17e2e0e37b6ba5a84794c9236de (diff) | |
download | classpath-da66af5951b18b6f5e8752cbbe11f5f842332a33.tar.gz |
2006-12-10 Andrew John Hughes <gnu_andrew@member.fsf.org>
* Merge of generics-branch to HEAD (woohoo!)
Diffstat (limited to 'java/io')
-rw-r--r-- | java/io/CharArrayWriter.java | 6 | ||||
-rw-r--r-- | java/io/DeleteFileHelper.java | 13 | ||||
-rw-r--r-- | java/io/File.java | 28 | ||||
-rw-r--r-- | java/io/ObjectInputStream.java | 32 | ||||
-rw-r--r-- | java/io/ObjectOutputStream.java | 10 | ||||
-rw-r--r-- | java/io/ObjectStreamClass.java | 29 | ||||
-rw-r--r-- | java/io/ObjectStreamField.java | 21 | ||||
-rw-r--r-- | java/io/PrintStream.java | 54 | ||||
-rw-r--r-- | java/io/PrintWriter.java | 52 | ||||
-rw-r--r-- | java/io/RandomAccessFile.java | 2 | ||||
-rw-r--r-- | java/io/Reader.java | 19 | ||||
-rw-r--r-- | java/io/SequenceInputStream.java | 26 | ||||
-rw-r--r-- | java/io/StringWriter.java | 21 | ||||
-rw-r--r-- | java/io/Writer.java | 23 |
14 files changed, 246 insertions, 90 deletions
diff --git a/java/io/CharArrayWriter.java b/java/io/CharArrayWriter.java index 68e693b4a..0eead3ad3 100644 --- a/java/io/CharArrayWriter.java +++ b/java/io/CharArrayWriter.java @@ -267,7 +267,7 @@ public class CharArrayWriter extends Writer * sequence is wrapped around an input buffer, the results will * depend on the current position and length of that buffer. * - * @param cs the character sequence to append. If cs is null, + * @param seq the character sequence to append. If seq is null, * then the string "null" (the string representation of null) * is appended. * @return a reference to this object. @@ -291,10 +291,10 @@ public class CharArrayWriter extends Writer * output stream underlying this writer, starting and ending at the * specified positions within the sequence. The behaviour of this * method matches the behaviour of writing the result of - * <code>append(cs.subSequence(start,end))</code> when the sequence + * <code>append(seq.subSequence(start,end))</code> when the sequence * is not null. * - * @param cs the character sequence to append. If cs is null, + * @param seq the character sequence to append. If seq is null, * then the string "null" (the string representation of null) * is appended. * @param start the index of the first Unicode character to use from diff --git a/java/io/DeleteFileHelper.java b/java/io/DeleteFileHelper.java index d73628c49..6e33adce8 100644 --- a/java/io/DeleteFileHelper.java +++ b/java/io/DeleteFileHelper.java @@ -1,5 +1,5 @@ /* DeleteFileHelper.java -- Helper class to delete files on VM exit - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -40,22 +40,22 @@ package java.io; import java.security.AccessController; import java.security.PrivilegedAction; import java.util.ArrayList; -import java.util.Iterator; /** * @author Guilhem Lavaux (guilhem@kaffe.org) * @author Jeroen Frijters (jeroen@sumatra.nl) * @author Michael Koch (konqueror@gmx.de) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */ final class DeleteFileHelper extends Thread { - private static ArrayList filesToDelete; + private static ArrayList<File> filesToDelete; static synchronized void add(File file) { if (filesToDelete == null) { - filesToDelete = new ArrayList(); + filesToDelete = new ArrayList<File>(); AccessController.doPrivileged(new PrivilegedAction() { @@ -81,13 +81,10 @@ final class DeleteFileHelper extends Thread private static synchronized void deleteFiles() { - Iterator it = filesToDelete.iterator(); - - while (it.hasNext()) + for (File file : filesToDelete) { try { - File file = (File) it.next(); file.delete(); } catch (Exception e) diff --git a/java/io/File.java b/java/io/File.java index 49a0c818c..5d1b3ec85 100644 --- a/java/io/File.java +++ b/java/io/File.java @@ -60,7 +60,7 @@ import java.net.URL; * @author Aaron M. Renn (arenn@urbanophile.com) * @author Tom Tromey (tromey@cygnus.com) */ -public class File implements Serializable, Comparable +public class File implements Serializable, Comparable<File> { private static final long serialVersionUID = 301077366599181567L; @@ -1253,32 +1253,6 @@ public class File implements Serializable, Comparable } /** - * This method compares the specified <code>Object</code> to this one - * to test for equality. It does this by comparing the canonical path names - * of the files. This method is identical to <code>compareTo(File)</code> - * except that if the <code>Object</code> passed to it is not a - * <code>File</code>, it throws a <code>ClassCastException</code> - * <p> - * The canonical paths of the files are determined by calling the - * <code>getCanonicalPath</code> method on each object. - * <p> - * This method returns a 0 if the specified <code>Object</code> is equal - * to this one, a negative value if it is less than this one - * a positive value if it is greater than this one. - * - * @return An integer as described above - * - * @exception ClassCastException If the passed <code>Object</code> is - * not a <code>File</code> - * - * @since 1.2 - */ - public int compareTo(Object obj) - { - return compareTo((File) obj); - } - - /** * This method renames the file represented by this object to the path * of the file represented by the argument <code>File</code>. * diff --git a/java/io/ObjectInputStream.java b/java/io/ObjectInputStream.java index 910312e34..d6c1406ea 100644 --- a/java/io/ObjectInputStream.java +++ b/java/io/ObjectInputStream.java @@ -55,6 +55,13 @@ import java.util.Iterator; import java.util.TreeSet; import java.util.Vector; +/** + * @author Tom Tromey (tromey@redhat.com) + * @author Jeroen Frijters (jeroen@frijters.net) + * @author Guilhem Lavaux (guilhem@kaffe.org) + * @author Michael Koch (konqueror@gmx.de) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + */ public class ObjectInputStream extends InputStream implements ObjectInput, ObjectStreamConstants { @@ -97,8 +104,8 @@ public class ObjectInputStream extends InputStream this.blockDataInput = new DataInputStream(this); this.realInputStream = new DataInputStream(in); this.nextOID = baseWireHandle; - this.objectLookupTable = new Vector(); - this.classLookupTable = new Hashtable(); + this.objectLookupTable = new Vector<Object>(); + this.classLookupTable = new Hashtable<Class,ObjectStreamClass>(); setBlockDataMode(true); readStreamHeader(); } @@ -347,7 +354,8 @@ public class ObjectInputStream extends InputStream int handle = assignNewHandle(obj); Object prevObject = this.currentObject; ObjectStreamClass prevObjectStreamClass = this.currentObjectStreamClass; - TreeSet prevObjectValidators = this.currentObjectValidators; + TreeSet<ValidatorAndPriority> prevObjectValidators = + this.currentObjectValidators; this.currentObject = obj; this.currentObjectValidators = null; @@ -754,7 +762,7 @@ public class ObjectInputStream extends InputStream + "ObjectInputValidation object"); if (currentObjectValidators == null) - currentObjectValidators = new TreeSet(); + currentObjectValidators = new TreeSet<ValidatorAndPriority>(); currentObjectValidators.add(new ValidatorAndPriority(validator, priority)); } @@ -776,7 +784,7 @@ public class ObjectInputStream extends InputStream * * @see java.io.ObjectOutputStream#annotateClass (java.lang.Class) */ - protected Class resolveClass(ObjectStreamClass osc) + protected Class<?> resolveClass(ObjectStreamClass osc) throws ClassNotFoundException, IOException { String name = osc.getName(); @@ -878,12 +886,12 @@ public class ObjectInputStream extends InputStream } - protected Class resolveProxyClass(String[] intfs) + protected Class<?> resolveProxyClass(String[] intfs) throws IOException, ClassNotFoundException { ClassLoader cl = currentLoader(); - Class[] clss = new Class[intfs.length]; + Class<?>[] clss = new Class<?>[intfs.length]; if(cl == null) { for (int i = 0; i < intfs.length; i++) @@ -1891,10 +1899,10 @@ public class ObjectInputStream extends InputStream { try { - Iterator it = currentObjectValidators.iterator(); + Iterator<ValidatorAndPriority> it = currentObjectValidators.iterator(); while(it.hasNext()) { - ValidatorAndPriority vap = (ValidatorAndPriority) it.next(); + ValidatorAndPriority vap = it.next(); ObjectInputValidation validator = vap.validator; validator.validateObject(); } @@ -1947,13 +1955,13 @@ public class ObjectInputStream extends InputStream private boolean useSubclassMethod; private int nextOID; private boolean resolveEnabled; - private Vector objectLookupTable; + private Vector<Object> objectLookupTable; private Object currentObject; private ObjectStreamClass currentObjectStreamClass; - private TreeSet currentObjectValidators; + private TreeSet<ValidatorAndPriority> currentObjectValidators; private boolean readDataFromBlock; private boolean fieldsAlreadyRead; - private Hashtable classLookupTable; + private Hashtable<Class,ObjectStreamClass> classLookupTable; private GetField prereadFields; private static boolean dump; diff --git a/java/io/ObjectOutputStream.java b/java/io/ObjectOutputStream.java index 4aa303218..c3c3df9a3 100644 --- a/java/io/ObjectOutputStream.java +++ b/java/io/ObjectOutputStream.java @@ -48,6 +48,7 @@ import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; + /** * An <code>ObjectOutputStream</code> can be used to write objects * as well as primitive data in a platform-independent manner to an @@ -113,6 +114,11 @@ import java.lang.reflect.Method; * @see java.io.Externalizable * @see java.io.ObjectInputStream * @see java.io.Serializable + * @author Tom Tromey (tromey@redhat.com) + * @author Jeroen Frijters (jeroen@frijters.net) + * @author Guilhem Lavaux (guilhem@kaffe.org) + * @author Michael Koch (konqueror@gmx.de) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */ public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants @@ -601,11 +607,11 @@ public class ObjectOutputStream extends OutputStream * * @see ObjectInputStream#resolveClass(java.io.ObjectStreamClass) */ - protected void annotateClass(Class cl) throws IOException + protected void annotateClass(Class<?> cl) throws IOException { } - protected void annotateProxyClass(Class cl) throws IOException + protected void annotateProxyClass(Class<?> cl) throws IOException { } diff --git a/java/io/ObjectStreamClass.java b/java/io/ObjectStreamClass.java index 86de3c980..52a1ad428 100644 --- a/java/io/ObjectStreamClass.java +++ b/java/io/ObjectStreamClass.java @@ -1,6 +1,6 @@ /* ObjectStreamClass.java -- Class used to write class information about serialized objects. - Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -60,6 +60,13 @@ import java.util.Arrays; import java.util.Comparator; import java.util.Hashtable; +/** + * @author Tom Tromey (tromey@redhat.com) + * @author Jeroen Frijters (jeroen@frijters.net) + * @author Guilhem Lavaux (guilhem@kaffe.org) + * @author Michael Koch (konqueror@gmx.de) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) + */ public class ObjectStreamClass implements Serializable { static final ObjectStreamField[] INVALID_FIELDS = new ObjectStreamField[0]; @@ -79,7 +86,7 @@ public class ObjectStreamClass implements Serializable * * @see java.io.Serializable */ - public static ObjectStreamClass lookup(Class cl) + public static ObjectStreamClass lookup(Class<?> cl) { if (cl == null) return null; @@ -131,7 +138,7 @@ public class ObjectStreamClass implements Serializable * * @see java.io.ObjectInputStream */ - public Class forClass() + public Class<?> forClass() { return clazz; } @@ -234,7 +241,6 @@ public class ObjectStreamClass implements Serializable return superClass; } - /** * returns an array of ObjectStreamClasses that represent the super * classes of the class represented by this and the class @@ -252,19 +258,19 @@ public class ObjectStreamClass implements Serializable { ObjectStreamClass[] result = hierarchy; if (result == null) - { + { int d = 0; - + for(ObjectStreamClass osc = this; osc != null; osc = osc.getSuper()) d++; - + result = new ObjectStreamClass[d]; - + for (ObjectStreamClass osc = this; osc != null; osc = osc.getSuper()) { result[--d] = osc; } - + hierarchy = result; } return result; @@ -1054,7 +1060,8 @@ outer: public static final ObjectStreamField[] NO_FIELDS = {}; - private static Hashtable classLookupTable = new Hashtable(); + private static Hashtable<Class,ObjectStreamClass> classLookupTable + = new Hashtable<Class,ObjectStreamClass>(); private static final NullOutputStream nullOutputStream = new NullOutputStream(); private static final Comparator interfaceComparator = new InterfaceComparator(); private static final Comparator memberComparator = new MemberComparator(); @@ -1062,7 +1069,7 @@ outer: Class[] writeMethodArgTypes = { java.io.ObjectOutputStream.class }; private ObjectStreamClass superClass; - private Class clazz; + private Class<?> clazz; private String name; private long uid; private byte flags; diff --git a/java/io/ObjectStreamField.java b/java/io/ObjectStreamField.java index 4d6eb7f1d..91f557870 100644 --- a/java/io/ObjectStreamField.java +++ b/java/io/ObjectStreamField.java @@ -1,5 +1,5 @@ /* ObjectStreamField.java -- Class used to store name and class of fields - Copyright (C) 1998, 1999, 2003, 2004 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2003, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -48,11 +48,18 @@ import java.security.PrivilegedAction; * This class intends to describe the field of a class for the serialization * subsystem. Serializable fields in a serializable class can be explicitly * exported using an array of ObjectStreamFields. + * + * @author Tom Tromey (tromey@redhat.com) + * @author Jeroen Frijters (jeroen@frijters.net) + * @author Guilhem Lavaux (guilhem@kaffe.org) + * @author Michael Koch (konqueror@gmx.de) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */ -public class ObjectStreamField implements Comparable +public class ObjectStreamField + implements Comparable<Object> { private String name; - private Class type; + private Class<?> type; private String typename; private int offset = -1; // XXX make sure this is correct private boolean unshared; @@ -74,7 +81,7 @@ public class ObjectStreamField implements Comparable * @param name Name of the field to export. * @param type Type of the field in the concerned class. */ - public ObjectStreamField (String name, Class type) + public ObjectStreamField (String name, Class<?> type) { this (name, type, false); } @@ -88,7 +95,7 @@ public class ObjectStreamField implements Comparable * @param type Type of the field in the concerned class. * @param unshared true if field will be unshared, false otherwise. */ - public ObjectStreamField (String name, Class type, boolean unshared) + public ObjectStreamField (String name, Class<?> type, boolean unshared) { if (name == null) throw new NullPointerException(); @@ -141,7 +148,7 @@ public class ObjectStreamField implements Comparable * * @return A class representing the type of the field. */ - public Class getType () + public Class<?> getType () { return type; } @@ -329,7 +336,7 @@ public class ObjectStreamField implements Comparable */ void checkFieldType() throws InvalidClassException { - Class ftype = field.getType(); + Class<?> ftype = field.getType(); if (!ftype.isAssignableFrom(type)) throw new InvalidClassException diff --git a/java/io/PrintStream.java b/java/io/PrintStream.java index 2d31bbd1e..2d747c8c8 100644 --- a/java/io/PrintStream.java +++ b/java/io/PrintStream.java @@ -39,6 +39,9 @@ exception statement from your version. */ package java.io; +import java.util.Locale; +import java.util.Formatter; + import gnu.classpath.SystemProperties; /* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3 @@ -58,8 +61,9 @@ import gnu.classpath.SystemProperties; * * @author Aaron M. Renn (arenn@urbanophile.com) * @author Tom Tromey (tromey@cygnus.com) + * @author Andrew John Hughes (gnu_andrew@member.fsf.org) */ -public class PrintStream extends FilterOutputStream +public class PrintStream extends FilterOutputStream implements Appendable { /* Notice the implementation is quite similar to OutputStreamWriter. * This leads to some minor duplication, because neither inherits @@ -620,5 +624,51 @@ public class PrintStream extends FilterOutputStream setError (); } } -} // class PrintStream + /** @since 1.5 */ + public PrintStream append(char c) + { + print(c); + return this; + } + + /** @since 1.5 */ + public PrintStream append(CharSequence cs) + { + print(cs == null ? "null" : cs.toString()); + return this; + } + + /** @since 1.5 */ + public PrintStream append(CharSequence cs, int start, int end) + { + print(cs == null ? "null" : cs.subSequence(start, end).toString()); + return this; + } + + /** @since 1.5 */ + public PrintStream printf(String format, Object... args) + { + return format(format, args); + } + + /** @since 1.5 */ + public PrintStream printf(Locale locale, String format, Object... args) + { + return format(locale, format, args); + } + + /** @since 1.5 */ + public PrintStream format(String format, Object... args) + { + return format(Locale.getDefault(), format, args); + } + + /** @since 1.5 */ + public PrintStream format(Locale locale, String format, Object... args) + { + Formatter f = new Formatter(this, locale); + f.format(format, args); + return this; + } +} // class PrintStream diff --git a/java/io/PrintWriter.java b/java/io/PrintWriter.java index 5667e7050..5b4294cba 100644 --- a/java/io/PrintWriter.java +++ b/java/io/PrintWriter.java @@ -1,5 +1,5 @@ /* PrintWriter.java -- prints primitive values and objects to a stream as text - Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation + Copyright (C) 1998, 1999, 2000, 2001, 2005 Free Software Foundation This file is part of GNU Classpath. @@ -37,6 +37,9 @@ exception statement from your version. */ package java.io; +import java.util.Locale; +import java.util.Formatter; + /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 beta from http://www.javasoft.com. * Status: Believed complete and correct. @@ -636,5 +639,52 @@ public class PrintWriter extends Writer { write(str, 0, str.length()); } + + /** @since 1.5 */ + public PrintWriter append(char c) + { + write(c); + return this; + } + + /** @since 1.5 */ + public PrintWriter append(CharSequence cs) + { + write(cs == null ? "null" : cs.toString()); + return this; + } + + /** @since 1.5 */ + public PrintWriter append(CharSequence cs, int start, int end) + { + write(cs == null ? "null" : cs.subSequence(start, end).toString()); + return this; + } + + /** @since 1.5 */ + public PrintWriter printf(String format, Object... args) + { + return format(format, args); + } + + /** @since 1.5 */ + public PrintWriter printf(Locale locale, String format, Object... args) + { + return format(locale, format, args); + } + + /** @since 1.5 */ + public PrintWriter format(String format, Object... args) + { + return format(Locale.getDefault(), format, args); + } + + /** @since 1.5 */ + public PrintWriter format(Locale locale, String format, Object... args) + { + Formatter f = new Formatter(this, locale); + f.format(format, args); + return this; + } } diff --git a/java/io/RandomAccessFile.java b/java/io/RandomAccessFile.java index 84f13a2fc..036fc8c6b 100644 --- a/java/io/RandomAccessFile.java +++ b/java/io/RandomAccessFile.java @@ -58,7 +58,7 @@ import java.nio.channels.FileChannel; * @author Aaron M. Renn (arenn@urbanophile.com) * @author Tom Tromey (tromey@cygnus.com) */ -public class RandomAccessFile implements DataOutput, DataInput +public class RandomAccessFile implements DataOutput, DataInput, Closeable { // The underlying file. diff --git a/java/io/Reader.java b/java/io/Reader.java index 7970d9a24..6da1813c6 100644 --- a/java/io/Reader.java +++ b/java/io/Reader.java @@ -1,5 +1,5 @@ /* Reader.java -- base class of classes that read input as a stream of chars - Copyright (C) 1998, 1999, 2000, 2003 Free Software Foundation + Copyright (C) 1998, 1999, 2000, 2003, 2004, 2005 Free Software Foundation This file is part of GNU Classpath. @@ -37,6 +37,8 @@ exception statement from your version. */ package java.io; +import java.nio.CharBuffer; + /* Written using "Java Class Libraries", 2nd edition, plus online * API docs for JDK 1.2 beta from http://www.javasoft.com. * Status: Believed complete and correct. @@ -53,7 +55,7 @@ package java.io; * @date April 21, 1998. * @author Aaron M. Renn (arenn@urbanophile.com) */ -public abstract class Reader +public abstract class Reader implements Closeable, Readable { /** * This is the <code>Object</code> used for synchronizing critical code @@ -152,6 +154,19 @@ public abstract class Reader return count > 0 ? buf[0] : -1; } + /** @since 1.5 */ + public int read(CharBuffer buffer) throws IOException + { + // We want to call put(), so we don't manipulate the CharBuffer + // directly. + int rem = buffer.remaining(); + char[] buf = new char[rem]; + int result = read(buf, 0, rem); + if (result != -1) + buffer.put(buf, 0, result); + return result; + } + /** * Closes the stream. Any futher attempts to read from the * stream may generate an <code>IOException</code>. diff --git a/java/io/SequenceInputStream.java b/java/io/SequenceInputStream.java index 7fefe2432..5ff85e989 100644 --- a/java/io/SequenceInputStream.java +++ b/java/io/SequenceInputStream.java @@ -1,5 +1,5 @@ /* SequenceInputStream.java -- Reads multiple input streams in sequence - Copyright (C) 1998, 1999, 2001, 2005 Free Software Foundation, Inc. + Copyright (C) 1998, 1999, 2001, 2004, 2005 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -71,8 +71,11 @@ public class SequenceInputStream extends InputStream /** Secondary input stream; not used if constructed w/ enumeration. */ private InputStream in2; - /** The enumeration handle; not used if constructed w/ 2 explicit input streams. */ - private Enumeration e; + /** + * The enumeration handle; not used if constructed w/ 2 explicit + * input streams. + */ + private Enumeration<? extends InputStream> e; /** * This method creates a new <code>SequenceInputStream</code> that obtains @@ -82,10 +85,10 @@ public class SequenceInputStream extends InputStream * @param e An <code>Enumeration</code> that will return a list of * <code>InputStream</code>s to read in sequence */ - public SequenceInputStream(Enumeration e) + public SequenceInputStream(Enumeration<? extends InputStream> e) { this.e = e; - in = (InputStream) e.nextElement(); + in = e.nextElement(); in2 = null; } @@ -207,14 +210,13 @@ public class SequenceInputStream extends InputStream if (e != null) { if (e.hasMoreElements()) - nextIn = (InputStream) e.nextElement(); + nextIn = e.nextElement(); + } + else if (in2 != null) + { + nextIn = in2; + in2 = null; } - else - if (in2 != null) - { - nextIn = in2; - in2 = null; - } return nextIn; } diff --git a/java/io/StringWriter.java b/java/io/StringWriter.java index a1e9aeb6b..5a16e63ea 100644 --- a/java/io/StringWriter.java +++ b/java/io/StringWriter.java @@ -183,6 +183,27 @@ public class StringWriter extends Writer buffer.append(str.substring(offset, offset + len)); } + /** @since 1.5 */ + public StringWriter append(char c) + { + write(c); + return this; + } + + /** @since 1.5 */ + public StringWriter append(CharSequence cs) + { + write(cs == null ? "null" : cs.toString()); + return this; + } + + /** @since 1.5 */ + public StringWriter append(CharSequence cs, int start, int end) + { + write(cs == null ? "null" : cs.subSequence(start, end).toString()); + return this; + } + /** * This is the <code>StringBuffer</code> that we use to store bytes that * are written. diff --git a/java/io/Writer.java b/java/io/Writer.java index f153e31cf..660b69089 100644 --- a/java/io/Writer.java +++ b/java/io/Writer.java @@ -53,7 +53,7 @@ package java.io; * @author Aaron M. Renn (arenn@urbanophile.com) * @author Per Bothner (bothner@cygnus.com) */ -public abstract class Writer +public abstract class Writer implements Appendable, Closeable, Flushable { /** * This is the object used to synchronize criticial code sections for @@ -188,5 +188,24 @@ public abstract class Writer write(buf, 0, len); } -} // class Writer + /** @since 1.5 */ + public Writer append(char c) throws IOException + { + write(c); + return this; + } + /** @since 1.5 */ + public Writer append(CharSequence cs) throws IOException + { + write(cs == null ? "null" : cs.toString()); + return this; + } + + /** @since 1.5 */ + public Writer append(CharSequence cs, int start, int end) throws IOException + { + write(cs == null ? "null" : cs.subSequence(start, end).toString()); + return this; + } +} |