You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by gn...@apache.org on 2011/01/24 15:41:44 UTC

svn commit: r1062806 - /felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java

Author: gnodet
Date: Mon Jan 24 14:41:44 2011
New Revision: 1062806

URL: http://svn.apache.org/viewvc?rev=1062806&view=rev
Log:
[FELIX-2799] FileInstall creates multiple configurations for factory configurations on windows

Modified:
    felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java

Modified: felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
URL: http://svn.apache.org/viewvc/felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java?rev=1062806&r1=1062805&r2=1062806&view=diff
==============================================================================
--- felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java (original)
+++ felix/trunk/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java Mon Jan 24 14:41:44 2011
@@ -24,6 +24,7 @@ import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.net.URI;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Hashtable;
@@ -121,7 +122,7 @@ public class ConfigInstaller implements 
                                             configurationEvent.getFactoryPid());
                 Dictionary dict = config.getProperties();
                 String fileName = (String) dict.get( DirectoryWatcher.FILENAME );
-                File file = fileName != null ? new File(fileName) : null;
+                File file = fileName != null ? fromConfigKey(fileName) : null;
                 if( file != null && file.isFile()   ) {
                     if( fileName.endsWith( ".cfg" ) )
                     {
@@ -210,7 +211,7 @@ public class ConfigInstaller implements 
         }
 
         String pid[] = parsePid(f.getName());
-        Configuration config = getConfiguration(f.getAbsolutePath(), pid[0], pid[1]);
+        Configuration config = getConfiguration(toConfigKey(f), pid[0], pid[1]);
 
         Dictionary props = config.getProperties();
         Hashtable old = props != null ? new Hashtable(new DictionaryAsMap(props)) : new Hashtable();
@@ -220,7 +221,7 @@ public class ConfigInstaller implements 
 
         if( !ht.equals( old ) )
         {
-            ht.put(DirectoryWatcher.FILENAME, f.getAbsolutePath());
+            ht.put(DirectoryWatcher.FILENAME, toConfigKey(f));
             if (config.getBundleLocation() != null)
             {
                 config.setBundleLocation(null);
@@ -245,11 +246,19 @@ public class ConfigInstaller implements 
     boolean deleteConfig(File f) throws Exception
     {
         String pid[] = parsePid(f.getName());
-        Configuration config = getConfiguration(f.getAbsolutePath(), pid[0], pid[1]);
+        Configuration config = getConfiguration(toConfigKey(f), pid[0], pid[1]);
         config.delete();
         return true;
     }
 
+    String toConfigKey(File f) {
+        return f.getAbsoluteFile().toURI().toString();
+    }
+
+    File fromConfigKey(String key) {
+        return new File(URI.create(key));
+    }
+
     String[] parsePid(String path)
     {
         String pid = path.substring(0, path.length() - 4);