You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/11/26 06:32:50 UTC

svn commit: r598134 - /mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java

Author: trustin
Date: Sun Nov 25 21:32:37 2007
New Revision: 598134

URL: http://svn.apache.org/viewvc?rev=598134&view=rev
Log:
Disabled implicit boolean conversion in IoSessionFinder.

Modified:
    mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java

Modified: mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java
URL: http://svn.apache.org/viewvc/mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java?rev=598134&r1=598133&r2=598134&view=diff
==============================================================================
--- mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java (original)
+++ mina/trunk/integration-ognl/src/main/java/org/apache/mina/integration/ognl/IoSessionFinder.java Sun Nov 25 21:32:37 2007
@@ -32,8 +32,14 @@
  * @version $Rev$, $Date$
  */
 public class IoSessionFinder {
+    
+    private final String query;
     private final Object expression;
     
+    /**
+     * Creates a new instance with the specified OGNL expression that returns
+     * a boolean value (e.g. <tt>"id == 0x12345678"</tt>).
+     */
     public IoSessionFinder(String query) {
         if (query == null) {
             throw new NullPointerException("query");
@@ -44,6 +50,7 @@
             throw new IllegalArgumentException("query is empty.");
         }
         
+        this.query = query;
         try {
             expression = Ognl.parseExpression(query);
         } catch (OgnlException e) {
@@ -51,6 +58,11 @@
         }
     }
     
+    /**
+     * Finds a {@link Set} of {@link IoSession}s that matches the query
+     * from the specified sessions and returns the matches.
+     * @throws OgnlException if failed to evaluate the OGNL expression
+     */
     public Set<IoSession> find(Iterable<IoSession> sessions) throws OgnlException {
         if (sessions == null) {
             throw new NullPointerException("sessions");
@@ -59,10 +71,14 @@
         Set<IoSession> answer = new LinkedHashSet<IoSession>();
         for (IoSession s: sessions) {
             OgnlContext context = (OgnlContext) Ognl.createDefaultContext(s);
-            Boolean found = (Boolean) Ognl.getValue(
-                    expression, context, s, Boolean.class);
-            if (found != null && found) {
-                answer.add(s);
+            Object result = Ognl.getValue(expression, context, s);
+            if (result instanceof Boolean) {
+                if (((Boolean) result).booleanValue()) {
+                    answer.add(s);
+                }
+            } else {
+                throw new OgnlException(
+                        "Query didn't return a boolean value: " + query);
             }
         }