View Javadoc

    1   /***
    2    *
    3    * Copyright 2004 Protique Ltd
    4    *
    5    * Licensed under the Apache License, Version 2.0 (the "License");
    6    * you may not use this file except in compliance with the License.
    7    * You may obtain a copy of the License at
    8    *
    9    * http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   *
    17   **/
    18
    19  package org.codehaus.activemq.filter;
    20
    21  import javax.jms.JMSException;
    22  import javax.jms.Message;
    23
    24  /***
    25   * Represents a property  expression
    26   *
    27   * @version $Revision: 1.1 $
    28   */
    29  public class PropertyExpression implements Expression {
    30
    31      private String name;
    32
    33      public PropertyExpression(String name) {
    34          this.name = name;
    35      }
    36
    37      public Object evaluate(Message message) throws JMSException {
    38          Object result = null;
    39          if (name != null) {
    40              result = message.getObjectProperty(name);
    41          }
    42          if (result == null) {
    43              //see if a defined header property
    44              if (name.equals("JMSType")) {
    45                  result = message.getJMSType();
    46              }
    47              else if (name.equals("JMSMessageID")) {
    48                  result = message.getJMSMessageID();
    49              }
    50              else if (name.equals("JMSCorrelationID")) {
    51                  result = message.getJMSCorrelationID();
    52              }
    53              else if (name.equals("JMSPriority")) {
    54                  result = new Integer(message.getJMSPriority());
    55              }
    56              else if (name.equals("JMSTimestamp")) {
    57                  result = new Long(message.getJMSTimestamp());
    58              }
    59          }
    60          return result;
    61      }
    62
    63      public String getName() {
    64          return name;
    65      }
    66
    67
    68      /***
    69       * @see java.lang.Object#toString()
    70       */
    71      public String toString() {
    72          return name;
    73      }
    74
    75      /***
    76       * @see java.lang.Object#hashCode()
    77       */
    78      public int hashCode() {
    79          return name.hashCode();
    80      }
    81
    82      /***
    83       * @see java.lang.Object#equals(java.lang.Object)
    84       */
    85      public boolean equals(Object o) {
    86
    87          if (o == null || !this.getClass().equals(o.getClass())) {
    88              return false;
    89          }
    90          return name.equals(((PropertyExpression) o).name);
    91
    92      }
    93
    94  }