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