commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Simone Tripodi (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DISCOVERY-17) Enumeration returned by Service.providers has a broken behavior
Date Fri, 08 Apr 2011 22:25:06 GMT

    [ 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

Mime
View raw message