felix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Marcel Offermans (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (FELIX-4426) Allow DM to manage collections of services
Date Fri, 10 Oct 2014 12:32:33 GMT

    [ https://issues.apache.org/jira/browse/FELIX-4426?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14166720#comment-14166720

Marcel Offermans commented on FELIX-4426:

I'm not sure if it will affect us, but the contract for a ConcurrentHashMap is rather vague
when it comes to iterating over the collection while updating it:

Yes, the good news is that it will not throw an exception.
No, it is not guaranteed that you will see updates in the iterator. The iterator reflects
"the state of the hash table at some point at or since the creation of the iterator/enumeration".

Will this be a problem? It depends. There is no "CopyOnWriteHashMap" which would have a more
determinate behaviour (namely guaranteeing that your collection and therefore the iterator
won't change after you've got hold of a reference) but at the cost of more expensive modifications.
We should think this through, though, to advise our users when to use this, and when not to
(you can always use callbacks and a list implementation of choice if you need more control).

> Allow DM to manage collections of services
> ------------------------------------------
>                 Key: FELIX-4426
>                 URL: https://issues.apache.org/jira/browse/FELIX-4426
>             Project: Felix
>          Issue Type: New Feature
>          Components: Dependency Manager
>    Affects Versions: dependencymanager-4.0.0
>            Reporter: J.W. Janssen
>            Assignee: Pierre De Rop
>             Fix For: dependencymanager-4.0.0
> DM has great support for single-cardinality dependencies, allowing you to only declare
the dependency as (volatile) field. For multiple-cardinality dependencies, no such support
is present, forcing you to always manually implement this using callbacks.
> It would be great if I could declare multiple-cardinality dependencies like:
> {code}
> private volatile List<MyService> m_services;
> {code}
> and let DM manage the list for me.
> Note that you need some additional reflection mojo to obtain the actual collection type.
An example of how this can work can be found in a utility class for Swagger in the Amdatu-Web
project, see https://bitbucket.org/amdatu/amdatu-web/src/master/org.amdatu.web.rest/src/org/amdatu/web/rest/doc/swagger/SwaggerUtil.java?at=master#cl-304

This message was sent by Atlassian JIRA

View raw message