You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by dj...@apache.org on 2013/05/28 07:57:53 UTC

svn commit: r1486758 - in /felix/trunk/scr/src: main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java

Author: djencks
Date: Tue May 28 05:57:52 2013
New Revision: 1486758

URL: http://svn.apache.org/r1486758
Log:
FELIX-3651 escape some characters in bundle location to make valid filters more likely

Added:
    felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java   (with props)
Modified:
    felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java

Modified: felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java?rev=1486758&r1=1486757&r2=1486758&view=diff
==============================================================================
--- felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java (original)
+++ felix/trunk/scr/src/main/java/org/apache/felix/scr/impl/config/ConfigurationSupport.java Tue May 28 05:57:52 2013
@@ -594,13 +594,23 @@ public class ConfigurationSupport implem
     {
         String bsn = bundle.getSymbolicName();
         String version = bundle.getVersion().toString();
-        String location = bundle.getLocation();
+        String location = escape(bundle.getLocation());
         String f = String.format(
                 "(|(%1$s=%2$s)(%1$s=%2$s|%3$s)(%1$s=%2$s|%3$s|%4$s)(%1$s=%2$s|%3$s|%4$s|%5$s))", 
                 key, pid, bsn, version, location );
         return f;
     }
     
+    /**
+     * see core spec 3.2.7.  Escape \*() with preceding \
+     * @param value
+     * @return escaped string
+     */
+    static final String escape(String value)
+    {
+        return value.replaceAll( "([\\\\\\*\\(\\)])", "\\\\$1" );
+    }
+    
     
     private interface ChangeCount {
         long getChangeCount( Configuration configuration, boolean fromEvent, long previous );

Added: felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java?rev=1486758&view=auto
==============================================================================
--- felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java (added)
+++ felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java Tue May 28 05:57:52 2013
@@ -0,0 +1,13 @@
+package org.apache.felix.scr.impl.config;
+
+import junit.framework.TestCase;
+
+public class ConfigurationSupportTest extends TestCase
+{
+
+    public void testEscape()
+    {
+        assertEquals("foo \\(&\\)", ConfigurationSupport.escape("foo (&)"));
+    }
+    
+}

Propchange: felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: felix/trunk/scr/src/test/java/org/apache/felix/scr/impl/config/ConfigurationSupportTest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain