Author: cziegeler
Date: Sat Jul 11 14:47:48 2015
New Revision: 1690372

URL: http://svn.apache.org/r1690372
Log:
[DS][RFC-212] Various issues with field references

Modified:
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
    
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java 
(original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethod.java 
Sat Jul 11 14:47:48 2015
@@ -43,8 +43,6 @@ implements org.apache.felix.scr.impl.hel
 {
     private final String m_referenceClassName;
 
-    private final ReferenceMetadata.ReferenceScope m_referenceScope;
-
     private enum ParamType {
         serviceReference,
         serviceObjects,
@@ -57,11 +55,10 @@ implements org.apache.felix.scr.impl.hel
 
 
     public BindMethod( final String methodName,
-            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties, 
ReferenceScope referenceScope )
+            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties )
     {
         super( methodName, componentClass, dsVersion, 
configurableServiceProperties );
         m_referenceClassName = referenceClassName;
-        m_referenceScope = referenceScope;
     }
 
 

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java 
(original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/BindMethods.java 
Sat Jul 11 14:47:48 2015
@@ -36,24 +36,23 @@ public class BindMethods implements Refe
     public BindMethods( ReferenceMetadata m_dependencyMetadata, Class<?> 
instanceClass,
             final DSVersion dsVersion, final boolean 
configurableServiceProperties )
     {
-        ReferenceMetadata.ReferenceScope referenceScope = 
m_dependencyMetadata.getScope();
         m_bind = new org.apache.felix.scr.impl.helper.BindMethod(
                 m_dependencyMetadata.getBind(),
                 instanceClass,
                 m_dependencyMetadata.getInterface(),
-                dsVersion, configurableServiceProperties, referenceScope
+                dsVersion, configurableServiceProperties
         );
         m_updated = new org.apache.felix.scr.impl.helper.UpdatedMethod(
                 m_dependencyMetadata.getUpdated(),
                 instanceClass,
                 m_dependencyMetadata.getInterface(),
-                dsVersion, configurableServiceProperties, referenceScope
+                dsVersion, configurableServiceProperties
         );
         m_unbind = new org.apache.felix.scr.impl.helper.UnbindMethod(
                 m_dependencyMetadata.getUnbind(),
                 instanceClass,
                 m_dependencyMetadata.getInterface(),
-                dsVersion, configurableServiceProperties, referenceScope
+                dsVersion, configurableServiceProperties
         );
     }
 

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
 (original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/FieldHandler.java
 Sat Jul 11 14:47:48 2015
@@ -531,7 +531,8 @@ public class FieldHandler
         if ( !this.metadata.isMultiple() )
         {
             // unary references
-            // unbind needs only be done, if reference is dynamic and optional
+            
+               // unbind needs only be done, if reference is dynamic and 
optional
             if ( mType == METHOD_TYPE.UNBIND )
             {
                 if ( this.metadata.isOptional() && !this.metadata.isStatic() )
@@ -544,18 +545,16 @@ public class FieldHandler
                 }
                 this.boundValues.remove(refPair);
             }
-            // updated needs only be done, if reference is dynamic and optional
+            // updated needs only be done, if reference is dynamic
             // and the value type is map or tuple
             else if ( mType == METHOD_TYPE.UPDATED )
             {
-                if ( this.metadata.isOptional() && !this.metadata.isStatic() )
+                if ( !this.metadata.isStatic() 
+                        && ( this.valueType == ParamType.map || this.valueType 
== ParamType.tuple ) )
                 {
-                    if ( this.valueType == ParamType.map || this.valueType == 
ParamType.tuple )
-                    {
-                        final Object obj = getValue(key, refPair);
-                        this.setFieldValue(componentInstance, obj);
-                        this.boundValues.put(refPair, obj);
-                    }
+                    final Object obj = getValue(key, refPair);
+                    this.setFieldValue(componentInstance, obj);
+                    this.boundValues.put(refPair, obj);
                 }
             }
             // bind needs always be done

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
 (original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UnbindMethod.java
 Sat Jul 11 14:47:48 2015
@@ -30,9 +30,9 @@ implements org.apache.felix.scr.impl.hel
 {
 
     public UnbindMethod( final String methodName,
-            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties, 
ReferenceMetadata.ReferenceScope referenceScope )
+            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties )
     {
-        super( methodName, componentClass, referenceClassName, dsVersion, 
configurableServiceProperties, referenceScope );
+        super( methodName, componentClass, referenceClassName, dsVersion, 
configurableServiceProperties );
     }
 
 

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
 (original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/helper/UpdatedMethod.java
 Sat Jul 11 14:47:48 2015
@@ -30,9 +30,9 @@ implements org.apache.felix.scr.impl.hel
 {
 
     public UpdatedMethod( final String methodName,
-            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties, 
ReferenceMetadata.ReferenceScope referenceScope )
+            final Class<?> componentClass, final String referenceClassName, 
final DSVersion dsVersion, final boolean configurableServiceProperties )
     {
-        super( methodName, componentClass, referenceClassName, dsVersion, 
configurableServiceProperties, referenceScope );
+        super( methodName, componentClass, referenceClassName, dsVersion, 
configurableServiceProperties );
     }
 
 

Modified: 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java?rev=1690372&r1=1690371&r2=1690372&view=diff
==============================================================================
--- 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
 (original)
+++ 
felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
 Sat Jul 11 14:47:48 2015
@@ -1621,7 +1621,7 @@ public class DependencyManager<S, T> imp
      */
     void invokeUpdatedMethod( ComponentContextImpl<S> componentContext, final 
RefPair<S, T> refPair, int trackingCount, EdgeInfo info )
     {
-        if ( m_dependencyMetadata.getUpdated() == null )
+        if ( m_dependencyMetadata.getUpdated() == null && 
m_dependencyMetadata.getField() == null )
         {
             return;
         }


Reply via email to