[ 
https://issues.apache.org/jira/browse/DISCOVERY-17?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13017703#comment-13017703
 ] 

Simone Tripodi commented on DISCOVERY-17:
-----------------------------------------

Hi Joerg,
thanks for the reminder, I should have overlooked the LinkageError, 
unfortunately I didn't have the chance to working with it before (I'm 
relatively "young" :P)

What about the proposed patch here? Does it make sense or it is just me having 
the feeling that the current implementation is wrong? In the worst case it 
always return the element on top {{services}}...
Thanks in advance!

> Enumeration returned by Service.providers has a broken behavior
> ---------------------------------------------------------------
>
>                 Key: DISCOVERY-17
>                 URL: https://issues.apache.org/jira/browse/DISCOVERY-17
>             Project: Commons Discovery
>          Issue Type: Bug
>    Affects Versions: 0.5
>            Reporter: Simone Tripodi
>            Assignee: Simone Tripodi
>             Fix For: 0.5
>
>   Original Estimate: 20m
>  Remaining Estimate: 20m
>
> I find the current Enumeration behavior broken, but please tell me if I'm 
> wrong!!!
> This is the actual current behavior:
> {code}
> return new Enumeration<S>() {
>             private S object = getNextClassInstance();
>             public boolean hasMoreElements() {
>                 return object != null;
>             }
>             public S nextElement() {
>                 if (object == null) {
>                     throw new NoSuchElementException();
>                 }
>                 S obj = object;
>                 object = getNextClassInstance();
>                 return obj;
>             }
>             private S getNextClassInstance() {
>                 while (services.hasNext()) {
>                     ResourceClass<S> info = services.nextResourceClass();
>                     try {
>                         return spi.newInstance(info.loadClass());
>                     } catch (Exception e) {
>                         // ignore
>                     } catch (UnsatisfiedLinkError ule) {
>                         // ignore
>                     } catch (ExceptionInInitializerError eiie) {
>                         // ignore
>                     }
>                 }
>                 return null;
>             }
>         };
> {code}
> but it should be
> {code}
> return new Enumeration<S>() {
>             public boolean hasMoreElements() {
>                 return services.hasNext();
>             }
>             public S nextElement() {
>                 ResourceClass<S> info = services.nextResourceClass();
>                 try {
>                     return spi.newInstance(info.loadClass());
>                 } catch (Exception e) {
>                     // ignore
>                 } catch (UnsatisfiedLinkError ule) {
>                     // ignore
>                 } catch (ExceptionInInitializerError eiie) {
>                     // ignore
>                 }
>                 return null;
>             }
>         };
> {code}
> I think there's no need to comment both codes, please tell me why the first 
> one should be right :P

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

Reply via email to