[ 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