[FELIX-2799] FileInstall creates multiple configurations for factory configurations on windows
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@1062806 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
index 4e2114c..bb60375 100644
--- a/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
+++ b/fileinstall/src/main/java/org/apache/felix/fileinstall/internal/ConfigInstaller.java
@@ -24,6 +24,7 @@
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 @@
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 @@
}
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 @@
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 @@
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);