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 2011/06/15 18:11:47 UTC

svn commit: r1136102 - in /felix/trunk/framework/src/main/java/org/apache/felix/framework/capabilityset: CapabilitySet.java SimpleFilter.java

Author: rickhall
Date: Wed Jun 15 16:11:46 2011
New Revision: 1136102

URL: http://svn.apache.org/viewvc?rev=1136102&view=rev
Log:
Exceptions thrown by equals()/compare() should result in a false
for filter evaluation. (FELIX-2998)

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=1136102&r1=1136101&r2=1136102&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 Jun 15 16:11:46 2011
@@ -407,11 +407,32 @@ public void dump()
             switch (op)
             {
                 case SimpleFilter.EQ :
-                    return (((Comparable) lhs).compareTo(rhs) == 0);
+                    try
+                    {
+                        return (((Comparable) lhs).compareTo(rhs) == 0);
+                    }
+                    catch (Exception ex)
+                    {
+                        return false;
+                    }
                 case SimpleFilter.GTE :
-                    return (((Comparable) lhs).compareTo(rhs) >= 0);
+                    try
+                    {
+                        return (((Comparable) lhs).compareTo(rhs) >= 0);
+                    }
+                    catch (Exception ex)
+                    {
+                        return false;
+                    }
                 case SimpleFilter.LTE :
-                    return (((Comparable) lhs).compareTo(rhs) <= 0);
+                    try
+                    {
+                        return (((Comparable) lhs).compareTo(rhs) <= 0);
+                    }
+                    catch (Exception ex)
+                    {
+                        return false;
+                    }
                 case SimpleFilter.APPROX :
                     return compareApproximate(((Comparable) lhs), rhs);
                 case SimpleFilter.SUBSTRING :
@@ -478,27 +499,14 @@ public void dump()
 
         // Since we cannot identify the LHS type, then we can only perform
         // equality comparison.
-// TODO: COMPLIANCE - This should be changed to return false in case
-//       of an exception, but the R4.2 CT has a mistake in it, so for
-//       now we'll throw exceptions from equals().
-//        try
-//        {
-//            return lhs.equals(coerceType(lhs, (String) rhsUnknown));
-//        }
-//        catch (Exception ex)
-//        {
-//            return false;
-//        }
-        Object rhsObj = null;
         try
         {
-            rhsObj = coerceType(lhs, (String) rhsUnknown);
+            return lhs.equals(coerceType(lhs, (String) rhsUnknown));
         }
         catch (Exception ex)
         {
             return false;
         }
-        return lhs.equals(rhsObj);
     }
 
     private static boolean compareApproximate(Object lhs, Object rhs)

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=1136102&r1=1136101&r2=1136102&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 Wed Jun 15 16:11:46 2011
@@ -418,7 +418,7 @@ loop:   for (;;)
                 }
                 ss.setLength(0);
                 // if this is a leading star, then track it
-                if (pieces.size() == 0)
+                if (pieces.isEmpty())
                 {
                     leftstar = true;
                 }