Author: rgodfrey
Date: Tue Feb 12 08:44:59 2008
New Revision: 620858

URL: http://svn.apache.org/viewvc?rev=620858&view=rev
Log:
QPID-787 : Allow for quoting of identifiers in selectors

Modified:
    incubator/qpid/branches/M2.1/java/broker/src/main/grammar/SelectorParser.jj
    
incubator/qpid/branches/M2.1/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java

Modified: 
incubator/qpid/branches/M2.1/java/broker/src/main/grammar/SelectorParser.jj
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/broker/src/main/grammar/SelectorParser.jj?rev=620858&r1=620857&r2=620858&view=diff
==============================================================================
--- incubator/qpid/branches/M2.1/java/broker/src/main/grammar/SelectorParser.jj 
(original)
+++ incubator/qpid/branches/M2.1/java/broker/src/main/grammar/SelectorParser.jj 
Tue Feb 12 08:44:59 2008
@@ -172,6 +172,7 @@
 TOKEN [IGNORE_CASE] :
 {
     < ID : ["a"-"z", "_", "$"] (["a"-"z","0"-"9","_", "$"])* >
+    | < QUOTED_ID : "\"" ( ("\"\"") | ~["\""] )*  "\""  >
 }
 
 // ----------------------------------------------------------------------------
@@ -589,6 +590,7 @@
 PropertyExpression variable() :
 {
     Token t;
+    StringBuffer rc = new StringBuffer();
     PropertyExpression left=null;
 }
 {
@@ -597,6 +599,21 @@
         {
             left = new PropertyExpression(t.image);
         }
+        |
+        t = <QUOTED_ID>
+        {
+            // Decode the sting value.
+            String image = t.image;
+            for( int i=1; i < image.length()-1; i++ ) {
+                char c = image.charAt(i);
+                if( c == '"' )
+                    i++;
+                rc.append(c);
+            }
+            return new PropertyExpression(rc.toString());
+        }
+
+
     )
     {
         return left;

Modified: 
incubator/qpid/branches/M2.1/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java
URL: 
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java?rev=620858&r1=620857&r2=620858&view=diff
==============================================================================
--- 
incubator/qpid/branches/M2.1/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java
 (original)
+++ 
incubator/qpid/branches/M2.1/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java
 Tue Feb 12 08:44:59 2008
@@ -72,7 +72,7 @@
         connection.start();
 
         String selector = null;
-        // selector = "Cost = 2 AND JMSDeliveryMode=" + 
DeliveryMode.NON_PERSISTENT;
+         selector = "Cost = 2 AND \"property-with-hyphen\" = 'wibble'";
         // selector = "JMSType = Special AND Cost = 2 AND AMQMessageID > 0 AND 
JMSDeliveryMode=" + DeliveryMode.NON_PERSISTENT;
 
         _session = (AMQSession) connection.createSession(false, 
AMQSession.NO_ACKNOWLEDGE);
@@ -87,6 +87,7 @@
             Message msg = _session.createTextMessage("Message");
             msg.setJMSPriority(1);
             msg.setIntProperty("Cost", 2);
+            msg.setStringProperty("property-with-hyphen","wibble");
             msg.setJMSType("Special");
 
             _logger.info("Sending Message:" + msg);


Reply via email to