[ 
https://issues.apache.org/jira/browse/MRUNIT-70?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13226756#comment-13226756
 ] 

Jim Donofrio commented on MRUNIT-70:
------------------------------------

Ok I get it now, the contract for deserialize states that "If the object t is 
non-null then this deserializer may set its internal state to the next object 
read from the input stream. " So the deserialize method may still return a new 
object instead of changing the state if the object passed in. 
WritableSerialization changes the state of the non null object passed in. 
JavaSerialization ignores the object passed in and always return a new object. 

    public T deserialize(T object) throws IOException {
      try {
        // ignore passed-in object
        return (T) ois.readObject();
      } catch (ClassNotFoundException e) {
        throw new IOException(e.toString());
      }
    }
                
> copy(orig, conf) in Serialization shouldn't require objects to have a no-args 
> constructor, and copy(orig, copy, conf) seems to violate contract for 
> deserializer.deserialize()
> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: MRUNIT-70
>                 URL: https://issues.apache.org/jira/browse/MRUNIT-70
>             Project: MRUnit
>          Issue Type: Bug
>    Affects Versions: 0.8.0
>            Reporter: Meloss Xeloss
>            Priority: Minor
>         Attachments: MRUNIT-70-1.patch
>
>
> The copy(orig, conf) method requires objects to have a no-args constructor, 
> which is non-ideal, since it passes on to Deserializer.deserialize, which can 
> create a new object if passed in null. Additionally, the contract for 
> deserialize only _can_ fill in the object passed in, so the copy method will 
> not perform as expected if it does not.
> http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/io/serializer/Deserializer.html#deserialize%28T%29

--
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

        

Reply via email to