You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Oliver Deakin (JIRA)" <ji...@apache.org> on 2010/03/26 12:04:27 UTC

[jira] Created: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

[classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
--------------------------------------------------------------------------------------------------------

                 Key: HARMONY-6483
                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
             Project: Harmony
          Issue Type: Bug
          Components: Classlib
            Reporter: Oliver Deakin


Running the following test:

import java.io.*;
import java.io.ObjectOutputStream.PutField;
class Test2 {
    public static void main(String[] args) throws Exception {
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
        oos.writeObject(new OutputObject());
    }
    static class OutputObject implements Serializable {
        private void writeObject(ObjectOutputStream oos) throws IOException {
            ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
            ObjectOutputStream.PutField putField = oos.putFields();
            putField.write(oos2);
        }
    }
}


on the RI produces:
Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
        at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
        at Test2$OutputObject.writeObject(Test2.java:14)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
        at java.lang.reflect.Method.invoke(Method.java:624)
        at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
        at Test2.main(Test2.java:7)

whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

Posted by "Hudson (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-6483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12850170#action_12850170 ] 

Hudson commented on HARMONY-6483:
---------------------------------

Integrated in Harmony-1.5-head-linux-x86_64 #734 (See [http://hudson.zones.apache.org/hudson/job/Harmony-1.5-head-linux-x86_64/734/])
    Commit fix and regression test for  ([classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream)


> [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6483
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Oliver Deakin
>            Assignee: Oliver Deakin
>             Fix For: 6.0M2, 5.0M14
>
>
> Running the following test:
> import java.io.*;
> import java.io.ObjectOutputStream.PutField;
> class Test2 {
>     public static void main(String[] args) throws Exception {
>         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
>         oos.writeObject(new OutputObject());
>     }
>     static class OutputObject implements Serializable {
>         private void writeObject(ObjectOutputStream oos) throws IOException {
>             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
>             ObjectOutputStream.PutField putField = oos.putFields();
>             putField.write(oos2);
>         }
>     }
> }
> on the RI produces:
> Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
>         at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
>         at Test2$OutputObject.writeObject(Test2.java:14)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:624)
>         at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
>         at Test2.main(Test2.java:7)
> whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Assigned: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

Posted by "Oliver Deakin (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-6483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oliver Deakin reassigned HARMONY-6483:
--------------------------------------

    Assignee: Oliver Deakin

> [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6483
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Oliver Deakin
>            Assignee: Oliver Deakin
>
> Running the following test:
> import java.io.*;
> import java.io.ObjectOutputStream.PutField;
> class Test2 {
>     public static void main(String[] args) throws Exception {
>         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
>         oos.writeObject(new OutputObject());
>     }
>     static class OutputObject implements Serializable {
>         private void writeObject(ObjectOutputStream oos) throws IOException {
>             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
>             ObjectOutputStream.PutField putField = oos.putFields();
>             putField.write(oos2);
>         }
>     }
> }
> on the RI produces:
> Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
>         at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
>         at Test2$OutputObject.writeObject(Test2.java:14)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:624)
>         at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
>         at Test2.main(Test2.java:7)
> whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

Posted by "Oliver Deakin (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/HARMONY-6483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12850085#action_12850085 ] 

Oliver Deakin commented on HARMONY-6483:
----------------------------------------

It's specced that we throw an IllegalArgumentException for the above case, as the RI does. Looks like our java.io.EmulatedFieldsForDumping class needs to keep track of the ObjectOutputStream that created it and check against that stream when it's write() method is called. I'll put together a fix and test case.

> [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6483
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Oliver Deakin
>            Assignee: Oliver Deakin
>
> Running the following test:
> import java.io.*;
> import java.io.ObjectOutputStream.PutField;
> class Test2 {
>     public static void main(String[] args) throws Exception {
>         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
>         oos.writeObject(new OutputObject());
>     }
>     static class OutputObject implements Serializable {
>         private void writeObject(ObjectOutputStream oos) throws IOException {
>             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
>             ObjectOutputStream.PutField putField = oos.putFields();
>             putField.write(oos2);
>         }
>     }
> }
> on the RI produces:
> Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
>         at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
>         at Test2$OutputObject.writeObject(Test2.java:14)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:624)
>         at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
>         at Test2.main(Test2.java:7)
> whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Resolved: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

Posted by "Oliver Deakin (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-6483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oliver Deakin resolved HARMONY-6483.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 5.0M14
                   6.0M2

Fix and regression test applied at repo revision r927791.

> [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6483
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Oliver Deakin
>            Assignee: Oliver Deakin
>             Fix For: 6.0M2, 5.0M14
>
>
> Running the following test:
> import java.io.*;
> import java.io.ObjectOutputStream.PutField;
> class Test2 {
>     public static void main(String[] args) throws Exception {
>         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
>         oos.writeObject(new OutputObject());
>     }
>     static class OutputObject implements Serializable {
>         private void writeObject(ObjectOutputStream oos) throws IOException {
>             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
>             ObjectOutputStream.PutField putField = oos.putFields();
>             putField.write(oos2);
>         }
>     }
> }
> on the RI produces:
> Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
>         at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
>         at Test2$OutputObject.writeObject(Test2.java:14)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:624)
>         at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
>         at Test2.main(Test2.java:7)
> whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


[jira] Closed: (HARMONY-6483) [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream

Posted by "Oliver Deakin (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/HARMONY-6483?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oliver Deakin closed HARMONY-6483.
----------------------------------


Externalised exception message at repo revision r927802. Closing...

> [classlib][luni] No IllegalArgumentException thrown by PutField.write() when writing to the wrong stream
> --------------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-6483
>                 URL: https://issues.apache.org/jira/browse/HARMONY-6483
>             Project: Harmony
>          Issue Type: Bug
>          Components: Classlib
>            Reporter: Oliver Deakin
>            Assignee: Oliver Deakin
>             Fix For: 6.0M2, 5.0M14
>
>
> Running the following test:
> import java.io.*;
> import java.io.ObjectOutputStream.PutField;
> class Test2 {
>     public static void main(String[] args) throws Exception {
>         ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(new File("testfile")));
>         oos.writeObject(new OutputObject());
>     }
>     static class OutputObject implements Serializable {
>         private void writeObject(ObjectOutputStream oos) throws IOException {
>             ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(new File("testfile2")));
>             ObjectOutputStream.PutField putField = oos.putFields();
>             putField.write(oos2);
>         }
>     }
> }
> on the RI produces:
> Exception in thread "main" java.lang.IllegalArgumentException: wrong stream
>         at java.io.ObjectOutputStream$PutFieldImpl.write(ObjectOutputStream.java:1670)
>         at Test2$OutputObject.writeObject(Test2.java:14)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:63)
>         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:55)
>         at java.lang.reflect.Method.invoke(Method.java:624)
>         at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:973)
>         at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1494)
>         at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1425)
>         at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1183)
>         at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:359)
>         at Test2.main(Test2.java:7)
> whereas on Harmony it completes without exception.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.