Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
Nightly Builds
-
None
-
Operating System: other
Platform: Other
-
25357
Description
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)
Object obj = object;
object = getNextClassInstance();
return obj;
}
private Object getNextClassInstance()
{ // as before }};