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  package org.codehaus.activemq.message;
    19
    20  /***
    21   * Describes a Message consumer
    22   *
    23   * @version $Revision: 1.9 $
    24   */
    25  public class ConsumerInfo extends AbstractPacket {
    26      private ActiveMQDestination destination;
    27      private String consumerId;
    28      private String clientId;
    29      private String sessionId;
    30      private String consumerName;
    31      private String selector;
    32      private long startTime;
    33      private boolean started;
    34      private int consumerNo;
    35      private boolean noLocal;
    36      private boolean browser;
    37      private int prefetchNumber = 100;
    38      private transient String consumerKey;
    39
    40      /***
    41       * @return Returns the consumerId.
    42       */
    43      public String getConsumerId() {
    44          return consumerId;
    45      }
    46
    47      /***
    48       * @param consumerId The consumerId to set.
    49       */
    50      public void setConsumerId(String consumerId) {
    51          this.consumerId = consumerId;
    52      }
    53
    54      /***
    55       * @return Returns the sessionId.
    56       */
    57      public String getSessionId() {
    58          return sessionId;
    59      }
    60
    61      /***
    62       * @param sessionId The sessionId to set.
    63       */
    64      public void setSessionId(String sessionId) {
    65          this.sessionId = sessionId;
    66      }
    67
    68      /***
    69       * Return the type of Packet
    70       *
    71       * @return integer representation of the type of Packet
    72       */
    73      public int getPacketType() {
    74          return CONSUMER_INFO;
    75      }
    76
    77      /***
    78       * Test for equality
    79       *
    80       * @param obj object to test
    81       * @return true if equivalent
    82       */
    83      public boolean equals(Object obj) {
    84          boolean result = false;
    85          if (obj != null && obj instanceof ConsumerInfo) {
    86              ConsumerInfo that = (ConsumerInfo) obj;
    87              result = this.consumerId.equals(that.consumerId);
    88          }
    89          return result;
    90      }
    91
    92      /***
    93       * @return hash code for instance
    94       */
    95      public int hashCode() {
    96          return this.consumerId.hashCode();
    97      }
    98
    99      /***
    100      * @return a pretty print
    101      */
    102
    103     public String toString() {
    104         return super.toString() + " consumerId: " + consumerId + " clientId: " + clientId + " consumerName: " + consumerName + " destination: " + destination;
    105     }
    106
    107     /***
    108      * @return Returns the clientId.
    109      */
    110     public String getClientId() {
    111         return this.clientId;
    112     }
    113
    114     /***
    115      * @param newClientId The clientId to set.
    116      */
    117     public void setClientId(String newClientId) {
    118         this.clientId = newClientId;
    119     }
    120
    121     /***
    122      * @return Returns the destination.
    123      */
    124     public ActiveMQDestination getDestination() {
    125         return this.destination;
    126     }
    127
    128     /***
    129      * @param newDestination The destination to set.
    130      */
    131     public void setDestination(ActiveMQDestination newDestination) {
    132         this.destination = newDestination;
    133     }
    134
    135     /***
    136      * @return Returns the selector.
    137      */
    138     public String getSelector() {
    139         return this.selector;
    140     }
    141
    142     /***
    143      * @param newSelector The selector to set.
    144      */
    145     public void setSelector(String newSelector) {
    146         this.selector = newSelector;
    147     }
    148
    149     /***
    150      * @return Returns the started.
    151      */
    152     public boolean isStarted() {
    153         return this.started;
    154     }
    155
    156     /***
    157      * @param flag to indicate if started
    158      */
    159     public void setStarted(boolean flag) {
    160         this.started = flag;
    161     }
    162
    163     /***
    164      * @return Returns the startTime.
    165      */
    166     public long getStartTime() {
    167         return this.startTime;
    168     }
    169
    170     /***
    171      * @param newStartTime The startTime to set.
    172      */
    173     public void setStartTime(long newStartTime) {
    174         this.startTime = newStartTime;
    175     }
    176
    177     /***
    178      * @return Returns the consumerNo.
    179      */
    180     public int getConsumerNo() {
    181         return this.consumerNo;
    182     }
    183
    184     /***
    185      * @param newConsumerNo The consumerNo to set.
    186      */
    187     public void setConsumerNo(int newConsumerNo) {
    188         this.consumerNo = newConsumerNo;
    189     }
    190
    191     /***
    192      * @return Returns the consumer name.
    193      */
    194     public String getConsumerName() {
    195         return this.consumerName;
    196     }
    197
    198     /***
    199      * @param newconsumerName The consumerName to set.
    200      */
    201     public void setConsumerName(String newconsumerName) {
    202         this.consumerName = newconsumerName;
    203     }
    204
    205     /***
    206      * @return Returns true if the Consumer is a durable Topic subscriber
    207      */
    208     public boolean isDurableTopic() {
    209         return this.destination.isTopic() && !this.destination.isTemporary() && this.consumerName != null
    210                 && this.consumerName.length() > 0;
    211     }
    212
    213     /***
    214      * @return Returns the noLocal.
    215      */
    216     public boolean isNoLocal() {
    217         return noLocal;
    218     }
    219
    220     /***
    221      * @param noLocal The noLocal to set.
    222      */
    223     public void setNoLocal(boolean noLocal) {
    224         this.noLocal = noLocal;
    225     }
    226
    227     /***
    228      * @return Returns the browser.
    229      */
    230     public boolean isBrowser() {
    231         return browser;
    232     }
    233
    234     /***
    235      * @param browser The browser to set.
    236      */
    237     public void setBrowser(boolean browser) {
    238         this.browser = browser;
    239     }
    240
    241     /***
    242      * @return Returns the prefetchNumber.
    243      */
    244     public int getPrefetchNumber() {
    245         return prefetchNumber;
    246     }
    247
    248     /***
    249      * @param prefetchNumber The prefetchNumber to set.
    250      */
    251     public void setPrefetchNumber(int prefetchNumber) {
    252         this.prefetchNumber = prefetchNumber;
    253     }
    254
    255
    256     /***
    257      * Creates a primary key for the consumer info which uniquely
    258      * describes the consumer using a combination of clientID and
    259      * consumerName
    260      *
    261      * @return the consumerKey
    262      */
    263     public String getConsumerKey() {
    264         if (consumerKey == null){
    265             consumerKey = generateConsumerKey(clientId,consumerName);
    266         }
    267         return consumerKey;
    268     }
    269
    270     /***
    271      * Generate a primary key for a consumer from the clientId and consumerName
    272      * @param clientId
    273      * @param consumerName
    274      * @return
    275      */
    276     public static String generateConsumerKey(String clientId, String consumerName){
    277         return "[" + clientId + ":" + consumerName + "]";
    278     }
    279 }