[prev in list] [next in list] [prev in thread] [next in thread] 

List:       jakarta-commons-dev
Subject:    [jira] [Updated] (COLLECTIONS-424) Surprising exception by CompositeSet in a situation where Composi
From:       "srirangadeepthi (JIRA)" <jira () apache ! org>
Date:       2012-08-31 20:56:08
Message-ID: 464527232.24810.1346446568214.JavaMail.jiratomcat () arcas
[Download RAW message or body]


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

srirangadeepthi updated COLLECTIONS-424:
----------------------------------------

    Attachment: collections424.patch
    
> Surprising exception by CompositeSet in a situation where CompositeCollection works \
>                 fine
> ----------------------------------------------------------------------------------------
>  
> Key: COLLECTIONS-424
> URL: https://issues.apache.org/jira/browse/COLLECTIONS-424
> Project: Commons Collections
> Issue Type: Bug
> Components: Set
> Affects Versions: 3.2.1
> Environment: All environments
> Reporter: Michael Pradel
> Attachments: collections424.patch
> 
> 
> We have a method that uses a CompositeCollection. Here's a simplified version of \
> it: void m(CompositeCollection coll) {
> coll.addComposited(new TreeBag());
> }
> It works fine when the argument is a CompositeCollection, but it throws an \
> exception when the argument is a CompositeSet. E.g.: m(new CompositeCollection());  \
> // OK m(new CompositeSet());         // IllegalArgumentException
> Although the exception is documented in CompositeSet, this behavior is very \
> surprising. Is there a way to have m() accept CompositeCollections without running \
> into this exception? The only solution that comes to my mind is to dynamically \
> check the type of 'coll' in m(), but this is a rather nasty work-around. A better \
> solution may be to make the genericity of CompositeCollection explicit by adding a \
> type parameter: class CompositeCollection<T extends Collection> {
> void addComposited(T c) { /* .. */ }
> }
> 	
> class CompositeSet extends CompositeCollection<Set> {
> @Override void addComposited(Set c) { /* .. */ }
> }
> This way, users of CompositeCollection must choose the kind of collections that can \
> be composed and will not encounter surprises, such as the above.

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic