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/23 09:04:44 UTC
svn commit: r926490 - in
/felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset:
CapabilitySet.java SimpleFilter.java
Author: rickhall
Date: Tue Mar 23 08:04:44 2010
New Revision: 926490
URL: http://svn.apache.org/viewvc?rev=926490&view=rev
Log:
Add PRESENT operator to new filter impl. (FELIX-2039)
Modified:
felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/CapabilitySet.java
felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset/SimpleFilter.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=926490&r1=926489&r2=926490&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 Tue Mar 23 08:04:44 2010
@@ -331,6 +331,13 @@ public class CapabilitySet
private static boolean compare(Object lhs, Object rhsUnknown, int op)
{
+ // If this is a PRESENT operation, then just return true immediately
+ // since we wouldn't be here if the attribute wasn't present.
+ if (op == SimpleFilter.PRESENT)
+ {
+ return true;
+ }
+
// If the type is comparable, then we can just return the
// result immediately.
if (lhs instanceof Comparable)
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=926490&r1=926489&r2=926490&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 Mar 23 08:04:44 2010
@@ -32,6 +32,7 @@ public class SimpleFilter
// TODO: FELIX3 - Should we handle substring as a separate operator or as a
// special case of string equality comparison?
public static final int SUBSTRING = 7;
+ public static final int PRESENT = 8;
private final String m_name;
private final Object m_value;
@@ -85,6 +86,9 @@ public class SimpleFilter
case SUBSTRING:
s = "(" + m_name + "=" + unparseSubstring((List<String>) m_value) + ")";
break;
+ case PRESENT:
+ s = "(" + m_name + "=*)";
+ break;
}
return s;
}
@@ -329,11 +333,17 @@ public class SimpleFilter
Object value = sb.toString();
// Check if the equality comparison is actually a substring
- // comparison.
+ // or present operation.
if (op == EQ)
{
List<String> values = parseSubstring((String) value);
- if (values.size() > 1)
+ if ((values.size() == 2)
+ && (values.get(0).length() == 0)
+ && (values.get(1).length() == 0))
+ {
+ op = PRESENT;
+ }
+ else if (values.size() > 1)
{
op = SUBSTRING;
value = values;