You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2010/07/13 21:49:43 UTC

svn commit: r963840 - in /felix/trunk/framework/src: main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java

Author: rickhall
Date: Tue Jul 13 19:49:42 2010
New Revision: 963840

URL: http://svn.apache.org/viewvc?rev=963840&view=rev
Log:
Need to special case substring matching when there is no wildcard
to simply perform equals() comparison. (FELIX-2473)

Modified:
    felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java
    felix/trunk/framework/src/test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java?rev=963840&r1=963839&r2=963840&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.java Tue Jul 13 19:49:42 2010
@@ -471,6 +471,16 @@ loop:   for (;;)
         boolean result = true;
         int len = pieces.size();
 
+        // Special case, if there is only one piece, then
+        // we must perform an equality test.
+        if (len == 1)
+        {
+            return s.equals(pieces.get(0));
+        }
+
+        // Otherwise, check whether the pieces match
+        // the specified string.
+
         int index = 0;
 
 loop:   for (int i = 0; i < len; i++)

Modified: felix/trunk/framework/src/test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java?rev=963840&r1=963839&r2=963840&view=diff
==============================================================================
--- felix/trunk/framework/src/test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java (original)
+++ felix/trunk/framework/src/test/java/org/apache/felix/framework/capabilityset/SimpleFilterTest.java Tue Jul 13 19:49:42 2010
@@ -27,6 +27,16 @@ public class SimpleFilterTest extends Te
     {
         List<String> pieces;
 
+        pieces = SimpleFilter.parseSubstring("*");
+        assertTrue("Should match!", SimpleFilter.compareSubstring(pieces, ""));
+
+        pieces = SimpleFilter.parseSubstring("foo");
+        assertFalse("Should not match!", SimpleFilter.compareSubstring(pieces, ""));
+
+        pieces = SimpleFilter.parseSubstring("");
+        assertTrue("Should match!", SimpleFilter.compareSubstring(pieces, ""));
+        assertFalse("Should not match!", SimpleFilter.compareSubstring(pieces, "foo"));
+
         pieces = SimpleFilter.parseSubstring("foo");
         assertTrue("Should match!", SimpleFilter.compareSubstring(pieces, "foo"));
         assertFalse("Should not match!", SimpleFilter.compareSubstring(pieces, "barfoo"));