Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: Nightly Builds
    • Fix Version/s: 0.5
    • Labels:
      None
    • Environment:

      Operating System: other
      Platform: Other

      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)

      { throw new NoSuchElementException(); }

      Object obj = object;
      object = getNextClassInstance();
      return obj;
      }

      private Object getNextClassInstance()

      { // as before }

      };

        Activity

          People

          • Assignee:
            Simone Tripodi
            Reporter:
            matthew_pocock
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development