001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 package org.apache.activemq.command; 018 019 import org.apache.activemq.util.IntrospectionSupport; 020 021 /** 022 * Used to represent a durable subscription. 023 * 024 * @openwire:marshaller code="55" 025 * 026 */ 027 public class SubscriptionInfo implements DataStructure { 028 029 public static final byte DATA_STRUCTURE_TYPE = CommandTypes.DURABLE_SUBSCRIPTION_INFO; 030 031 protected ActiveMQDestination subscribedDestination; 032 protected ActiveMQDestination destination; 033 protected String clientId; 034 protected String subscriptionName; 035 protected String selector; 036 037 public byte getDataStructureType() { 038 return DATA_STRUCTURE_TYPE; 039 } 040 041 /** 042 * @openwire:property version=1 043 */ 044 public String getClientId() { 045 return clientId; 046 } 047 048 public void setClientId(String clientId) { 049 this.clientId = clientId; 050 } 051 052 /** 053 * This is the a resolved destination that the subscription is receiving 054 * messages from. This will never be a pattern or a composite destination. 055 * 056 * @openwire:property version=1 cache=true 057 */ 058 public ActiveMQDestination getDestination() { 059 return destination; 060 } 061 062 public void setDestination(ActiveMQDestination destination) { 063 this.destination = destination; 064 } 065 066 /** 067 * @openwire:property version=1 068 */ 069 public String getSelector() { 070 return selector; 071 } 072 073 public void setSelector(String selector) { 074 this.selector = selector; 075 } 076 077 /** 078 * @openwire:property version=1 079 */ 080 public String getSubcriptionName() { 081 return subscriptionName; 082 } 083 084 /** 085 * @param subscriptionName * 086 */ 087 public void setSubcriptionName(String subscriptionName) { 088 this.subscriptionName = subscriptionName; 089 } 090 091 public String getSubscriptionName() { 092 return subscriptionName; 093 } 094 095 public void setSubscriptionName(String subscriptionName) { 096 this.subscriptionName = subscriptionName; 097 } 098 099 public boolean isMarshallAware() { 100 return false; 101 } 102 103 @Override 104 public String toString() { 105 return IntrospectionSupport.toString(this); 106 } 107 108 @Override 109 public int hashCode() { 110 int h1 = clientId != null ? clientId.hashCode() : -1; 111 int h2 = subscriptionName != null ? subscriptionName.hashCode() : -1; 112 return h1 ^ h2; 113 } 114 115 @Override 116 public boolean equals(Object obj) { 117 boolean result = false; 118 if (obj instanceof SubscriptionInfo) { 119 SubscriptionInfo other = (SubscriptionInfo)obj; 120 result = (clientId == null && other.clientId == null || clientId != null 121 && other.clientId != null 122 && clientId.equals(other.clientId)) 123 && (subscriptionName == null && other.subscriptionName == null || subscriptionName != null 124 && other.subscriptionName != null 125 && subscriptionName 126 .equals(other.subscriptionName)); 127 } 128 return result; 129 } 130 131 /** 132 * The destination the client originally subscribed to.. This may not match 133 * the {@see getDestination} method if the subscribed destination uses 134 * patterns or composites. 135 * 136 * If the subscribed destinationis not set, this just ruturns the 137 * desitination. 138 * 139 * @openwire:property version=3 140 */ 141 public ActiveMQDestination getSubscribedDestination() { 142 if (subscribedDestination == null) { 143 return getDestination(); 144 } 145 return subscribedDestination; 146 } 147 148 public void setSubscribedDestination(ActiveMQDestination subscribedDestination) { 149 this.subscribedDestination = subscribedDestination; 150 } 151 152 }