summaryrefslogtreecommitdiff
path: root/qpid/java
diff options
context:
space:
mode:
authorAndrew Donald Kennedy <grkvlt@apache.org>2010-09-17 13:42:35 +0000
committerAndrew Donald Kennedy <grkvlt@apache.org>2010-09-17 13:42:35 +0000
commitb2248cf03878965fb26d117eed764fe38c3bc982 (patch)
treee53102dddc974e8a4c59cc368d5511223ca72e37 /qpid/java
parent2ee8be40abc81649c0f0e29ea912ddc061dafb8a (diff)
downloadqpid-python-b2248cf03878965fb26d117eed764fe38c3bc982.tar.gz
QPID-2858: Implement FilterManager for 0-10 subscriptions
Applying patch from <sorins@gmail.com> git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@998126 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java')
-rw-r--r--qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java19
1 files changed, 18 insertions, 1 deletions
diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
index 84601b1b7a..04337c08df 100644
--- a/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
+++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/transport/ServerSessionDelegate.java
@@ -30,6 +30,8 @@ import org.apache.qpid.AMQUnknownExchangeType;
import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.framing.FieldTable;
import org.apache.qpid.server.exchange.*;
+import org.apache.qpid.server.filter.FilterManager;
+import org.apache.qpid.server.filter.FilterManagerFactory;
import org.apache.qpid.server.flow.FlowCreditManager_0_10;
import org.apache.qpid.server.flow.WindowCreditManager;
import org.apache.qpid.server.message.MessageMetaData_0_10;
@@ -228,7 +230,22 @@ public class ServerSessionDelegate extends SessionDelegate
FlowCreditManager_0_10 creditManager = new WindowCreditManager(0L,0L);
- // TODO filters
+ FieldTable filters = new FieldTable();
+ Map<String,Object> fields = method.getFields();
+ for (String key: fields.keySet())
+ {
+ filters.setObject(key, fields.get(key));
+ }
+ FilterManager filterManager = null;
+ try
+ {
+ filterManager = FilterManagerFactory.createManager(filters);
+ }
+ catch (AMQException amqe)
+ {
+ exception(session, method, ExecutionErrorCode.ILLEGAL_ARGUMENT, "Exception Creating FilterManager");
+ return;
+ }
Subscription_0_10 sub = new Subscription_0_10((ServerSession)session,
destination,