You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Simone Tripodi (JIRA)" <ji...@apache.org> on 2011/06/01 22:41:47 UTC

[jira] [Closed] (DISCOVERY-3) [discovery] Enumeration in Service broken

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

Simone Tripodi closed DISCOVERY-3.
----------------------------------


included in discovery-05 release

> [discovery] Enumeration in Service broken
> -----------------------------------------
>
>                 Key: DISCOVERY-3
>                 URL: https://issues.apache.org/jira/browse/DISCOVERY-3
>             Project: Commons Discovery
>          Issue Type: Bug
>    Affects Versions: Nightly Builds
>         Environment: Operating System: other
> Platform: Other
>            Reporter: matthew_pocock
>            Assignee: Simone Tripodi
>             Fix For: 0.5
>
>
> The Enumeration in org.apache.commons.discovery.tools.Service is broken - it
> will only work in the (admittedly common) case where you do:
>   while(e.hasMoreElements()) e.nextElement();
> If you repeatedly call nextElement(), you will get the wrong results. In
> particular, this uggly but technically correct code will fail to behave sanely:
>   try {
>     while(true)
>       e.nextElement();
>   } catch (NoSuchElementException e) {
>   }
> The code needs hacking arround to look something more like this:
> return new Enumeration() {
>   private Object object = getNextClassInstance();
>   public boolean hasMoreElements() {
>     return object != null;
>   }
>   public Object nextElement() {
>     if(object == null) {
>       throw new NoSuchElementException();
>     }
>     Object obj = object;
>     object = getNextClassInstance();
>     return obj;
>   }
>   private Object getNextClassInstance() {
>     // as before
>   }
> };

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira