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"));