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/03/24 10:32:37 UTC
svn commit: r926990 -
/felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
Author: rickhall
Date: Wed Mar 24 09:32:37 2010
New Revision: 926990
URL: http://svn.apache.org/viewvc?rev=926990&view=rev
Log:
Fix some bugs in approximate operator. (FELIX-2039)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java?rev=926990&r1=926989&r2=926990&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java Wed Mar 24 09:32:37 2010
@@ -339,19 +339,19 @@ public class CapabilitySet
return true;
}
- // The substring operator only works on string values, so if the
- // lhs is not a string, then do an equality comparison using the
- // original string containing wildcards.
- if ((op == SimpleFilter.SUBSTRING) && !(lhs instanceof String))
- {
- op = SimpleFilter.EQ;
- rhsUnknown = SimpleFilter.unparseSubstring((List<String>) rhsUnknown);
- }
-
// If the type is comparable, then we can just return the
// result immediately.
if (lhs instanceof Comparable)
{
+ // The substring operator only works on string values, so if the
+ // lhs is not a string, then do an equality comparison using the
+ // original string containing wildcards.
+ if ((op == SimpleFilter.SUBSTRING) && !(lhs instanceof String))
+ {
+ op = SimpleFilter.EQ;
+ rhsUnknown = SimpleFilter.unparseSubstring((List<String>) rhsUnknown);
+ }
+
Object rhs;
if (op == SimpleFilter.SUBSTRING)
{
@@ -435,6 +435,15 @@ public class CapabilitySet
return false;
}
+ // The substring operator only works on string values, so if the
+ // lhs is not a string, then do an equality comparison using the
+ // original string containing wildcards.
+ if ((op == SimpleFilter.SUBSTRING) && !(lhs instanceof String))
+ {
+ op = SimpleFilter.EQ;
+ rhsUnknown = SimpleFilter.unparseSubstring((List<String>) rhsUnknown);
+ }
+
// Since we cannot identify the LHS type, then we can only perform
// equality comparison.
try
@@ -451,17 +460,8 @@ public class CapabilitySet
{
if (rhs instanceof String)
{
- String s = (String) rhs;
- StringBuffer sb = new StringBuffer(s.length());
- for (int i = 0; i < s.length(); i++)
- {
- if (!Character.isWhitespace(s.charAt(i)))
- {
- sb.append(s.charAt(i));
- }
- }
- s = sb.toString();
- return s.equalsIgnoreCase((String) lhs);
+ return removeWhitespace((String) lhs)
+ .equalsIgnoreCase(removeWhitespace((String) rhs));
}
else if (rhs instanceof Character)
{
@@ -471,6 +471,19 @@ public class CapabilitySet
return lhs.equals(rhs);
}
+ private static String removeWhitespace(String s)
+ {
+ StringBuffer sb = new StringBuffer(s.length());
+ for (int i = 0; i < s.length(); i++)
+ {
+ if (!Character.isWhitespace(s.charAt(i)))
+ {
+ sb.append(s.charAt(i));
+ }
+ }
+ return sb.toString();
+ }
+
private static Object coerceType(Object lhs, String rhsString) throws Exception
{
// If the LHS expects a string, then we can just return