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();
     }
 
     /**


Reply via email to