commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Will Pugh (JIRA)" <>
Subject [jira] Updated: (CODEC-55) make all "business" method implementations of public API thread safe
Date Tue, 09 Oct 2007 18:36:50 GMT


Will Pugh updated CODEC-55:

>Findbugs points out:
>* the field RefinedSoundex.US_ENGLISH_MAPPING needs to be private otherwise it can be
changed outside the class.
>* the constructor parameter mapping is externally mutable. The data should be copied to
private array.
>There are similar problems with the Soundex class.

I noticed these from looking at the code, and don't think we should fix them.  Reasons are:

    1)  People might have existing code using RefinedSoundex.US_ENGLISH_MAPPING, changing
scope could break them.  Also, this is a crazy thing to expect someone to do.  Someone changing
this mapping is probably going to break single threaded code as well as multi-threaded code.
    2)  Right now creating new classes is super quick (probably less than 20 instructions),
adding an array copy in there would slow things down considerably to protect against a case
that I don't think is very likely, and definitely a bad idea in either a single or muliti-threaded

In addition, I think I should revert my change that made URLCodec's charset and ESCAPE_CHAR
members final.  Existing code may be depending on this, and these changes don't help much.
 They don't help because:
  1)  ESCAPE_CHAR does not seem to be actually used by URLCodec
  2)  When calling createThreadSafeCodec you are getting an instance, so we don't have to
worry about the instance being sub-classed and having that subclass change charset.  In the
case that someone already has a subclass of URLCodec, they should be allowed to, but they
need to be responsible for making sure it's thread safe.

> make all "business" method implementations of public API thread safe 
> ---------------------------------------------------------------------
>                 Key: CODEC-55
>                 URL:
>             Project: Commons Codec
>          Issue Type: Wish
>            Reporter: Qingtian Wang
>         Attachments: concurrentCodecs.diff, concurrentQDiff.diff, urlcodec.patch
> Maybe most of the implementations are already thread safe. Just such that codec can say
so in general...

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message