You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@accumulo.apache.org by "Christopher Tubbs (JIRA)" <ji...@apache.org> on 2013/02/03 22:52:12 UTC

[jira] [Commented] (ACCUMULO-1003) what is the point of SecuritySerDe?

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

Christopher Tubbs commented on ACCUMULO-1003:
---------------------------------------------

This is overly complex, and the generic parameters don't provide compile time checks correctly.

For instance, say I want to serialize a UserPassToken:
{code:java}
UserPassToken token = new UserPassToken("user", "password".getBytes());
token.getSerDe().serialize(token);
{code}

Not only does this fail to compile, without casts that obviate the use of generic parameters, it's confusing to pass token twice.

To support a generic serialization strategy, it would be preferable to have some sort of visitor pattern like:
{code:java}
public class SecurityToken<T extends SecurityToken<T>> {
    public <S> S serialize(Serializer<? extends T,S> serializer);
}
// with a specific implementation like
public class UserPassToken<UserPassToken> {
    public <S> S serialize(Serializer<? extends UserPassToken,S>);
}
// which could be used like
public class UserPassToBytesSerializer extends Serializer<UserPassToken,byte[]> {...};
byte[] bytes = token.serialize(new UserPassToBytesSerializer());
{code}

But even this, while simple and flexible for users, is a bit complex to maintain. I'd prefer just a simple Writable, or other "convertToBytes()" / "convertFromBytes()" simple strategy.
                
> what is the point of SecuritySerDe?
> -----------------------------------
>
>                 Key: ACCUMULO-1003
>                 URL: https://issues.apache.org/jira/browse/ACCUMULO-1003
>             Project: Accumulo
>          Issue Type: Sub-task
>          Components: master, tserver
>            Reporter: Eric Newton
>            Assignee: John Vines
>             Fix For: 1.5.0
>
>
> What is the point of the factory method getSerDe() (which, BTW is an awful name)?   Why not just make SecurityToken Writable?

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