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