[ 
https://issues.apache.org/jira/browse/COLLECTIONS-483?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13770067#comment-13770067
 ] 

Brahim Djoudi commented on COLLECTIONS-483:
-------------------------------------------

Hi Thomas,

Few replies:
- I shall provide very soon a detailed report that describes all performed 
refactoring
- I mainly tried to only move units from packages where they were defined but I 
also need to remove two static methods (in a utility class) that were redundant 
with two others in order to eliminate a mutual dependency. These methods should 
be deprecated before their removal. Another notable modification is the 
deletion of the package trie.analyzer that contained a single class that 
required to be placed in trie package instead. Finally, the package 
org.apache.commons.collections4 contains only the overview.html file
- I have moved the classes CompositeMap and CompositeSet in the map package. 
The CompositeSet class is only used by the CompositeMap class, that's why it 
got sucked in. More naturally, this class may be placed in set package
- I moved the CompositeCollection class in the list package because it used the 
class UnmodifiableList that I placed firstly in the list package. Many 
couplings with UnmodifiableList require to move it in the collection package 
but CompositeCollection has dependencies with the package iterators 
(EmptyIterator, IteratorChain). Therefore, it may be moved in iterators but 
unfortunately not in collection package (heavily used by iterators)
- No class has been removed. Even deprecated classes were kept somewhere. 269 
top level classes before/after refactoring task
                
> Cyclic dependencies among several packages.
> -------------------------------------------
>
>                 Key: COLLECTIONS-483
>                 URL: https://issues.apache.org/jira/browse/COLLECTIONS-483
>             Project: Commons Collections
>          Issue Type: Improvement
>    Affects Versions: 4.0, 4.0-alpha1
>            Reporter: Brahim Djoudi
>            Priority: Minor
>         Attachments: c4.png, c4-refactored.png, c4-src.zip
>
>   Original Estimate: 4h
>  Remaining Estimate: 4h
>
> Many packages have mutual dependency, directly or undirectly.
> These dependencies may be avoided just by moving some classes and interfaces 
> within different packages.
> This refactoring breaks API compatibility but enhances the useability and the 
> maintainability (hopefully) of the library. In addition, few issues in 
> dynamic environments (like OSGi) less occur.

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