You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2006/06/17 05:33:52 UTC

svn commit: r414992 - in /incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java: io/ lang/

Author: ndbeyer
Date: Fri Jun 16 20:33:51 2006
New Revision: 414992

URL: http://svn.apache.org/viewvc?rev=414992&view=rev
Log:
Code cleanup; generification, etc

Modified:
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/FilePermissionCollection.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamClass.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamField.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SequenceInputStream.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SerializablePermission.java
    incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ClassCastException.java

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/FilePermissionCollection.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/FilePermissionCollection.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/FilePermissionCollection.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/FilePermissionCollection.java Fri Jun 16 20:33:51 2006
@@ -17,6 +17,8 @@
 
 
 import java.security.Permission;
+import java.security.PermissionCollection;
+import java.util.Enumeration;
 import java.util.Vector;
 
 /**
@@ -25,11 +27,11 @@
  * specific permissions is implied by a FilePermissionCollection.
  * 
  */
-final class FilePermissionCollection extends java.security.PermissionCollection
+final class FilePermissionCollection extends PermissionCollection
 		implements Serializable {
 	private static final long serialVersionUID = 2202956749081564585L;
 
-	Vector permissions = new Vector();
+	Vector<Permission> permissions = new Vector<Permission>();
 
 	/**
 	 * Construct a new FilePermissionCollection.
@@ -44,22 +46,22 @@
 	 * @see java.security.PermissionCollection#add(java.security.Permission)
 	 */
 	public void add(Permission permission) {
-		if (!isReadOnly()) {
-			if (permission instanceof FilePermission)
-				permissions.addElement(permission);
-			else
-				throw new java.lang.IllegalArgumentException(permission
-						.toString());
-		} else
-			throw new IllegalStateException();
-	}
+        if (!isReadOnly()) {
+            if (permission instanceof FilePermission) {
+                permissions.addElement(permission);
+            } else {
+                throw new IllegalArgumentException(permission.toString());
+            }
+        } else
+            throw new IllegalStateException();
+    }
 
 	/**
-	 * Answers an enumeration for the collection of permissions.
-	 * 
-	 * @see java.security.PermissionCollection#elements()
-	 */
-	public java.util.Enumeration elements() {
+     * Answers an enumeration for the collection of permissions.
+     * 
+     * @see java.security.PermissionCollection#elements()
+     */
+	public Enumeration<Permission> elements() {
 		return permissions.elements();
 	}
 
@@ -70,19 +72,19 @@
 	 * @see java.security.PermissionCollection#implies(java.security.Permission)
 	 */
 	public boolean implies(Permission permission) {
-		if (permission instanceof FilePermission) {
-			FilePermission fp = (FilePermission) permission;
-			int matchedMask = 0;
-			int i = 0;
-			while (i < permissions.size()
-					&& ((matchedMask & fp.mask) != fp.mask)) {
-				// Cast will not fail since we added it
-				matchedMask |= ((FilePermission) permissions.elementAt(i))
-						.impliesMask(permission);
-				i++;
-			}
-			return ((matchedMask & fp.mask) == fp.mask);
-		}
-		return false;
-	}
+        if (permission instanceof FilePermission) {
+            FilePermission fp = (FilePermission) permission;
+            int matchedMask = 0;
+            int i = 0;
+            while (i < permissions.size()
+                    && ((matchedMask & fp.mask) != fp.mask)) {
+                // Cast will not fail since we added it
+                matchedMask |= ((FilePermission) permissions.elementAt(i))
+                        .impliesMask(permission);
+                i++;
+            }
+            return ((matchedMask & fp.mask) == fp.mask);
+        }
+        return false;
+    }
 }

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamClass.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamClass.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamClass.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamClass.java Fri Jun 16 20:33:51 2006
@@ -22,10 +22,15 @@
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.security.AccessController;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
 import java.util.WeakHashMap;
 
-import org.apache.harmony.luni.util.Sorter;
-
+import org.apache.harmony.luni.util.Msg;
 import org.apache.harmony.luni.util.PriviAction;
 
 /**
@@ -58,7 +63,7 @@
 
 	static final Class[] EMPTY_CONSTRUCTOR_PARAM_TYPES;
 
-	private static final Class VOID_CLASS;
+	private static final Class<Void> VOID_CLASS;
 
 	static final Class[] UNSHARED_PARAM_TYPES;
 
@@ -71,8 +76,8 @@
 				| Modifier.INTERFACE | Modifier.ABSTRACT;
 		READ_PARAM_TYPES = new Class[1];
 		WRITE_PARAM_TYPES = new Class[1];
-		READ_PARAM_TYPES[0] = java.io.ObjectInputStream.class;
-		WRITE_PARAM_TYPES[0] = java.io.ObjectOutputStream.class;
+		READ_PARAM_TYPES[0] = ObjectInputStream.class;
+		WRITE_PARAM_TYPES[0] = ObjectOutputStream.class;
 		EMPTY_CONSTRUCTOR_PARAM_TYPES = new Class[0];
 		VOID_CLASS = Void.TYPE;
 		UNSHARED_PARAM_TYPES = new Class[1];
@@ -84,15 +89,17 @@
 	 */
 	public static final ObjectStreamField[] NO_FIELDS = new ObjectStreamField[0];
 
-	static final Class ARRAY_OF_FIELDS; // used to fetch field
-										// serialPersistentFields and checking
-										// its type
+	/*
+     * used to fetch field serialPersistentFields and checking its type
+     */
+    static final Class<?> ARRAY_OF_FIELDS;
+    
 	static {
 		try {
 			ARRAY_OF_FIELDS = Class.forName("[Ljava.io.ObjectStreamField;"); //$NON-NLS-1$
 		} catch (ClassNotFoundException e) {
 			// This should not happen
-			throw new RuntimeException();
+			throw new AssertionError(e);
 		}
 	}
 
@@ -103,25 +110,25 @@
 	private static final String CLINIT_SIGNATURE = "()V"; //$NON-NLS-1$
 
 	// Used to determine if an object is Serializable or Externalizable
-	private static final Class SERIALIZABLE = java.io.Serializable.class;
+	private static final Class<Serializable> SERIALIZABLE = Serializable.class;
 
-	private static final Class EXTERNALIZABLE = java.io.Externalizable.class;
+	private static final Class<Externalizable> EXTERNALIZABLE = Externalizable.class;
 
 	// Used to test if the object is a String or a class.
-	static final Class STRINGCLASS = java.lang.String.class;
+	static final Class<String> STRINGCLASS = String.class;
 
-	static final Class CLASSCLASS = java.lang.Class.class;
+	static final Class<?> CLASSCLASS = Class.class;
 
-	static final Class OBJECTSTREAMCLASSCLASS = java.io.ObjectStreamClass.class;
+	static final Class<ObjectStreamClass> OBJECTSTREAMCLASSCLASS = ObjectStreamClass.class;
 
 	// Table mapping instances of java.lang.Class to to corresponding instances
 	// of ObjectStreamClass
-	private static final WeakHashMap classesAndDescriptors = new WeakHashMap();
+	private static final WeakHashMap<Class<?>, ObjectStreamClass> classesAndDescriptors = new WeakHashMap<Class<?>, ObjectStreamClass>();
 
 	// ClassDesc
 	private String className; // Name of the class this descriptor represents
 
-	private WeakReference resolvedClass; // Corresponding loaded class with
+	private WeakReference<Class<?>> resolvedClass; // Corresponding loaded class with
 											// the name above
 
 	private long svUID; // Serial version UID of the class the descriptor
@@ -143,14 +150,14 @@
 											// describing the serialized fields
 											// of this class
 
-	// If an ObjectStreamClass describes an Externalizable class, it (the
-	// descriptor) should not have
-	// field descriptors (ObjectStreamField) at all. The ObjectStreamClass that
-	// gets saved should simply
-	// have no field info. This is a footnote in page 1511 (class Serializable)
-	// of
-	// "The Java Class Libraries, Second Edition, Vol I".
-
+	/*
+     * If an ObjectStreamClass describes an Externalizable class, it (the
+     * descriptor) should not have field descriptors (ObjectStreamField) at all.
+     * The ObjectStreamClass that gets saved should simply have no field info.
+     * This is a footnote in page 1511 (class Serializable) of "The Java Class
+     * Libraries, Second Edition, Vol. I".
+     */
+    
 	/**
 	 * Constructs a new instance of this class.
 	 */
@@ -171,7 +178,7 @@
 	 *            a boolean indicating if SUID should be computed or not.
 	 * @return the computer class descriptor
 	 */
-	private static ObjectStreamClass addToCache(Class cl, boolean computeSUID) {
+	private static ObjectStreamClass addToCache(Class<?> cl, boolean computeSUID) {
 
 		ObjectStreamClass result = new ObjectStreamClass();
 		classesAndDescriptors.put(cl, result);
@@ -179,39 +186,42 @@
 		// Now we fill in the values
 		result.setName(cl.getName());
 		result.setClass(cl);
-		Class superclass = cl.getSuperclass();
-		if (superclass != null)
+		Class<?> superclass = cl.getSuperclass();
+		if (superclass != null) {
 			result.setSuperclass(lookup(superclass));
+        }
 
 		Field[] declaredFields = null;
-		if (computeSUID) {
-			declaredFields = cl.getDeclaredFields(); // Lazy computation, to
-														// save speed&space
-			result.setSerialVersionUID(computeSerialVersionUID(cl,
-					declaredFields));
-		}
-
-		boolean serializable = isSerializable(cl);
-		// Serializables need field descriptors
-		if (serializable && !cl.isArray()) {
-			if (declaredFields == null)
-				declaredFields = cl.getDeclaredFields(); // Lazy computation,
-															// to save
-															// speed&space
-			result.buildFieldDescriptors(declaredFields);
-		} else {
-			// Externalizables or arrays do not need FieldDesc info
-			result.setFields(new ObjectStreamField[0]);
-		}
+        if (computeSUID) {
+            // Lazy computation, to save speed & space
+            declaredFields = cl.getDeclaredFields();
+            result.setSerialVersionUID(computeSerialVersionUID(cl,
+                    declaredFields));
+        }
+
+        boolean serializable = isSerializable(cl);
+        // Serializables need field descriptors
+        if (serializable && !cl.isArray()) {
+            if (declaredFields == null) {
+
+                declaredFields = cl.getDeclaredFields();
+            }
+            result.buildFieldDescriptors(declaredFields);
+        } else {
+            // Externalizables or arrays do not need FieldDesc info
+            result.setFields(new ObjectStreamField[0]);
+        }
 
 		byte flags = 0;
 		boolean externalizable = isExternalizable(cl);
-		if (externalizable)
-			flags |= ObjectStreamConstants.SC_EXTERNALIZABLE;
-		else if (serializable)
-			flags |= ObjectStreamConstants.SC_SERIALIZABLE;
-		if (getPrivateWriteObjectMethod(cl) != null)
-			flags |= ObjectStreamConstants.SC_WRITE_METHOD;
+		if (externalizable) {
+            flags |= ObjectStreamConstants.SC_EXTERNALIZABLE;
+        } else if (serializable) {
+            flags |= ObjectStreamConstants.SC_SERIALIZABLE;
+        }
+		if (getPrivateWriteObjectMethod(cl) != null) {
+            flags |= ObjectStreamConstants.SC_WRITE_METHOD;
+        }
 		result.setFlags(flags);
 
 		return result;
@@ -237,23 +247,19 @@
 
 		if (!useReflectFields) {
 			// The user declared a collection of emulated fields. Use them.
-			AccessController.doPrivileged(new PriviAction(f)); // We have to be
-																// able to fetch
-																// its value,
-																// even if it is
-																// private
+		    // We have to be able to fetch its value, even if it is private
+			AccessController.doPrivileged(new PriviAction<Object>(f)); 
 			try {
-				fields = (ObjectStreamField[]) f.get(null); // static field,
-															// pass null
+			    //static field, pass null
+				fields = (ObjectStreamField[]) f.get(null); 
 			} catch (IllegalAccessException ex) {
 				// WARNING - what should we do if we have no access ? This
 				// should not happen.
-				throw new RuntimeException();
+				throw new RuntimeException(ex);
 			}
 		} else {
 			// Compute collection of dumpable fields based on reflect fields
-			java.util.Vector serializableFields = new java.util.Vector(
-					declaredFields.length);
+			List<ObjectStreamField> serializableFields = new ArrayList<ObjectStreamField>(declaredFields.length);
 			// Filter, we are only interested in fields that are serializable
 			for (int i = 0; i < declaredFields.length; i++) {
 				Field declaredField = declaredFields[i];
@@ -263,7 +269,7 @@
 				if (shouldBeSerialized) {
 					ObjectStreamField field = new ObjectStreamField(
 							declaredField.getName(), declaredField.getType());
-					serializableFields.addElement(field);
+					serializableFields.add(field);
 				}
 			}
 
@@ -273,14 +279,14 @@
 			} else {
 				// Now convert from Vector to array
 				fields = new ObjectStreamField[serializableFields.size()];
-				serializableFields.copyInto(fields);
+				fields = serializableFields.toArray(fields);
 			}
 		}
 		ObjectStreamField.sortFields(fields);
 		// assign offsets
 		int primOffset = 0, objectOffset = 0;
 		for (int i = 0; i < fields.length; i++) {
-			Class type = fields[i].getType();
+			Class<?> type = fields[i].getType();
 			if (type.isPrimitive()) {
 				fields[i].offset = primOffset;
 				primOffset += primitiveSize(type);
@@ -302,97 +308,101 @@
 	 * @return the value of SUID of this class
 	 * 
 	 */
-	private static long computeSerialVersionUID(Class cl, Field[] fields) {
-		// First we should try to fetch the static slot
-		// 'static final long serialVersionUID'. If it is defined,
-		// return it. If not defined, we really need to compute SUID
-		// using SHAOutputStream
-
+	private static long computeSerialVersionUID(Class<?> cl, Field[] fields) {
+		/*
+         * First we should try to fetch the static slot 'static final long
+         * serialVersionUID'. If it is defined, return it. If not defined, we
+         * really need to compute SUID using SHAOutputStream
+         */
 		for (int i = 0; i < fields.length; i++) {
 			final Field field = fields[i];
 			if (Long.TYPE == field.getType()) {
 				int modifiers = field.getModifiers();
 				if (Modifier.isStatic(modifiers) && Modifier.isFinal(modifiers)) {
 					if (UID_FIELD_NAME.equals(field.getName())) {
-						// We need to be able to see it even if we have no
-						// visibility.
-						// That is why we set accessible first (new API in
-						// reflect 1.2)
-						AccessController.doPrivileged(new PriviAction(field));
+						/*
+                         * We need to be able to see it even if we have no
+                         * visibility. That is why we set accessible first (new
+                         * API in reflect 1.2)
+                         */
+                        AccessController.doPrivileged(new PriviAction<Object>(
+                                field));
 						try {
-							return field.getLong(null); // Static field,
-														// parameter is ignored
+                            // Static field, parameter is ignored
+							return field.getLong(null);
 						} catch (IllegalAccessException iae) {
-							throw new RuntimeException(org.apache.harmony.luni.util.Msg
-									.getString("K0071", iae.toString())); //$NON-NLS-1$
+							throw new RuntimeException(Msg.getString("K0071", iae)); //$NON-NLS-1$
 						}
 					}
 				}
 			}
 		}
 
-		java.security.MessageDigest digest;
+		MessageDigest digest;
 		try {
-			digest = java.security.MessageDigest.getInstance("SHA"); //$NON-NLS-1$
-		} catch (java.security.NoSuchAlgorithmException e) {
-			throw new Error(e.toString());
+			digest = MessageDigest.getInstance("SHA"); //$NON-NLS-1$
+		} catch (NoSuchAlgorithmException e) {
+			throw new Error(e);
 		}
 		ByteArrayOutputStream sha = new ByteArrayOutputStream();
 		try {
 			DataOutputStream output = new DataOutputStream(sha);
 			output.writeUTF(cl.getName());
 			int classModifiers = CLASS_MODIFIERS_MASK & cl.getModifiers();
-			// Workaround for 1F9LOQO. Arrays are ABSTRACT in JDK, but that is
-			// not in the spec.
-			// Since we want to be compatible for X-loading, we have to pretend
-			// we have the same shape
-			boolean isArray = cl.isArray();
+            /*
+             * Workaround for 1F9LOQO. Arrays are ABSTRACT in JDK, but that is
+             * not in the specification. Since we want to be compatible for
+             * X-loading, we have to pretend we have the same shape
+             */
+            boolean isArray = cl.isArray();
 			if (isArray) {
 				classModifiers |= Modifier.ABSTRACT;
 			}
 			// Required for JDK UID compatibility
-			if (cl.isInterface() && !Modifier.isPublic(classModifiers))
+			if (cl.isInterface() && !Modifier.isPublic(classModifiers)) {
 				classModifiers &= ~Modifier.ABSTRACT;
+            }
 			output.writeInt(classModifiers);
 
-			// Workaround for 1F9LOQO. In JDK1.2 arrays implement Cloneable and
-			// Serializable
-			// but not in JDK 1.1.7. So, JDK 1.2 "pretends" arrays have no
-			// interfaces when
-			// computing SHA-1 to be compatible.
+            /*
+             * Workaround for 1F9LOQO. In JDK1.2 arrays implement Cloneable and
+             * Serializable but not in JDK 1.1.7. So, JDK 1.2 "pretends" arrays
+             * have no interfaces when computing SHA-1 to be compatible.
+             * 
+             */
 			if (!isArray) {
 				// ------------------ Interface information
-				Class[] interfaces = cl.getInterfaces();
-				if (interfaces.length > 1) { // Only attempt to sort if
-												// really needed (saves object
-												// creation, etc)
-					// Sort them
-					Sorter.Comparator interfaceComparator = new Sorter.Comparator() {
-						public int compare(Object interface1, Object interface2) {
-							return ((Class) interface1).getName().compareTo(
-									((Class) interface2).getName());
-						}
-					};
-					Sorter.sort(interfaces, interfaceComparator);
+				Class<?>[] interfaces = cl.getInterfaces();
+				if (interfaces.length > 1) { 
+                    /*
+                     * Only attempt to sort if really needed (saves object
+                     * creation, etc)
+                     */
+					Comparator<Class<?>> interfaceComparator = new Comparator<Class<?>>() {
+                        public int compare(Class<?> itf1, Class<?> itf2) {
+                            return itf1.getName().compareTo(itf2.getName());
+                        }
+                    };
+                    Arrays.sort(interfaces, interfaceComparator);
 				}
 
 				// Dump them
-				for (int i = 0; i < interfaces.length; i++)
+				for (int i = 0; i < interfaces.length; i++) {
 					output.writeUTF(interfaces[i].getName());
+                }
 			}
 
 			// ------------------ Field information
 
-			if (fields.length > 1) {// Only attempt to sort if really needed
-									// (saves object creation, etc)
+			if (fields.length > 1) {
+                // Only attempt to sort if really needed (saves object creation, etc)
 				// Sort them
-				Sorter.Comparator fieldComparator = new Sorter.Comparator() {
-					public int compare(Object field1, Object field2) {
-						return ((Field) field1).getName().compareTo(
-								((Field) field2).getName());
-					}
-				};
-				Sorter.sort(fields, fieldComparator);
+				Comparator<Field> fieldComparator = new Comparator<Field>() {
+                    public int compare(Field field1, Field field2) {
+                        return field1.getName().compareTo(field2.getName());
+                    }
+                };
+                Arrays.sort(fields, fieldComparator);
 			}
 
 			// Dump them
@@ -412,10 +422,12 @@
 				}
 			}
 
-			// Normally constructors come before methods (because <init> <
-			// anyMethodName).
-			// However, <clinit> is an exception. Besides, reflect will not let
-			// us get to it.
+			/*
+             * Normally constructors come before methods (because <init> <
+             * anyMethodName). However, <clinit> is an exception. Besides,
+             * reflect will not let us get to it.
+             * 
+             */
 			if (hasClinit(cl)) {
 				// write name, modifier & "descriptor"
 				output.writeUTF(CLINIT_NAME);
@@ -424,58 +436,59 @@
 			}
 
 			// ------------------ Constructor information
-			Constructor[] constructors = cl.getDeclaredConstructors();
-			if (constructors.length > 1) {// Only attempt to sort if really
-											// needed (saves object creation,
-											// etc)
-				// Sort them
-				Sorter.Comparator constructorComparator = new Sorter.Comparator() {
-					public int compare(Object constructor1, Object constructor2) {
+			Constructor<?>[] constructors = cl.getDeclaredConstructors();
+			if (constructors.length > 1) {
+                /*
+                 * Only attempt to sort if really needed (saves object
+                 * creation, etc)
+                 */
+				Comparator<Constructor<?>> constructorComparator = new Comparator<Constructor<?>>() {
+					public int compare(Constructor<?> ctr1, Constructor<?> ctr2) {
 						// All constructors have same name, so we sort based on
 						// signature
-						return (getConstructorSignature((Constructor) constructor1)
-								.compareTo(getConstructorSignature((Constructor) constructor2)));
+						return (getConstructorSignature(ctr1)
+                                .compareTo(getConstructorSignature(ctr2)));
 					}
 				};
-				Sorter.sort(constructors, constructorComparator);
+				Arrays.sort(constructors, constructorComparator);
 			}
 
 			// Dump them
 			for (int i = 0; i < constructors.length; i++) {
-				Constructor constructor = constructors[i];
+				Constructor<?> constructor = constructors[i];
 				int modifiers = constructor.getModifiers();
 				boolean isPrivate = Modifier.isPrivate(modifiers);
 				if (!isPrivate) {
-					// write name, modifier & "descriptor" of all but private
-					// ones
-					output.writeUTF("<init>"); // constructor.getName() returns //$NON-NLS-1$
-												// the constructor name as
-												// typed, not the VM name
-					output.writeInt(modifiers);
-					output
-							.writeUTF(descriptorForSignature(getConstructorSignature(constructor)));
-				}
+                    /*
+                     * write name, modifier & "descriptor" of all but private
+                     * ones
+                     * 
+                     * constructor.getName() returns the constructor name as
+                     * typed, not the VM name
+                     */
+                    output.writeUTF("<init>"); //$NON-NLS-1$
+                    output.writeInt(modifiers);
+                    output.writeUTF(descriptorForSignature(
+                            getConstructorSignature(constructor)));
+                }
 			}
 
 			// ------------------ Method information
 			Method[] methods = cl.getDeclaredMethods();
-			if (methods.length > 1) {// Only attempt to sort if really needed
-										// (saves object creation, etc)
-				// Sort them
-				Sorter.Comparator methodComparator = new Sorter.Comparator() {
-					public int compare(Object method1, Object method2) {
-						int result = ((Method) method1).getName().compareTo(
-								((Method) method2).getName());
-						if (result == 0) {
-							// same name, signature will tell which one comes
-							// first
-							return (getMethodSignature((Method) method1)
-									.compareTo(getMethodSignature((Method) method2)));
-						}
-						return result;
-					}
-				};
-				Sorter.sort(methods, methodComparator);
+			if (methods.length > 1) {
+				Comparator<Method> methodComparator = new Comparator<Method>() {
+                    public int compare(Method m1, Method m2) {
+                        int result = m1.getName().compareTo(m2.getName());
+                        if (result == 0) {
+                            // same name, signature will tell which one comes
+                            // first
+                            return getMethodSignature(m1)
+                                    .compareTo(getMethodSignature(m2));
+                        }
+                        return result;
+                    }
+                };
+				Arrays.sort(methods, methodComparator);
 			}
 
 			// Dump them
@@ -488,13 +501,12 @@
 					// ones
 					output.writeUTF(method.getName());
 					output.writeInt(modifiers);
-					output
-							.writeUTF(descriptorForSignature(getMethodSignature(method)));
+					output.writeUTF(descriptorForSignature(
+                            getMethodSignature(method)));
 				}
 			}
 		} catch (IOException e) {
-			throw new RuntimeException(org.apache.harmony.luni.util.Msg.getString("K0072", //$NON-NLS-1$
-					e.toString()));
+			throw new RuntimeException(Msg.getString("K0072", e));//$NON-NLS-1$
 		}
 
 		// now compute the UID based on the SHA
@@ -539,14 +551,16 @@
 	 *         serialPersistentFields <code>null</code> if the class does not
 	 *         have serialPersistentFields
 	 */
-	static Field fieldSerialPersistentFields(Class cl) {
+	static Field fieldSerialPersistentFields(Class<?> cl) {
 		try {
 			Field f = cl.getDeclaredField("serialPersistentFields"); //$NON-NLS-1$
 			int modifiers = f.getModifiers();
 			if (Modifier.isStatic(modifiers) && Modifier.isPrivate(modifiers)
-					&& Modifier.isFinal(modifiers))
-				if (f.getType() == ARRAY_OF_FIELDS)
-					return f;
+					&& Modifier.isFinal(modifiers)) {
+                if (f.getType() == ARRAY_OF_FIELDS) {
+                    return f;
+                }
+            }
 		} catch (NoSuchFieldException nsm) {
 		}
 		return null;
@@ -561,7 +575,7 @@
 	 */
 	public Class<?> forClass() {
 		if (resolvedClass != null) {
-			return (Class) resolvedClass.get();
+			return resolvedClass.get();
 		}
 		return null;
 	}
@@ -576,7 +590,7 @@
 	 * @return the constructor's signature
 	 * 
 	 */
-	static native String getConstructorSignature(Constructor c);
+	static native String getConstructorSignature(Constructor<?> c);
 
 	/**
 	 * Answers a given field by name.
@@ -590,8 +604,9 @@
 		ObjectStreamField[] allFields = fields();
 		for (int i = 0; i < allFields.length; i++) {
 			ObjectStreamField f = allFields[i];
-			if (f.getName().equals(name))
-				return f;
+			if (f.getName().equals(name)) {
+                return f;
+            }
 		}
 		return null;
 	}
@@ -606,12 +621,13 @@
 
 	ObjectStreamField[] fields() {
 		if (fields == null) {
-			Class forCl = forClass();
-			if (forCl != null && isSerializable(forCl) && !forCl.isArray())
+			Class<?> forCl = forClass();
+			if (forCl != null && isSerializable(forCl) && !forCl.isArray()) {
 				buildFieldDescriptors(forCl.getDeclaredFields());
-			else
+            } else {
 				// Externalizables or arrays do not need FieldDesc info
 				setFields(new ObjectStreamField[0]);
+            }
 		}
 		return fields;
 	}
@@ -625,7 +641,7 @@
 	 */
 
 	public ObjectStreamField[] getFields() {
-		return (ObjectStreamField[]) fields().clone();
+		return fields().clone();
 	}
 
 	/**
@@ -715,7 +731,7 @@
 	 * @return <code>true</code> if the class has <clinit> <code>false</code>
 	 *         if the class does not have <clinit>
 	 */
-	private static native boolean hasClinit(Class cl);
+	private static native boolean hasClinit(Class<?> cl);
 
 	/**
 	 * Return true if the given class <code>cl</code> implements private
@@ -726,10 +742,9 @@
 	 * @return <code>true</code> if the class implements readObject
 	 *         <code>false</code> if the class does not implement readObject
 	 */
-	static Method getPrivateReadObjectMethod(Class cl) {
+	static Method getPrivateReadObjectMethod(Class<?> cl) {
 		try {
-			Method method = cl
-					.getDeclaredMethod("readObject", READ_PARAM_TYPES); //$NON-NLS-1$
+			Method method = cl.getDeclaredMethod("readObject", READ_PARAM_TYPES); //$NON-NLS-1$
 			if (Modifier.isPrivate(method.getModifiers())
 					&& method.getReturnType() == VOID_CLASS) {
 				return method;
@@ -748,7 +763,7 @@
 	 * @return <code>true</code> if the class implements readObject
 	 *         <code>false</code> if the class does not implement readObject
 	 */
-	static Method getPrivateReadObjectNoDataMethod(Class cl) {
+	static Method getPrivateReadObjectNoDataMethod(Class<?> cl) {
 		try {
 			Method method = cl.getDeclaredMethod("readObjectNoData", //$NON-NLS-1$
 					EMPTY_CONSTRUCTOR_PARAM_TYPES);
@@ -770,7 +785,7 @@
 	 * @return <code>true</code> if the class implements writeObject
 	 *         <code>false</code> if the class does not implement writeObject
 	 */
-	static Method getPrivateWriteObjectMethod(Class cl) {
+	static Method getPrivateWriteObjectMethod(Class<?> cl) {
 		try {
 			Method method = cl.getDeclaredMethod("writeObject", //$NON-NLS-1$
 					WRITE_PARAM_TYPES);
@@ -795,23 +810,23 @@
 	 * 
 	 * @see Object#hashCode
 	 */
-	static boolean isExternalizable(Class cl) {
+	static boolean isExternalizable(Class<?> cl) {
 		return EXTERNALIZABLE.isAssignableFrom(cl);
 	}
 
 	/**
-	 * Return true if the typecode
-	 * <code>typecode<code> describes a primitive type
-	 *
-	 * @param		typecode	a char describing the typecode
-	 * @return		<code>true</code> if the typecode represents a primitive type
-	 *				<code>false</code> if the typecode represents an Object type (including arrays)
-	 *
-	 * @see			Object#hashCode
-	 */
-	static boolean isPrimitiveType(char typecode) {
-		return !(typecode == '[' || typecode == 'L');
-	}
+     * Return true if the type code
+     * <code>typecode<code> describes a primitive type
+     *
+     * @param typecode a char describing the typecode
+     * @return <code>true</code> if the typecode represents a primitive type 
+     * <code>false</code> if the typecode represents an Object type (including arrays)
+     *
+     * @see	Object#hashCode
+     */
+    static boolean isPrimitiveType(char typecode) {
+        return !(typecode == '[' || typecode == 'L');
+    }
 
 	/**
 	 * Return true if instances of class <code>cl</code> are Serializable,
@@ -825,7 +840,7 @@
 	 * 
 	 * @see Object#hashCode
 	 */
-	static boolean isSerializable(Class cl) {
+	static boolean isSerializable(Class<?> cl) {
 		return SERIALIZABLE.isAssignableFrom(cl);
 	}
 
@@ -840,8 +855,9 @@
 	 */
 	private static long littleEndianLongAt(byte[] buffer, int position) {
 		long result = 0;
-		for (int i = position + 7; i >= position; i--)
-			result = (result << 8) + (buffer[i] & 0xff);
+		for (int i = position + 7; i >= position; i--) {
+            result = (result << 8) + (buffer[i] & 0xff);
+        }
 		return result;
 	}
 
@@ -863,8 +879,9 @@
 		boolean externalizable = isExternalizable(cl);
 
 		// Has to be either Serializable or Externalizable
-		if (!serializable && !externalizable)
-			return null;
+		if (!serializable && !externalizable) {
+            return null;
+        }
 
 		return lookupStreamClass(cl, true);
 	}
@@ -879,7 +896,7 @@
 	 *            descriptor
 	 * @return the corresponding descriptor
 	 */
-	static ObjectStreamClass lookupStreamClass(Class cl) {
+	static ObjectStreamClass lookupStreamClass(Class<?> cl) {
 		return lookupStreamClass(cl, isSerializable(cl) || isExternalizable(cl));
 	}
 
@@ -895,13 +912,14 @@
 	 *            a boolean indicating if SUID should be computed or not.
 	 * @return the corresponding descriptor
 	 */
-	private static synchronized ObjectStreamClass lookupStreamClass(Class cl,
+	private static synchronized ObjectStreamClass lookupStreamClass(Class<?> cl,
 			boolean computeSUID) {
 		// Synchronized because of the lookup table 'classesAndDescriptors'
-		ObjectStreamClass cachedValue = (ObjectStreamClass) classesAndDescriptors
+		ObjectStreamClass cachedValue = classesAndDescriptors
 				.get(cl);
-		if (cachedValue != null)
-			return cachedValue;
+		if (cachedValue != null) {
+            return cachedValue;
+        }
 		return addToCache(cl, computeSUID);
 	}
 
@@ -915,14 +933,15 @@
 	 *         readResolve <code>null</code> if the class does not implement
 	 *         readResolve
 	 */
-	static Method methodReadResolve(Class cl) {
-		Class search = cl;
+	static Method methodReadResolve(Class<?> cl) {
+        Class<?> search = cl;
 		while (search != null) {
 			try {
 				Method method = search.getDeclaredMethod("readResolve", (Class[])null); //$NON-NLS-1$
 				if (search == cl
-						|| (method.getModifiers() & Modifier.PRIVATE) == 0)
-					return method;
+						|| (method.getModifiers() & Modifier.PRIVATE) == 0) {
+                    return method;
+                }
 				return null;
 			} catch (NoSuchMethodException nsm) {
 			}
@@ -941,14 +960,15 @@
 	 *         writeReplace <code>null</code> if the class does not implement
 	 *         writeReplace
 	 */
-	static Method methodWriteReplace(Class cl) {
-		Class search = cl;
+	static Method methodWriteReplace(Class<?> cl) {
+        Class<?> search = cl;
 		while (search != null) {
 			try {
 				Method method = search.getDeclaredMethod("writeReplace", (Class[])null); //$NON-NLS-1$
 				if (search == cl
-						|| (method.getModifiers() & Modifier.PRIVATE) == 0)
-					return method;
+						|| (method.getModifiers() & Modifier.PRIVATE) == 0) {
+                    return method;
+                }
 				return null;
 			} catch (NoSuchMethodException nsm) {
 			}
@@ -963,8 +983,8 @@
 	 * @param c
 	 *            aClass, the new class that the receiver describes
 	 */
-	void setClass(Class c) {
-		resolvedClass = new WeakReference(c);
+	void setClass(Class<?> c) {
+		resolvedClass = new WeakReference<Class<?>>(c);
 	}
 
 	/**
@@ -1038,15 +1058,19 @@
 		superclass = c;
 	}
 
-	private int primitiveSize(Class type) {
-		if (type == Byte.TYPE || type == Boolean.TYPE)
-			return 1;
-		if (type == Short.TYPE || type == Character.TYPE)
-			return 2;
-		if (type == Integer.TYPE || type == Float.TYPE)
-			return 4;
-		if (type == Long.TYPE || type == Double.TYPE)
-			return 8;
+	private int primitiveSize(Class<?> type) {
+		if (type == Byte.TYPE || type == Boolean.TYPE) {
+            return 1;
+        }
+		if (type == Short.TYPE || type == Character.TYPE) {
+            return 2;
+        }
+		if (type == Integer.TYPE || type == Float.TYPE) {
+            return 4;
+        }
+		if (type == Long.TYPE || type == Double.TYPE) {
+            return 8;
+        }
 		return 0;
 	}
 

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamField.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamField.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamField.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectStreamField.java Fri Jun 16 20:33:51 2006
@@ -16,8 +16,8 @@
 package java.io;
 
 import java.lang.ref.WeakReference;
-
-import org.apache.harmony.luni.util.Sorter;
+import java.util.Arrays;
+import java.util.Comparator;
 
 /**
  * This class represents object fields that are saved to the stream, by
@@ -42,7 +42,7 @@
 	// Cached version of intern'ed type String
 	private String typeString;
 
-	private boolean unshared = false;
+	private boolean unshared;
 
 	/**
 	 * Constructs an ObjectStreamField with the given name and the given type
@@ -148,7 +148,7 @@
 	 */
 	public Class<?> getType() {
 		if (type instanceof WeakReference) {
-			return ((WeakReference<Class<?>>) type).get();
+			return (Class<?>)((WeakReference) type).get();
 		}
 		return (Class<?>) type;
 	}
@@ -160,7 +160,7 @@
 	 * @return A char, the typecode of the class
 	 */
 	public char getTypeCode() {
-		Class t = getType();
+		Class<?> t = getType();
 		if (t == Integer.TYPE) {
 			return 'I';
 		}
@@ -202,7 +202,7 @@
 			return null;
 		}
 		if (typeString == null) {
-			Class t = getType();
+			Class<?> t = getType();
 			String typeName = t.getName().replace('.', '/');
 			String str = (t.isArray()) ? typeName : ("L" + typeName + ';'); //$NON-NLS-1$
 			typeString = str.intern();
@@ -218,7 +218,7 @@
 	 *         type of this field is a regular class.
 	 */
 	public boolean isPrimitive() {
-		Class t = getType();
+		Class<?> t = getType();
 		return t != null && t.isPrimitive();
 	}
 
@@ -253,14 +253,12 @@
 	static void sortFields(ObjectStreamField[] fields) {
 		// Sort if necessary
 		if (fields.length > 1) {
-			Sorter.Comparator fieldDescComparator = new Sorter.Comparator() {
-				public int compare(Object o1, Object o2) {
-					ObjectStreamField f1 = (ObjectStreamField) o1;
-					ObjectStreamField f2 = (ObjectStreamField) o2;
+			Comparator<ObjectStreamField> fieldDescComparator = new Comparator<ObjectStreamField>() {
+				public int compare(ObjectStreamField f1, ObjectStreamField f2) {
 					return f1.compareTo(f2);
 				}
 			};
-			Sorter.sort(fields, fieldDescComparator);
+			Arrays.sort(fields, fieldDescComparator);
 		}
 	}
 
@@ -299,7 +297,7 @@
 			className = className.substring(1, className.length() - 1);
 		}
 		try {
-			Class cl = Class.forName(className, false, loader);
+			Class<?> cl = Class.forName(className, false, loader);
 			type = (cl.getClassLoader() == null) ? cl : new WeakReference<Class<?>>(cl);
 		} catch (ClassNotFoundException e) {
 			// Ignored

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/OutputStreamWriter.java Fri Jun 16 20:33:51 2006
@@ -29,7 +29,7 @@
 /**
  * OutputStreamWriter is a class for turning a character output stream into a
  * byte output stream. The conversion of Unicode characters to their byte
- * equivalents is determinded by the converter used. By default, the encoding is
+ * equivalents is determined by the converter used. By default, the encoding is
  * ISO8859_1 (ISO-Latin-1) but can be changed by calling the constructor which
  * takes an encoding.
  * 
@@ -56,8 +56,9 @@
 	public OutputStreamWriter(OutputStream out) {
 		super(out);
 		this.out = out;
-		String encoding = (String) AccessController
-				.doPrivileged(new PriviAction("file.encoding", "ISO8859_1")); //$NON-NLS-1$ //$NON-NLS-2$
+		String encoding = AccessController
+                .doPrivileged(new PriviAction<String>(
+                        "file.encoding", "ISO8859_1")); //$NON-NLS-1$ //$NON-NLS-2$
 		encoder = Charset.forName(encoding).newEncoder();
 		encoder.onMalformedInput(CodingErrorAction.REPLACE);
 		encoder.onUnmappableCharacter(CodingErrorAction.REPLACE);

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintStream.java Fri Jun 16 20:33:51 2006
@@ -15,7 +15,6 @@
 
 package java.io;
 
-
 import java.nio.charset.Charset;
 import java.security.AccessController;
 import java.util.Formatter;
@@ -29,7 +28,7 @@
  * PrintStream is a class which takes an OutputStream and provides convenience
  * methods for printing common data types in a human readable format on the
  * stream. This is not to be confused with DataOutputStream which is used for
- * encoding common datatypes so that they can be read back in. No IOExceptions
+ * encoding common data types so that they can be read back in. No IOExceptions
  * are thrown by this class. Instead, callers should call checkError() to see if
  * a problem has been encountered in this Stream.
  * 
@@ -45,18 +44,18 @@
 	/**
 	 * indicates whether or not this PrintStream has incurred an error.
 	 */
-	boolean ioError = false;
+	boolean ioError;
 
 	/**
 	 * indicates whether or not this PrintStream should flush its contents after
 	 * printing a new line.
 	 */
-	boolean autoflush = false;
+	boolean autoflush;
 
 	private String encoding;
 
-	private final String lineSeparator = (String) AccessController
-			.doPrivileged(new PriviAction("line.separator")); //$NON-NLS-1$
+	private final String lineSeparator = AccessController
+			.doPrivileged(new PriviAction<String>("line.separator")); //$NON-NLS-1$
 
 	static final String TOKEN_NULL = "null"; //$NON-NLS-1$
 
@@ -73,8 +72,9 @@
 	 */
 	public PrintStream(OutputStream out) {
 		super(out);
-		if (out == null)
-			throw new NullPointerException();
+		if (out == null) {
+            throw new NullPointerException();
+        }
 	}
 
 	/**
@@ -91,8 +91,9 @@
 	 */
 	public PrintStream(OutputStream out, boolean autoflush) {
 		super(out);
-		if (out == null)
-			throw new NullPointerException();
+		if (out == null) {
+            throw new NullPointerException();
+        }
 		this.autoflush = autoflush;
 	}
 
@@ -116,11 +117,13 @@
 	public PrintStream(OutputStream out, boolean autoflush, String enc)
 			throws UnsupportedEncodingException {
 		super(out);
-		if (out == null)
-			throw new NullPointerException();
+		if (out == null) {
+            throw new NullPointerException();
+        }
 		this.autoflush = autoflush;
-		if (!Charset.isSupported(enc))
-			throw new UnsupportedEncodingException(enc);
+		if (!Charset.isSupported(enc)) {
+            throw new UnsupportedEncodingException(enc);
+        }
 		encoding = enc;
 	}
 
@@ -163,10 +166,12 @@
 	public PrintStream(File file, String csn) throws FileNotFoundException,
 			UnsupportedEncodingException {
 		super(new FileOutputStream(file));
-		if (csn == null)
-			throw new NullPointerException();
-		if (!Charset.isSupported(csn))
-			throw new UnsupportedEncodingException();
+		if (csn == null) {
+            throw new NullPointerException();
+        }
+		if (!Charset.isSupported(csn)) {
+            throw new UnsupportedEncodingException();
+        }
 		encoding = csn;
 	}
 
@@ -216,15 +221,16 @@
 	/**
 	 * Answers a boolean indicating whether or not this PrintStream has
 	 * encountered an error. If so, the receiver should probably be closed since
-	 * futher writes will not actually take place. A side effect of calling
+	 * further writes will not actually take place. A side effect of calling
 	 * checkError is that the target OutputStream is flushed.
 	 * 
 	 * @return <code>true</code> if an error occurred in this PrintStream,
 	 *         <code>false</code> otherwise.
 	 */
 	public boolean checkError() {
-		if (out != null)
-			flush();
+		if (out != null) {
+            flush();
+        }
 		return ioError;
 	}
 
@@ -473,10 +479,11 @@
 			}
 
 			try {
-				if (encoding == null)
-					write(str.getBytes());
-				else
-					write(str.getBytes(encoding));
+				if (encoding == null) {
+                    write(str.getBytes());
+                } else {
+                    write(str.getBytes(encoding));
+                }
 			} catch (IOException e) {
 				setError();
 			}
@@ -648,17 +655,19 @@
 					}
 					try {
 						out.write(buffer, offset, count);
-						if (autoflush)
-							flush();
+						if (autoflush) {
+                            flush();
+                        }
 					} catch (IOException e) {
 						setError();
 					}
 				}
-			} else
-				throw new ArrayIndexOutOfBoundsException(org.apache.harmony.luni.util.Msg
-						.getString("K002f")); //$NON-NLS-1$
-		} else
-			throw new NullPointerException();
+			} else {
+                throw new ArrayIndexOutOfBoundsException(Msg.getString("K002f")); //$NON-NLS-1$
+            }
+		} else {
+            throw new NullPointerException();
+        }
 	}
 
 	/**
@@ -680,8 +689,9 @@
 			}
 			try {
 				out.write(oneByte);
-				if (autoflush && (oneByte & 0xFF) == '\n')
-					flush();
+				if (autoflush && (oneByte & 0xFF) == '\n') {
+                    flush();
+                }
 			} catch (IOException e) {
 				setError();
 			}
@@ -723,27 +733,24 @@
 	}
 
 	/**
-	 * Append a subsequence of a CharSequence <code>csq</code> to the
-	 * PrintStream. The first char and the last char of the subsequnce is
-	 * specified by the parameter <code>start</code> and <code>end</code>.
-	 * The PrintStream.append(<code>csq</code>) works the same way as
-	 * PrintStream.print (<code>csq</code>csq.subSequence(<code>start</code>,<code>end</code>).toString).If
-	 * <code>csq</code> is null, then "null" will be substituted for
-	 * <code>csq</code>.
-	 * 
-	 * @param csq
-	 *            The CharSequence appended to the PrintStream.
-	 * @param start
-	 *            The index of the first char in the CharSequence appended to
-	 *            the PrintStream.
-	 * @param end
-	 *            The index of the char after the last one in the CharSequence
-	 *            appended to the PrintStream.
-	 * @return The PrintStream.
-	 * @throws IndexOutOfBoundsException
-	 *             If start is less than end, end is greater than the length of
-	 *             the CharSequence, or start or end is negative.
-	 */
+     * Append a subsequence of a CharSequence <code>csq</code> to the
+     * PrintStream. The first char and the last char of the subsequnce is
+     * specified by the parameter <code>start</code> and <code>end</code>.
+     * The PrintStream.append(<code>csq</code>) works the same way as
+     * PrintStream.print (<code>csq</code>csq.subSequence(<code>start</code>,
+     * <code>end</code>).toString). If <code>csq</code> is null, then
+     * "null" will be substituted for <code>csq</code>.
+     * 
+     * @param csq The CharSequence appended to the PrintStream.
+     * @param start The index of the first char in the CharSequence appended to
+     *        the PrintStream.
+     * @param end The index of the char after the last one in the CharSequence
+     *        appended to the PrintStream.
+     * @return The PrintStream.
+     * @throws IndexOutOfBoundsException If start is less than end, end is
+     *         greater than the length of the CharSequence, or start or end is
+     *         negative.
+     */
 	public PrintStream append(CharSequence csq, int start, int end) {
 		if (null == csq) {
 			print(TOKEN_NULL.substring(start, end));

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/PrintWriter.java Fri Jun 16 20:33:51 2006
@@ -15,7 +15,6 @@
 
 package java.io;
 
-
 import java.security.AccessController;
 import java.util.Formatter;
 import java.util.IllegalFormatException;
@@ -41,16 +40,16 @@
 	/**
 	 * indicates whether or not this PrintWriter has incurred an error.
 	 */
-	boolean ioError = false;
+	boolean ioError;
 
 	/**
 	 * indicates whether or not this PrintWriter should flush its contents after
 	 * printing a new line.
 	 */
-	boolean autoflush = false;
+	boolean autoflush;
 
-	private final String lineSeparator = (String) AccessController
-			.doPrivileged(new PriviAction("line.separator")); //$NON-NLS-1$
+	private final String lineSeparator = AccessController
+            .doPrivileged(new PriviAction<String>("line.separator")); //$NON-NLS-1$
 
 	/**
 	 * Constructs a new PrintWriter on the OutputStream <code>out</code>. All
@@ -198,14 +197,15 @@
     /**
 	 * Answers a boolean indicating whether or not this PrintWriter has
 	 * encountered an error. If so, the receiver should probably be closed since
-	 * futher writes will not actually take place. A side effect of calling
+	 * further writes will not actually take place. A side effect of calling
 	 * checkError is that the target Writer is flushed.
 	 * 
 	 * @return boolean has an error occurred in this PrintWriter.
 	 */
 	public boolean checkError() {
-		if (out != null)
-			flush();
+		if (out != null) {
+            flush();
+        }
 		return ioError;
 	}
 
@@ -362,8 +362,9 @@
 
 	private void newline() {
 		print(lineSeparator);
-		if (autoflush)
-			flush();
+		if (autoflush) {
+            flush();
+        }
 	}
 
 	/**
@@ -693,7 +694,7 @@
 	 * Append a CharSequence <code>csq</code> to the PrintWriter. The
 	 * PrintWriter.append(<code>csq</code>) works the same way as
 	 * PrintWriter.write(<code>csq</code>.toString()). If <code>csq</code>
-	 * is null, then "null" will be subsituted for <code>csq</code>
+	 * is null, then "null" will be substituted for <code>csq</code>
 	 * 
 	 * @override Writer.append
 	 * @param csq
@@ -711,7 +712,7 @@
 
 	/**
 	 * Append a subsequence of a CharSequence <code>csq</code> to the
-	 * PrintWriter. The first char and the last char of the subsequnce is
+	 * PrintWriter. The first char and the last char of the subsequence is
 	 * specified by the parameter <code>start</code> and <code>end</code>.
 	 * The PrintWriter.append(<code>csq</code>) works the same way as
 	 * PrintWriter.write(<code>csq</code>.subSequence(<code>start</code>,<code>end</code>).toString).If

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SequenceInputStream.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SequenceInputStream.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SequenceInputStream.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SequenceInputStream.java Fri Jun 16 20:33:51 2006
@@ -16,6 +16,7 @@
 package java.io;
 
 import java.util.Enumeration;
+import java.util.Vector;
 
 
 /**
@@ -28,7 +29,7 @@
 	/**
 	 * An enumeration which will return types of InputStream.
 	 */
-	java.util.Enumeration e;
+	Enumeration<? extends InputStream> e;
 
 	/**
 	 * The current input stream.
@@ -47,12 +48,13 @@
 	 */
 	public SequenceInputStream(InputStream s1, InputStream s2) {
 		if (s1 != null && s2 != null) {
-			java.util.Vector inVector = new java.util.Vector(1);
+			Vector<InputStream> inVector = new Vector<InputStream>(1);
 			inVector.addElement(s2);
 			e = inVector.elements();
 			in = s1;
-		} else
-			throw new NullPointerException();
+		} else {
+            throw new NullPointerException();
+        }
 	}
 
 	/**
@@ -66,9 +68,10 @@
 	public SequenceInputStream(Enumeration<? extends InputStream> e) {
 		this.e = e;
 		if (e.hasMoreElements()) {
-			in = (InputStream) e.nextElement();
-			if (in == null)
-				throw new NullPointerException();
+			in = e.nextElement();
+			if (in == null) {
+                throw new NullPointerException();
+            }
 		}
 	}
 
@@ -82,8 +85,9 @@
 	 *             If an error occurs in this InputStream.
 	 */
 	public int available() throws IOException {
-		if (e != null && in != null)
-			return in.available();
+		if (e != null && in != null) {
+            return in.available();
+        }
 		return 0;
 	}
 
@@ -97,11 +101,13 @@
 	 */
 	public void close() throws IOException {
 		if (e != null) {
-			while (in != null)
-				nextStream();
+			while (in != null) {
+                nextStream();
+            }
 			e = null;
-		} else
-			throw new IOException(org.apache.harmony.luni.util.Msg.getString("K00b7")); //$NON-NLS-1$
+		} else {
+            throw new IOException(org.apache.harmony.luni.util.Msg.getString("K00b7")); //$NON-NLS-1$
+        }
 	}
 
 	/**
@@ -109,12 +115,14 @@
 	 * @throws IOException 
 	 */
 	private void nextStream() throws IOException {
-		if (in != null)
-			in.close();
+		if (in != null) {
+            in.close();
+        }
 		if (e.hasMoreElements()) {
-			in = (InputStream) e.nextElement();
-			if (in == null)
-				throw new NullPointerException();
+			in = e.nextElement();
+			if (in == null) {
+                throw new NullPointerException();
+            }
 		} else {
 			in = null;
 		}
@@ -134,8 +142,9 @@
 	public int read() throws IOException {
 		while (in != null) {
 			int result = in.read();
-			if (result >= 0)
-				return result;
+			if (result >= 0) {
+                return result;
+            }
 			nextStream();
 		}
 		return -1;
@@ -165,24 +174,28 @@
 			if (offset >= 0 && count >= 0) {
 				while (in != null) {
 					long result = in.skip(count);
-					if (result >= 0)
-						return (int) result;
+					if (result >= 0) {
+                        return (int) result;
+                    }
 					nextStream();
 				}
-			} else
-				throw new ArrayIndexOutOfBoundsException();
+			} else {
+                throw new ArrayIndexOutOfBoundsException();
+            }
 		} else {
 			// avoid int overflow
 			if (0 <= offset && offset <= buffer.length && 0 <= count
 					&& count <= buffer.length - offset) {
 				while (in != null) {
 					int result = in.read(buffer, offset, count);
-					if (result >= 0)
-						return result;
+					if (result >= 0) {
+                        return result;
+                    }
 					nextStream();
 				}
-			} else
-				throw new ArrayIndexOutOfBoundsException();
+			} else {
+                throw new ArrayIndexOutOfBoundsException();
+            }
 		}
 		return -1;
 	}

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SerializablePermission.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SerializablePermission.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SerializablePermission.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/SerializablePermission.java Fri Jun 16 20:33:51 2006
@@ -15,6 +15,8 @@
 
 package java.io;
 
+import java.security.BasicPermission;
+
 
 /**
  * SerializablePermission objects represent permission to access unsafe
@@ -28,9 +30,10 @@
  * 
  * @see ObjectStreamConstants
  */
-public final class SerializablePermission extends java.security.BasicPermission {
+public final class SerializablePermission extends BasicPermission {
 	private static final long serialVersionUID = 8537212141160296410L;
 
+    //Serializable field
 	private String actions;
 
 	/**

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ClassCastException.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ClassCastException.java?rev=414992&r1=414991&r2=414992&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ClassCastException.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/lang/ClassCastException.java Fri Jun 16 20:33:51 2006
@@ -15,10 +15,11 @@
 
 package java.lang;
 
+import org.apache.harmony.luni.util.Msg;
 
 /**
  * This runtime exception is thrown when a program attempts to cast a an object
- * to a type which it is not compatable with.
+ * to a type which it is not compatible with.
  * 
  */
 public class ClassCastException extends RuntimeException {
@@ -53,8 +54,8 @@
 	 * @param castClass
 	 *            Class The class being cast to.
 	 */
-	ClassCastException(Class instanceClass, Class castClass) {
-		super(org.apache.harmony.luni.util.Msg.getString("K0340", instanceClass.getName(),
-				castClass.getName()));
-	}
+	ClassCastException(Class<?> instanceClass, Class<?> castClass) {
+        super(Msg.getString("K0340", instanceClass.getName(), castClass
+                .getName()));
+    }
 }