Author: rgodfrey
Date: Wed Apr 16 02:24:04 2008
New Revision: 648637
URL: http://svn.apache.org/viewvc?rev=648637&view=rev
Log:
QPID-922 : Selectors on header properties should not convert AMQShortStrings to
Strings on every evaluation
Modified:
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
Modified:
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java?rev=648637&r1=648636&r2=648637&view=diff
==============================================================================
---
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
(original)
+++
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ComparisonExpression.java
Wed Apr 16 02:24:04 2008
@@ -28,6 +28,7 @@
import java.util.regex.Pattern;
import org.apache.qpid.AMQException;
+import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.queue.AMQMessage;
/**
@@ -147,6 +148,11 @@
return null;
}
+ if(rv instanceof AMQShortString)
+ {
+ rv = rv.toString();
+ }
+
if (!(rv instanceof String))
{
return
@@ -448,7 +454,40 @@
// try to convert up to allow the comparison.
if (lc != rc)
{
- if (lc == Byte.class)
+ if(lc == AMQShortString.class)
+ {
+ if(rc == String.class)
+ {
+ rv = new AMQShortString((String) rv);
+
+ if(right instanceof ConstantExpression)
+ {
+ ((ConstantExpression)right).setValue(rv);
+ }
+ }
+ else
+ {
+ return Boolean.FALSE;
+ }
+ }
+ else if(lc == String.class)
+ {
+ if(rc == AMQShortString.class)
+ {
+ lv = new AMQShortString((String) lv);
+
+ if(left instanceof ConstantExpression)
+ {
+ ((ConstantExpression)left).setValue(lv);
+ }
+ }
+ else
+ {
+ return Boolean.FALSE;
+ }
+
+ }
+ else if (lc == Byte.class)
{
if (rc == Short.class)
{
Modified:
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java?rev=648637&r1=648636&r2=648637&view=diff
==============================================================================
---
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
(original)
+++
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/ConstantExpression.java
Wed Apr 16 02:24:04 2008
@@ -26,6 +26,7 @@
import java.math.BigDecimal;
import org.apache.qpid.AMQException;
+import org.apache.qpid.framing.AMQShortString;
import org.apache.qpid.server.queue.AMQMessage;
/**
@@ -129,6 +130,12 @@
{
return value;
}
+
+ public void setValue(final Object value)
+ {
+ this.value = value;
+ }
+
/**
* @see java.lang.Object#toString()
Modified:
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java?rev=648637&r1=648636&r2=648637&view=diff
==============================================================================
---
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
(original)
+++
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/JMSSelectorFilter.java
Wed Apr 16 02:24:04 2008
@@ -50,7 +50,10 @@
try
{
boolean match = _matcher.matches(message);
- _logger.info(message + " match(" + match + ") selector(" +
System.identityHashCode(_selector) + "):" + _selector);
+ if(_logger.isDebugEnabled())
+ {
+ _logger.debug(message + " match(" + match + ") selector(" +
System.identityHashCode(_selector) + "):" + _selector);
+ }
return match;
}
catch (AMQException e)
Modified:
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
URL:
http://svn.apache.org/viewvc/incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java?rev=648637&r1=648636&r2=648637&view=diff
==============================================================================
---
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
(original)
+++
incubator/qpid/branches/M2.1/java/broker/src/main/java/org/apache/qpid/server/filter/PropertyExpression.java
Wed Apr 16 02:24:04 2008
@@ -67,7 +67,7 @@
message.getContentHeaderBody().properties;
AMQShortString replyTo =
_properties.getReplyTo();
- return (replyTo == null) ?
null : replyTo.toString();
+ return (replyTo == null) ?
null : replyTo;
}
catch (AMQException e)
{
@@ -91,7 +91,7 @@
message.getContentHeaderBody().properties;
AMQShortString type =
_properties.getType();
- return (type == null) ? null
: type.toString();
+ return (type == null) ? null
: type;
}
catch (AMQException e)
{
@@ -206,7 +206,7 @@
message.getContentHeaderBody().properties;
AMQShortString correlationId
= _properties.getCorrelationId();
- return (correlationId ==
null) ? null : correlationId.toString();
+ return (correlationId ==
null) ? null : correlationId;
}
catch (AMQException e)
{
@@ -251,12 +251,12 @@
}
- private final String name;
+ private final AMQShortString name;
private final Expression jmsPropertyExpression;
public PropertyExpression(String name)
{
- this.name = name;
+ this.name = new AMQShortString(name);
jmsPropertyExpression = JMS_PROPERTY_EXPRESSIONS.get(name);
}
@@ -283,7 +283,7 @@
}
}
- public String getName()
+ public AMQShortString getName()
{
return name;
}
@@ -293,7 +293,7 @@
*/
public String toString()
{
- return name;
+ return name.toString();
}
/**