Tuomas Kiviaho created FELIX-3864:
-------------------------------------

             Summary: Synchronized injection
                 Key: FELIX-3864
                 URL: https://issues.apache.org/jira/browse/FELIX-3864
             Project: Felix
          Issue Type: Improvement
          Components: Dependency Manager
    Affects Versions: dependencymanager-3.0.0
            Reporter: Tuomas Kiviaho


I see myself repeating the following pattern quite often

{code}
   @ServiceDependency( removed = "removed", required=true  )
    synchronized void added(LogService logService )
    {
        this.logService = logService;
    }

    synchronized void removed(LogService logService )
    {
        this.logService = null;
    }
{code}

Would it be possible to get optional synchronization support directly from 
dependency manager. I noticed that there's a sort of synchronization already 
taking place at ComponentImpl

{code}
  private void configureImplementation(Class clazz, Object instance, String 
instanceName) {
  ...
                                        synchronized (SYNC) {
                                            field.set(serviceInstance, 
instance);
                                        }
{code}

I propose adding of 'boolean synchronization default false' attribute to 
@*Dependency which might contain a notion that this applies only to field 
injection. If syncronization between component's field injections is not needed 
then SYNC could be replaced with serviceInstance whenever the attribute is set.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to