diff options
author | Robert Godfrey <rgodfrey@apache.org> | 2008-02-12 16:44:59 +0000 |
---|---|---|
committer | Robert Godfrey <rgodfrey@apache.org> | 2008-02-12 16:44:59 +0000 |
commit | 1df04df23ddda53cda350ddaeec692cb2f7cbed8 (patch) | |
tree | adc914af4a7416b3dd83342c08fe43029cd30f1e /java | |
parent | d203e3c2b52e59b8b5faed91b57be4603840b9a7 (diff) | |
download | qpid-python-1df04df23ddda53cda350ddaeec692cb2f7cbed8.tar.gz |
QPID-787 : Allow for quoting of identifiers in selectors
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2.1@620858 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
-rw-r--r-- | java/broker/src/main/grammar/SelectorParser.jj | 17 | ||||
-rw-r--r-- | java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java | 3 |
2 files changed, 19 insertions, 1 deletions
diff --git a/java/broker/src/main/grammar/SelectorParser.jj b/java/broker/src/main/grammar/SelectorParser.jj index adec1b348d..f6a843e080 100644 --- a/java/broker/src/main/grammar/SelectorParser.jj +++ b/java/broker/src/main/grammar/SelectorParser.jj @@ -172,6 +172,7 @@ TOKEN [IGNORE_CASE] : TOKEN [IGNORE_CASE] :
{
< ID : ["a"-"z", "_", "$"] (["a"-"z","0"-"9","_", "$"])* >
+ | < QUOTED_ID : "\"" ( ("\"\"") | ~["\""] )* "\"" >
}
// ----------------------------------------------------------------------------
@@ -589,6 +590,7 @@ String stringLitteral() : PropertyExpression variable() :
{
Token t;
+ StringBuffer rc = new StringBuffer();
PropertyExpression left=null;
}
{
@@ -597,6 +599,21 @@ PropertyExpression variable() : {
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;
diff --git a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java index 40c712c1c9..e0bfc5d498 100644 --- a/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java +++ b/java/client/src/test/java/org/apache/qpid/test/unit/basic/SelectorTest.java @@ -72,7 +72,7 @@ public class SelectorTest extends TestCase implements MessageListener 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 @@ public class SelectorTest extends TestCase implements MessageListener 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); |