[
https://issues.apache.org/jira/browse/CASSANDRA-5744?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Carl Yeksigian updated CASSANDRA-5744:
--------------------------------------
Attachment: 0001-Inverse-serialize-deserialize-v2.patch
> Cleanup AbstractType/TypeSerializer classes
> -------------------------------------------
>
> Key: CASSANDRA-5744
> URL: https://issues.apache.org/jira/browse/CASSANDRA-5744
> Project: Cassandra
> Issue Type: Improvement
> Affects Versions: 2.0 beta 1
> Reporter: Sylvain Lebresne
> Assignee: Sylvain Lebresne
> Priority: Minor
> Fix For: 2.0
>
> Attachments: 0001-Inverse-serialize-deserialize.txt,
> 0001-Inverse-serialize-deserialize-v2.patch,
> 0002-Make-sure-deseriaze-don-t-throw-on-empty-BB.txt,
> 0003-Avoid-duplicating-code.txt, 0003-Avoid-duplicating-code-v2.patch
>
>
> This is somewhat a followup to CASSANDRA-4495. I'm attaching 3 patches that
> do the following:
> # It inverse the serialize and deserialize method in TypeSerializer. Sorry I
> didn't saw that earlier, but calling serialize the method that takes a byte
> array to produce an object feels wrong to me (and wikipedia seems to agree
> with me that this should the other way around:
> http://en.wikipedia.org/wiki/Serialization :))
> # For historical reasons (which imo were somewhat of a mistake in the first
> place but that's another story), we accept an empty byte buffer as a valid
> value for any type. When I say "valid", I mean that validate() never throw
> (except for InetAddressType as it happens, but that's more of an
> inconsistency that the patch fixes). However, for some reason most
> deserialize methods were just throwing a random exception if an empty byte
> buffer. So I think we should be coherent here, if validate() pass, you should
> be able to deserialize the value alright, and the 2nd patch make sure of that
> (return null when there was nothing else making sense).
> # The patch removes a bunch of code duplication. Namely, AbstracType has a
> getSerializer() method that return the corresponding TypeSerializer, but
> despite that, every AbstractType subclass was redefining its compose,
> decompose and validate that were just calling the corresponding method in
> their deserializer. So the patch makes those method concrete in AbstractType
> and remove the code duplication all over the place. Furthermore,
> TypeSerializer had a getString(ByteBuffer) and a toString(T value) methods.
> But since we also have a deserialize(ByteBuffer), the former getString() is
> really not useful as it's just toString(deserialize()). So the patch also
> remove that method.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira