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

Mirko Raner updated CODEC-158:
------------------------------

    Attachment: CODEC-158.patch

Attached are the modifications I had in mind to address this. Please let me 
know if you have any questions or improvements.
There is already a class called BinaryCodec in package 
org.apache.commons.codec.binary. The new BinaryCodec interface in 
org.apache.commons.codec may be confused with this existing class. In the 
patch, the naming is consistent (i.e. StringEncoder+StringDecoder->StringCodec 
and BinaryEncoder+BinaryDecoder->BinaryCodec) and the two types are 
distinguishable by their package. If you feel this could be a problem, please 
make a suggestion as to how this can be resolved.

Thanks!

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