You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by fm...@apache.org on 2011/02/04 21:02:03 UTC

svn commit: r1067270 - in /felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl: ConfigurationImpl.java ConfigurationManager.java

Author: fmeschbe
Date: Fri Feb  4 20:02:03 2011
New Revision: 1067270

URL: http://svn.apache.org/viewvc?rev=1067270&view=rev
Log:
FELIX-2766 Don't throw FileNotFoundException when calling
update() (no-arg signature) on newly created Factory configuration.
Just assume an empty configuration. Also provide ManagedService[Factory]
with empty dictionary if the configuration has no properties (yet) on
update which is the case when calling no-arg update() on newly
created configurations.

Modified:
    felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java
    felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java

Modified: felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java?rev=1067270&r1=1067269&r2=1067270&view=diff
==============================================================================
--- felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java (original)
+++ felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationImpl.java Fri Feb  4 20:02:03 2011
@@ -257,17 +257,20 @@ class ConfigurationImpl extends Configur
         if ( localPersistenceManager != null )
         {
             // read configuration from persistence (again)
-            Dictionary properties = localPersistenceManager.load( getPid() );
-
-            // ensure serviceReference pid
-            String servicePid = ( String ) properties.get( Constants.SERVICE_PID );
-            if ( servicePid != null && !getPid().equals( servicePid ) )
+            if ( localPersistenceManager.exists( getPid() ) )
             {
-                throw new IOException( "PID of configuration file does match requested PID; expected " + getPid() + ", got "
-                    + servicePid );
-            }
+                Dictionary properties = localPersistenceManager.load( getPid() );
+
+                // ensure serviceReference pid
+                String servicePid = ( String ) properties.get( Constants.SERVICE_PID );
+                if ( servicePid != null && !getPid().equals( servicePid ) )
+                {
+                    throw new IOException( "PID of configuration file does match requested PID; expected " + getPid()
+                        + ", got " + servicePid );
+                }
 
-            configureFromPersistence( properties );
+                configureFromPersistence( properties );
+            }
 
             // update the service but do not fire an CM_UPDATED event
             getConfigurationManager().updated( this, false );

Modified: felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java
URL: http://svn.apache.org/viewvc/felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java?rev=1067270&r1=1067269&r2=1067270&view=diff
==============================================================================
--- felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java (original)
+++ felix/trunk/configadmin/src/main/java/org/apache/felix/cm/impl/ConfigurationManager.java Fri Feb  4 20:02:03 2011
@@ -1417,7 +1417,13 @@ public class ConfigurationManager implem
             this.config = config;
             synchronized ( config )
             {
-                this.properties = config.getProperties( true );
+                Dictionary props = config.getProperties( true );
+                if ( props == null )
+                {
+                    props = new Hashtable();
+                }
+
+                this.properties = props;
                 this.lastModificationTime = config.getLastModificationTime();
             }
         }
@@ -1575,7 +1581,7 @@ public class ConfigurationManager implem
                             {
                                 final ManagedServiceFactory srv = ( ManagedServiceFactory ) bundleContext
                                     .getService( ref );
-                                if ( srv != null && properties != null )
+                                if ( srv != null )
                                 {
                                     Dictionary props = new CaseInsensitiveDictionary( properties );
                                     callPlugins( props, config.getFactoryPid(), ref, config );