You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by "Martin Grigorov (Resolved) (JIRA)" <ji...@apache.org> on 2011/11/27 12:50:40 UTC

[jira] [Resolved] (WICKET-4264) JavaSerializer Does Not Call SerializableChecker

     [ https://issues.apache.org/jira/browse/WICKET-4264?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Martin Grigorov resolved WICKET-4264.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 6.0.0
                   1.5.4

Thanks for the patch, James!
I fixed it almost like you did in the patch, just I preserved the method signatures.
No API breaks, no new classes used.
                
> JavaSerializer Does Not Call SerializableChecker
> ------------------------------------------------
>
>                 Key: WICKET-4264
>                 URL: https://issues.apache.org/jira/browse/WICKET-4264
>             Project: Wicket
>          Issue Type: Bug
>          Components: wicket
>    Affects Versions: 1.5.0, 1.5.1, 1.5.2, 1.5.3
>         Environment: Apache Maven 3.0.3 (r1075438; 2011-02-28 12:31:09-0500)
> Maven home: /usr/local/programs/current/maven
> Java version: 1.7.0_01, vendor: Oracle Corporation
> Java home: /usr/local/programs/jdk1.7.0_01/jre
> Default locale: en_US, platform encoding: UTF-8
> OS name: "linux", version: "2.6.35.14-103.fc14.x86_64", arch: "amd64", family: "unix"
>            Reporter: James Carman
>            Assignee: Martin Grigorov
>             Fix For: 1.5.4, 6.0.0
>
>         Attachments: WICKET-4264.patch
>
>
> In the new JavaSerializer class, it has a CheckerOutputStream which extends ObjectOutputStream.  The intent is to use the ObjectOutputStream.writeObjectOverride() support.  However, the writeObjectOverride() method is never called unless you use the no-arg constructor from the ObjectOutputStream class (which sets the "enableOverride" flag to true).  The CheckerOutputStream uses the ObjectOutputStream(OutputStream) constructor in its constructor.  Worse yet, even if the writeObjectOverride() method were to be  called, it would create a StackOverflowError because it's calling the super.writeObject() method which is what called it in the first place (infinite recursion).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira