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

Mirko Raner commented on CODEC-158:
-----------------------------------

Introducing a common interface for encoder/decoder and converting the existing 
hierarchy to generics are orthogonal issues, in my view. As such, I propose to 
solve them separately and not intermix these two issues.

A common superinterface for encoders and decoders is useful with and without 
generics, and, as far as I can see, it does not impede the introduction of 
generics at a later point.

CODEC-158 is strictly about the common superinterface for encoders and 
decoders. I agree that, going forward, genericized encoders/decoders would be 
extremely useful, but we should discuss this as a separate issue.

                
> Add Codec, StringCodec, and BinaryCodec interfaces that extend both encoder 
> and decoder
> ---------------------------------------------------------------------------------------
>
>                 Key: CODEC-158
>                 URL: https://issues.apache.org/jira/browse/CODEC-158
>             Project: Commons Codec
>          Issue Type: Improvement
>    Affects Versions: 1.7
>            Reporter: Mirko Raner
>            Priority: Minor
>         Attachments: CODEC-158.patch, CODEC-158.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> Currently, there are no common interfaces that extend both the encoder and 
> the decoder interfaces. This makes it hard to deal with a codec as a single 
> entity and requires separate treatment of encoder and decoder parts.
> For example, let's say you want to develop a storage abstraction that uses an 
> encoding. Right now, you would need to write
> class Storage
> {
>     @Inject Encoder encoder;
>     @Inject Decoder decoder;
>     //...
> }
> In practice, encoder and decoder need to match, and most likely both encoder 
> and decoder would be bound to the same implementation, like Base64 or 
> URLCodec. Because of the lack of a common superinterface they need to be 
> specified separately. There are some classes like BaseNCodec that can be used 
> to unify some of the encoders and decoders, but they are too specific and 
> restrictive.
> Ideally, I would like to write:
> class Storage
> {
>     @Inject Codec codec;
>     //...
> }
> Assuming that combined encoder/decoder classes like Base64 would implement 
> that Codec interface, this could be directly bound to a combined 
> encoder/decoder implementation.
> It would be nice if these interfaces were added and the existing codec 
> classes (BaseNCodec, Hex, QCodec, QuotedPrintableCodec, URLCodec) could be 
> modified to implement these new interfaces.
> I'm happy to contribute a patch if there is interest in this feature.

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

Reply via email to