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/08/18 03:45:39 UTC

svn commit: r432462 [4/21] - /incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForDumping.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForDumping.java?rev=432462&r1=432461&r2=432462&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForDumping.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForDumping.java Thu Aug 17 18:45:35 2006
@@ -1,229 +1,229 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.io;
-
-
-/**
- * An EmulatedFieldsForDumping is an object that represents a set of emulated
- * fields for an object being dumped. It is a concrete implementation for
- * ObjectOutputStream.PutField
- * 
-
- * @see ObjectOutputStream.PutField
- * @see EmulatedFieldsForLoading
- */
-
-class EmulatedFieldsForDumping extends ObjectOutputStream.PutField {
-	private EmulatedFields emulatedFields; // The actual representation, with a
-											// more powerful API (set&get)
-
-	/**
-	 * Constructs a new instance of EmulatedFieldsForDumping.
-	 * 
-	 * @param streamClass
-	 *            a ObjectStreamClass, which describe the fields to be emulated
-	 *            (names, types, etc).
-	 */
-	EmulatedFieldsForDumping(ObjectStreamClass streamClass) {
-		super();
-		emulatedFields = new EmulatedFields(streamClass.fields(),
-				(ObjectStreamField[]) null);
-	}
-
-	/**
-	 * Return the actual EmulatedFields instance used by the receiver. We have
-	 * the actual work in a separate class so that the code can be shared. The
-	 * receiver has to be of a subclass of PutField.
-	 * 
-	 * @return array of ObjectSlot the receiver represents.
-	 */
-	EmulatedFields emulatedFields() {
-		return emulatedFields;
-	}
-
-	/**
-	 * Find and set the byte value of a given field named <code>name</code> in
-	 * the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, byte value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the char value of a given field named <code>name</code> in
-	 * the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, char value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the double value of a given field named <code>name</code>
-	 * in the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, double value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the float value of a given field named <code>name</code>
-	 * in the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, float value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the int value of a given field named <code>name</code> in
-	 * the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, int value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the long value of a given field named <code>name</code> in
-	 * the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, long value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the Object value of a given field named <code>name</code>
-	 * in the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, Object value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the short value of a given field named <code>name</code>
-	 * in the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, short value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Find and set the boolean value of a given field named <code>name</code>
-	 * in the receiver.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to set
-	 * @param value
-	 *            New value for the field.
-	 * 
-	 */
-	public void put(String name, boolean value) {
-		emulatedFields.put(name, value);
-	}
-
-	/**
-	 * Write the field values to the specified ObjectOutput.
-	 * 
-	 * @param output
-	 *            the ObjectOutput
-	 * 
-	 * @throws IOException
-	 *             If an IO exception happened when writing the field values.
-	 */
-	public void write(ObjectOutput output) throws IOException {
-		EmulatedFields.ObjectSlot[] slots = emulatedFields.slots();
-		for (int i = 0; i < slots.length; i++) {
-			EmulatedFields.ObjectSlot slot = slots[i];
-			Object fieldValue = slot.getFieldValue();
-			Class<?> type = slot.getField().getType();
-			// WARNING - default values exist for each primitive type
-			if (type == Integer.TYPE) {
-				output.writeInt(fieldValue != null ? ((Integer) fieldValue)
-						.intValue() : 0);
-			} else if (type == Byte.TYPE) {
-				output.writeByte(fieldValue != null ? ((Byte) fieldValue)
-						.byteValue() : (byte) 0);
-			} else if (type == Character.TYPE) {
-				output.writeChar(fieldValue != null ? ((Character) fieldValue)
-						.charValue() : (char) 0);
-			} else if (type == Short.TYPE) {
-				output.writeShort(fieldValue != null ? ((Short) fieldValue)
-						.shortValue() : (short) 0);
-			} else if (type == Boolean.TYPE) {
-				output.writeBoolean(fieldValue != null ? ((Boolean) fieldValue)
-						.booleanValue() : false);
-			} else if (type == Long.TYPE) {
-				output.writeLong(fieldValue != null ? ((Long) fieldValue)
-						.longValue() : (long) 0);
-			} else if (type == Float.TYPE) {
-				output.writeFloat(fieldValue != null ? ((Float) fieldValue)
-						.floatValue() : (float) 0);
-			} else if (type == Double.TYPE) {
-				output.writeDouble(fieldValue != null ? ((Double) fieldValue)
-						.doubleValue() : (double) 0);
-			} else {
-				// Either array or Object
-				output.writeObject(fieldValue);
-			}
-		}
-	}
-}
+/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.io;
+
+
+/**
+ * An EmulatedFieldsForDumping is an object that represents a set of emulated
+ * fields for an object being dumped. It is a concrete implementation for
+ * ObjectOutputStream.PutField
+ * 
+
+ * @see ObjectOutputStream.PutField
+ * @see EmulatedFieldsForLoading
+ */
+
+class EmulatedFieldsForDumping extends ObjectOutputStream.PutField {
+	private EmulatedFields emulatedFields; // The actual representation, with a
+											// more powerful API (set&get)
+
+	/**
+	 * Constructs a new instance of EmulatedFieldsForDumping.
+	 * 
+	 * @param streamClass
+	 *            a ObjectStreamClass, which describe the fields to be emulated
+	 *            (names, types, etc).
+	 */
+	EmulatedFieldsForDumping(ObjectStreamClass streamClass) {
+		super();
+		emulatedFields = new EmulatedFields(streamClass.fields(),
+				(ObjectStreamField[]) null);
+	}
+
+	/**
+	 * Return the actual EmulatedFields instance used by the receiver. We have
+	 * the actual work in a separate class so that the code can be shared. The
+	 * receiver has to be of a subclass of PutField.
+	 * 
+	 * @return array of ObjectSlot the receiver represents.
+	 */
+	EmulatedFields emulatedFields() {
+		return emulatedFields;
+	}
+
+	/**
+	 * Find and set the byte value of a given field named <code>name</code> in
+	 * the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, byte value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the char value of a given field named <code>name</code> in
+	 * the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, char value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the double value of a given field named <code>name</code>
+	 * in the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, double value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the float value of a given field named <code>name</code>
+	 * in the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, float value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the int value of a given field named <code>name</code> in
+	 * the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, int value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the long value of a given field named <code>name</code> in
+	 * the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, long value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the Object value of a given field named <code>name</code>
+	 * in the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, Object value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the short value of a given field named <code>name</code>
+	 * in the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, short value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Find and set the boolean value of a given field named <code>name</code>
+	 * in the receiver.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to set
+	 * @param value
+	 *            New value for the field.
+	 * 
+	 */
+	public void put(String name, boolean value) {
+		emulatedFields.put(name, value);
+	}
+
+	/**
+	 * Write the field values to the specified ObjectOutput.
+	 * 
+	 * @param output
+	 *            the ObjectOutput
+	 * 
+	 * @throws IOException
+	 *             If an IO exception happened when writing the field values.
+	 */
+	public void write(ObjectOutput output) throws IOException {
+		EmulatedFields.ObjectSlot[] slots = emulatedFields.slots();
+		for (int i = 0; i < slots.length; i++) {
+			EmulatedFields.ObjectSlot slot = slots[i];
+			Object fieldValue = slot.getFieldValue();
+			Class<?> type = slot.getField().getType();
+			// WARNING - default values exist for each primitive type
+			if (type == Integer.TYPE) {
+				output.writeInt(fieldValue != null ? ((Integer) fieldValue)
+						.intValue() : 0);
+			} else if (type == Byte.TYPE) {
+				output.writeByte(fieldValue != null ? ((Byte) fieldValue)
+						.byteValue() : (byte) 0);
+			} else if (type == Character.TYPE) {
+				output.writeChar(fieldValue != null ? ((Character) fieldValue)
+						.charValue() : (char) 0);
+			} else if (type == Short.TYPE) {
+				output.writeShort(fieldValue != null ? ((Short) fieldValue)
+						.shortValue() : (short) 0);
+			} else if (type == Boolean.TYPE) {
+				output.writeBoolean(fieldValue != null ? ((Boolean) fieldValue)
+						.booleanValue() : false);
+			} else if (type == Long.TYPE) {
+				output.writeLong(fieldValue != null ? ((Long) fieldValue)
+						.longValue() : (long) 0);
+			} else if (type == Float.TYPE) {
+				output.writeFloat(fieldValue != null ? ((Float) fieldValue)
+						.floatValue() : (float) 0);
+			} else if (type == Double.TYPE) {
+				output.writeDouble(fieldValue != null ? ((Double) fieldValue)
+						.doubleValue() : (double) 0);
+			} else {
+				// Either array or Object
+				output.writeObject(fieldValue);
+			}
+		}
+	}
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForDumping.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForLoading.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForLoading.java?rev=432462&r1=432461&r2=432462&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForLoading.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForLoading.java Thu Aug 17 18:45:35 2006
@@ -1,288 +1,288 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.io;
-
-
-/**
- * An EmulatedFieldsForLoading is an object that represents a set of emulated
- * fields for an object being loaded. It is a concrete implementation for
- * ObjectInputStream.GetField
- * 
- * @see ObjectInputStream.GetField
- * @see EmulatedFieldsForDumping
- */
-class EmulatedFieldsForLoading extends ObjectInputStream.GetField {
-	private ObjectStreamClass streamClass; // The class descriptor with the
-											// declared fields the receiver
-											// emulates
-
-	private EmulatedFields emulatedFields; // The actual representation, with a
-											// more powerful API (set&get)
-
-	/**
-	 * Constructs a new instance of EmulatedFieldsForDumping.
-	 * 
-	 * @param streamClass
-	 *            an ObjectStreamClass, defining the class for which to emulate
-	 *            fields.
-	 */
-	EmulatedFieldsForLoading(ObjectStreamClass streamClass) {
-		super();
-		this.streamClass = streamClass;
-		emulatedFields = new EmulatedFields(streamClass.getLoadFields(),
-				streamClass.fields());
-	}
-
-	/**
-	 * Return a boolean indicating if the field named <code>name</code> has
-	 * been assigned a value explicitely (false) or if it still holds a default
-	 * value for the type (true) because it hasn't been assigned to yet.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to test
-	 * @return <code>true</code> if the field holds it default value,
-	 *         <code>false</code> otherwise.
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public boolean defaulted(String name) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.defaulted(name);
-	}
-
-	/**
-	 * Return the actual EmulatedFields instance used by the receiver. We have
-	 * the actual work in a separate class so that the code can be shared. The
-	 * receiver has to be of a subclass of GetField.
-	 * 
-	 * @return array of ObjectSlot the receiver represents.
-	 */
-	EmulatedFields emulatedFields() {
-		return emulatedFields;
-	}
-
-	/**
-	 * Find and return the byte value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public byte get(String name, byte defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the char value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public char get(String name, char defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the double value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public double get(String name, double defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the float value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public float get(String name, float defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the int value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public int get(String name, int defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the long value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public long get(String name, long defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the Object value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public Object get(String name, Object defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the short value of a given field named <code>name</code>
-	 * in the receiver. If the field has not been assigned any value yet, the
-	 * default value <code>defaultValue</code> is returned instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public short get(String name, short defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Find and return the boolean value of a given field named
-	 * <code>name</code> in the receiver. If the field has not been assigned
-	 * any value yet, the default value <code>defaultValue</code> is returned
-	 * instead.
-	 * 
-	 * @param name
-	 *            A String, the name of the field to find
-	 * @param defaultValue
-	 *            Return value in case the field has not been assigned to yet.
-	 * @return the value of the given field if it has been assigned, or the
-	 *         default value otherwise
-	 * 
-	 * @throws IOException
-	 *             If an IO error occurs
-	 * @throws IllegalArgumentException
-	 *             If the corresponding field can not be found.
-	 */
-	public boolean get(String name, boolean defaultValue) throws IOException,
-			IllegalArgumentException {
-		return emulatedFields.get(name, defaultValue);
-	}
-
-	/**
-	 * Return the class descriptor for which the emulated fields are defined.
-	 * 
-	 * @return ObjectStreamClass The class descriptor for which the emulated
-	 *         fields are defined.
-	 */
-	public ObjectStreamClass getObjectStreamClass() {
-		return streamClass;
-	}
-}
+/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.io;
+
+
+/**
+ * An EmulatedFieldsForLoading is an object that represents a set of emulated
+ * fields for an object being loaded. It is a concrete implementation for
+ * ObjectInputStream.GetField
+ * 
+ * @see ObjectInputStream.GetField
+ * @see EmulatedFieldsForDumping
+ */
+class EmulatedFieldsForLoading extends ObjectInputStream.GetField {
+	private ObjectStreamClass streamClass; // The class descriptor with the
+											// declared fields the receiver
+											// emulates
+
+	private EmulatedFields emulatedFields; // The actual representation, with a
+											// more powerful API (set&get)
+
+	/**
+	 * Constructs a new instance of EmulatedFieldsForDumping.
+	 * 
+	 * @param streamClass
+	 *            an ObjectStreamClass, defining the class for which to emulate
+	 *            fields.
+	 */
+	EmulatedFieldsForLoading(ObjectStreamClass streamClass) {
+		super();
+		this.streamClass = streamClass;
+		emulatedFields = new EmulatedFields(streamClass.getLoadFields(),
+				streamClass.fields());
+	}
+
+	/**
+	 * Return a boolean indicating if the field named <code>name</code> has
+	 * been assigned a value explicitely (false) or if it still holds a default
+	 * value for the type (true) because it hasn't been assigned to yet.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to test
+	 * @return <code>true</code> if the field holds it default value,
+	 *         <code>false</code> otherwise.
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public boolean defaulted(String name) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.defaulted(name);
+	}
+
+	/**
+	 * Return the actual EmulatedFields instance used by the receiver. We have
+	 * the actual work in a separate class so that the code can be shared. The
+	 * receiver has to be of a subclass of GetField.
+	 * 
+	 * @return array of ObjectSlot the receiver represents.
+	 */
+	EmulatedFields emulatedFields() {
+		return emulatedFields;
+	}
+
+	/**
+	 * Find and return the byte value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public byte get(String name, byte defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the char value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public char get(String name, char defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the double value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public double get(String name, double defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the float value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public float get(String name, float defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the int value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public int get(String name, int defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the long value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public long get(String name, long defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the Object value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public Object get(String name, Object defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the short value of a given field named <code>name</code>
+	 * in the receiver. If the field has not been assigned any value yet, the
+	 * default value <code>defaultValue</code> is returned instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public short get(String name, short defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Find and return the boolean value of a given field named
+	 * <code>name</code> in the receiver. If the field has not been assigned
+	 * any value yet, the default value <code>defaultValue</code> is returned
+	 * instead.
+	 * 
+	 * @param name
+	 *            A String, the name of the field to find
+	 * @param defaultValue
+	 *            Return value in case the field has not been assigned to yet.
+	 * @return the value of the given field if it has been assigned, or the
+	 *         default value otherwise
+	 * 
+	 * @throws IOException
+	 *             If an IO error occurs
+	 * @throws IllegalArgumentException
+	 *             If the corresponding field can not be found.
+	 */
+	public boolean get(String name, boolean defaultValue) throws IOException,
+			IllegalArgumentException {
+		return emulatedFields.get(name, defaultValue);
+	}
+
+	/**
+	 * Return the class descriptor for which the emulated fields are defined.
+	 * 
+	 * @return ObjectStreamClass The class descriptor for which the emulated
+	 *         fields are defined.
+	 */
+	public ObjectStreamClass getObjectStreamClass() {
+		return streamClass;
+	}
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/EmulatedFieldsForLoading.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Externalizable.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Externalizable.java?rev=432462&r1=432461&r2=432462&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Externalizable.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Externalizable.java Thu Aug 17 18:45:35 2006
@@ -1,51 +1,51 @@
-/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
- * 
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *     http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package java.io;
-
-
-/**
- * Objects that want to be serialized/deserialized using
- * ObjectOutputStream/ObjectInputStream but defining their own byte
- * representation should implement this interface.
- * 
- * 
- */
-public interface Externalizable extends Serializable {
-	/**
-	 * Reads the next object from the ObjectInput <code>input</code>
-	 * 
-	 * @param input
-	 *            the ObjectInput from which the next object is read
-	 * 
-	 * @throws IOException
-	 *             If an error occurs attempting to read from this ObjectInput.
-	 * @throws ClassNotFoundException
-	 *             If the class of the instance being loaded cannot be found
-	 */
-	public void readExternal(ObjectInput input) throws IOException,
-			java.lang.ClassNotFoundException;
-
-	/**
-	 * Writes the receiver to the ObjectOutput <code>output</code>.
-	 * 
-	 * @param output
-	 *            an ObjectOutput where to write the object
-	 * 
-	 * @throws IOException
-	 *             If an error occurs attempting to write to the ObjectOutput.
-	 */
-	public void writeExternal(ObjectOutput output) throws IOException;
-}
+/* Copyright 1998, 2004 The Apache Software Foundation or its licensors, as applicable
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package java.io;
+
+
+/**
+ * Objects that want to be serialized/deserialized using
+ * ObjectOutputStream/ObjectInputStream but defining their own byte
+ * representation should implement this interface.
+ * 
+ * 
+ */
+public interface Externalizable extends Serializable {
+	/**
+	 * Reads the next object from the ObjectInput <code>input</code>
+	 * 
+	 * @param input
+	 *            the ObjectInput from which the next object is read
+	 * 
+	 * @throws IOException
+	 *             If an error occurs attempting to read from this ObjectInput.
+	 * @throws ClassNotFoundException
+	 *             If the class of the instance being loaded cannot be found
+	 */
+	public void readExternal(ObjectInput input) throws IOException,
+			java.lang.ClassNotFoundException;
+
+	/**
+	 * Writes the receiver to the ObjectOutput <code>output</code>.
+	 * 
+	 * @param output
+	 *            an ObjectOutput where to write the object
+	 * 
+	 * @throws IOException
+	 *             If an error occurs attempting to write to the ObjectOutput.
+	 */
+	public void writeExternal(ObjectOutput output) throws IOException;
+}

Propchange: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/Externalizable.java
------------------------------------------------------------------------------
    svn:eol-style = native