commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mirko Raner (JIRA)" <>
Subject [jira] [Updated] (CODEC-158) Add Codec, StringCodec, and BinaryCodec interfaces that extend both encoder and decoder
Date Wed, 03 Oct 2012 07:50:07 GMT


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.


> Add Codec, StringCodec, and BinaryCodec interfaces that extend both encoder and decoder
> ---------------------------------------------------------------------------------------
>                 Key: CODEC-158
>                 URL:
>             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:

View raw message