You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by py...@apache.org on 2006/08/16 07:48:39 UTC
svn commit: r431833 - in
/incubator/harmony/enhanced/classlib/trunk/modules/luni/src:
main/java/java/io/ObjectOutputStream.java
test/java/tests/api/java/io/ObjectOutputStreamTest.java
Author: pyang
Date: Tue Aug 15 22:48:38 2006
New Revision: 431833
URL: http://svn.apache.org/viewvc?rev=431833&view=rev
Log:
Patch applied for HARMONY-1192 ([classlib][luni] java.io.ObjectOutputStream.writeObject() behaves incorrect when trying to serialize a non serializable object)
Modified:
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectOutputStream.java
incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/ObjectOutputStreamTest.java
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectOutputStream.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectOutputStream.java?rev=431833&r1=431832&r2=431833&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectOutputStream.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/main/java/java/io/ObjectOutputStream.java Tue Aug 15 22:48:38 2006
@@ -1750,9 +1750,6 @@
private void writeObject(Object object, boolean unshared)
throws IOException {
- if (object != null && !ObjectStreamClass.isSerializable(object.getClass())) {
- throw new NotSerializableException(object.getClass().getName());
- }
boolean setOutput = (primitiveTypes == output);
if (setOutput) {
primitiveTypes = null;
@@ -1811,6 +1808,9 @@
private Integer writeObjectInternal(Object object, boolean unshared,
boolean computeClassBasedReplacement,
boolean computeStreamReplacement) throws IOException {
+ if (object != null && !ObjectStreamClass.isSerializable(object.getClass())) {
+ throw new NotSerializableException(object.getClass().getName());
+ }
if (object == null) {
writeNull();
return null;
Modified: incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/ObjectOutputStreamTest.java
URL: http://svn.apache.org/viewvc/incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/ObjectOutputStreamTest.java?rev=431833&r1=431832&r2=431833&view=diff
==============================================================================
--- incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/ObjectOutputStreamTest.java (original)
+++ incubator/harmony/enhanced/classlib/trunk/modules/luni/src/test/java/tests/api/java/io/ObjectOutputStreamTest.java Tue Aug 15 22:48:38 2006
@@ -1,4 +1,4 @@
-/* Copyright 1998, 2005 The Apache Software Foundation or its licensors, as applicable
+/* Copyright 1998, 2006 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.
@@ -32,6 +32,7 @@
import java.io.OutputStream;
import java.io.Serializable;
import java.io.SerializablePermission;
+import java.io.WriteAbortedException;
import java.security.Permission;
import java.util.Arrays;
@@ -927,6 +928,36 @@
oos.close();
ois = new ObjectInputStream(new ByteArrayInputStream(bao.toByteArray()));
assertEquals("Wrote incorrect UTF value", "HelloWorld", ois.readUTF());
+ }
+
+ /**
+ * @tests java.io.ObjectOutputStream#writeObject(java.lang.Object)
+ */
+ public void test_writeObject_Exception() throws ClassNotFoundException, IOException {
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+ ObjectOutputStream oos = new ObjectOutputStream(baos);
+
+ try {
+ oos.writeObject(new Object());
+ fail("should throw ObjectStreamException");
+ } catch (ObjectStreamException e) {
+ // expected
+ } finally {
+ oos.close();
+ baos.close();
+ }
+
+ byte[] bytes = baos.toByteArray();
+ ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(
+ bytes));
+ try {
+ ois.readObject();
+ fail("should throw WriteAbortedException");
+ } catch (WriteAbortedException e) {
+ // expected
+ } finally {
+ ois.close();
+ }
}
/**