FELIX-1846 Guard access to the existing target filter being null
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@833085 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
index 1533833..9425478 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/manager/DependencyManager.java
@@ -390,7 +390,6 @@
ungetService( reference );
}
}
-
else
{
m_componentManager.log( LogService.LOG_DEBUG,
@@ -1064,8 +1063,10 @@
boolean canUpdateDynamically( Dictionary properties )
{
// 1. no target filter change
- final String targetFilter = ( String ) properties.get( m_dependencyMetadata.getTargetPropertyName() );
- if ( ( getTarget() == null && targetFilter == null ) || getTarget().equals( targetFilter ) )
+ final String newTarget = ( String ) properties.get( m_dependencyMetadata.getTargetPropertyName() );
+ final String currentTarget = getTarget();
+ if ( ( currentTarget == null && newTarget == null )
+ || ( currentTarget != null && currentTarget.equals( newTarget ) ) )
{
// can update if target filter is not changed, since there is
// no change is service binding
@@ -1085,7 +1086,7 @@
// invariant: target filter change + dynamic policy
// 3. check target services matching the new filter
- ServiceReference[] refs = getFrameworkServiceReferences( targetFilter );
+ ServiceReference[] refs = getFrameworkServiceReferences( newTarget );
if ( refs != null && refs.length > 0 )
{
// can update since there is at least on service matching the