Author: gnodet
Date: Fri Mar 16 07:36:18 2012
New Revision: 1301355

URL: http://svn.apache.org/viewvc?rev=1301355&view=rev
Log:
[FELIX-3396] Fix more cases, patch from Forrest Xia

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=1301355&r1=1301354&r2=1301355&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
 Fri Mar 16 07:36:18 2012
@@ -320,10 +320,7 @@ public class ConfigInstaller implements 
 
     Configuration findExistingConfiguration(String fileName) throws Exception
     {
-        // escape the special character in the filename
-        fileName = fileName.replace("(", "\\(");
-        fileName = fileName.replace(")", "\\)");
-        String filter = "(" + DirectoryWatcher.FILENAME + "=" + fileName + ")";
+        String filter = "(" + DirectoryWatcher.FILENAME + "=" + 
escapeFilterValue(fileName) + ")";
         Configuration[] configurations = 
getConfigurationAdmin().listConfigurations(filter);
         if (configurations != null && configurations.length > 0)
         {
@@ -335,4 +332,11 @@ public class ConfigInstaller implements 
         }
     }
 
+    private String escapeFilterValue(String s) {
+        return s.replaceAll("[(]", "\\\\(").
+                replaceAll("[)]", "\\\\)").
+                replaceAll("[=]", "\\\\=").
+                replaceAll("[\\*]", "\\\\*");
+    }
+
 }


Reply via email to