FELIX-4951 : [DS][RFC-190] Correct pid handling

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1689540 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java b/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
index 3afd7be..45b2580 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/TargetedPID.java
@@ -25,7 +25,7 @@
 
 /**
  * Copied with modifications from felix configadmin.
- * 
+ *
  * The <code>TargetedPID</code> class represents a targeted PID as read
  * from a configuration object.
  * <p>
@@ -50,7 +50,7 @@
      * <li><code>0</code> -- this PID is not targeted at all</li>
      * <li><code>1</code> -- this PID is targeted by the symbolic name</li>
      * <li><code>2</code> -- this PID is targeted by the symbolic name and version</li>
-     * <li><code>3</code> -- this PID is targeted by the symoblic name, version, and location</li>
+     * <li><code>3</code> -- this PID is targeted by the symbolic name, version, and location</li>
      * </ul>
      */
     private final short bindingLevel;
diff --git a/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java b/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
index 4b084a6..625a080 100644
--- a/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
+++ b/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
@@ -121,15 +121,15 @@
                         if ( cao instanceof ConfigurationAdmin )
                         {
                             final ConfigurationAdmin ca = ( ConfigurationAdmin ) cao;
-                            for (String confPid: confPids )
+                            for (final String confPid : confPids )
                             {
                                 final Collection<Configuration> factory = findFactoryConfigurations( ca, confPid,
                                         bundleContext.getBundle() );
                                 if ( !factory.isEmpty() )
                                 {
-                                    boolean created = false;
                                     for ( Configuration config: factory )
                                     {
+                                        boolean created = false;
                                         Activator.log( LogService.LOG_DEBUG, null,
                                                 "Configuring holder {0} with factory configuration {1}", new Object[] {
                                                         holder, config }, null );
@@ -142,8 +142,11 @@
                                                     config.getProperties(),
                                                     changeCount );
                                         }
+                                        if ( !created ) 
+                                        {
+                                        	return false;
+                                        }
                                     }
-                                    return created;
                                 }
                                 else
                                 {
@@ -162,11 +165,19 @@
                                             long changeCount = changeCounter.getChangeCount( singleton, false, -1 );
                                             holder.configurationUpdated( new TargetedPID( singleton.getPid() ), null,
                                                     singleton.getProperties(), changeCount );
-                                            return true;
                                         }
+                                        else
+                                        {
+                                        	return false;
+                                        }
+                                    }
+                                    else 
+                                    {
+                                    	return false;
                                     }
                                 }
                             }
+                            return !confPids.isEmpty();
                         }
                         else
                         {