Author: fmeschbe
Date: Tue Nov 27 13:13:12 2012
New Revision: 1414168

URL: http://svn.apache.org/viewvc?rev=1414168&view=rev
Log:
FELIX-3787 Test dependencies map against null to prevent NPE on service update 
of inactive delayed components

Modified:
    
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/manager/DependencyManager.java
URL: 
http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java?rev=1414168&r1=1414167&r2=1414168&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
 Tue Nov 27 13:13:12 2012
@@ -380,14 +380,18 @@ public class DependencyManager implement
                 }
                 else
                 {
-                    Map bound = ( Map ) 
m_componentManager.getDependencyMap().get( this );
-                    if ( m_dependencyMetadata.isMultiple() ||
-                                            bound.isEmpty() ||
-                                            reference.compareTo( 
bound.keySet().iterator().next() ) > 0 )
-                                    {
-                                        m_componentManager.deactivateInternal( 
ComponentConstants.DEACTIVATION_REASON_REFERENCE, false );
-                                        m_componentManager.activateInternal();
-                                    }
+                    Map dependenciesMap = 
m_componentManager.getDependencyMap();
+                    if ( dependenciesMap != null )
+                    {
+                        Map bound = ( Map ) dependenciesMap.get( this );
+                        if ( m_dependencyMetadata.isMultiple() ||
+                                                bound.isEmpty() ||
+                                                reference.compareTo( 
bound.keySet().iterator().next() ) > 0 )
+                                        {
+                                            
m_componentManager.deactivateInternal( 
ComponentConstants.DEACTIVATION_REASON_REFERENCE, false );
+                                            
m_componentManager.activateInternal();
+                                        }
+                    }
                 }
             }
 
@@ -404,12 +408,16 @@ public class DependencyManager implement
                 else if ( !isReluctant() )
                 {
                     //dynamic greedy single: bind then unbind
-                    Map bound = ( Map ) 
m_componentManager.getDependencyMap().get( this );
-                    ServiceReference oldRef = ( ServiceReference ) 
bound.keySet().iterator().next();
-                    if ( reference.compareTo( oldRef ) > 0 )
+                    Map dependenciesMap = 
m_componentManager.getDependencyMap();
+                    if ( dependenciesMap != null )
                     {
-                        m_componentManager.invokeBindMethod( this, reference );
-                        m_componentManager.invokeUnbindMethod( this, oldRef );
+                        Map bound = ( Map ) dependenciesMap.get( this );
+                        ServiceReference oldRef = ( ServiceReference ) 
bound.keySet().iterator().next();
+                        if ( reference.compareTo( oldRef ) > 0 )
+                        {
+                            m_componentManager.invokeBindMethod( this, 
reference );
+                            m_componentManager.invokeUnbindMethod( this, 
oldRef );
+                        }
                     }
                 }
             }


Reply via email to