[picocontainer-dev] Bug in DefaultPico?

"Michael Rimov" <[email protected]>
Newsgroups gmane.comp.java.picocontainer.devel
Organization Centerline Computers, Inc.
Message-ID <000001c841e5$75b28890$611799b0$@com>
Hi guys,

 

I wanted verify that this was actually a problem before I jira'd it.

 

DefaultPicoContainer has two collections related to storing Lifecycle state:

 

    /** List collecting the CAs which have been successfully started */  

      private final List<Integer> startedComponentAdapters = new
ArrayList<Integer>();

 

    /** 

     * Keeps track of child containers started status.

     */

    private final Set<Integer> childrenStarted = new HashSet<Integer>();

 

These collections are populated like so:

 

In Start:

            childrenStarted.add(child.hashCode());

 

In Start Adapters:

 

        adapters = getOrderedComponentAdapters();

        // clear list of started CAs

        startedComponentAdapters.clear();

        // clone the adapters

        List<ComponentAdapter<?>> adaptersClone = new
ArrayList<ComponentAdapter<?>>(adapters);

        for (final ComponentAdapter<?> adapter : adaptersClone) {

            if (adapter instanceof Behavior) {

                Behavior<?> manager = (Behavior<?>)adapter;

                manager.start(DefaultPicoContainer.this);

 
startedComponentAdapters.add(adaptersClone.indexOf(adapter));

            }

        }

 

Now, I have two problems:

 

1 - Since hashcodes are not guaranteed unique, it seems that storing a
series of integers representing the hashcodes as a substitution for identity
is going to cause spurious bugs.

 

2 - In start adapters, storing the index seems like unnecessary as well as
awfully dependent on the immutability of the adapters.

 

Overall it seems that relying on collections of integers in this fashion is
only asking for trouble, and since the collections are only storing
references, I don't even see that it has a significant savings in memory.

 

Can someone set me straight on this?

 

Thanks,

 

                                                -Mike
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.