diff --git a/openwire-dotnet/src/OpenWire.Core/Destination.cs b/openwire-dotnet/src/OpenWire.Core/Destination.cs index 186bb5ad87..960c93d54d 100755 --- a/openwire-dotnet/src/OpenWire.Core/Destination.cs +++ b/openwire-dotnet/src/OpenWire.Core/Destination.cs @@ -6,493 +6,7 @@ namespace OpenWire.Core /// /// Summary description for Destination. /// - public abstract class Destination { - - /** - * Topic Destination object - */ - public const int ACTIVEMQ_TOPIC = 1; - /** - * Temporary Topic Destination object - */ - public const int ACTIVEMQ_TEMPORARY_TOPIC = 2; - - /** - * Queue Destination object - */ - public const int ACTIVEMQ_QUEUE = 3; - /** - * Temporary Queue Destination object - */ - public const int ACTIVEMQ_TEMPORARY_QUEUE = 4; - - /** - * prefix for Advisory message destinations - */ - public const String ADVISORY_PREFIX = "ActiveMQ.Advisory."; - - /** - * prefix for consumer advisory destinations - */ - public const String CONSUMER_ADVISORY_PREFIX = ADVISORY_PREFIX + "Consumers."; - - /** - * prefix for producer advisory destinations - */ - public const String PRODUCER_ADVISORY_PREFIX = ADVISORY_PREFIX + "Producers."; - - /** - * prefix for connection advisory destinations - */ - public const String CONNECTION_ADVISORY_PREFIX = ADVISORY_PREFIX + "Connections."; - - /** - * The default target for ordered destinations - */ - public const String DEFAULT_ORDERED_TARGET = "coordinator"; - - private const int NULL_DESTINATION = 10; - - private const String TEMP_PREFIX = "{TD{"; - private const String TEMP_POSTFIX = "}TD}"; - private const String COMPOSITE_SEPARATOR = ","; - private const String QUEUE_PREFIX = "queue://"; - private const String TOPIC_PREFIX = "topic://"; - - - private String physicalName = ""; - - // Cached transient data - private bool exclusive; - private bool ordered; - private bool advisory; - private String orderedTarget = DEFAULT_ORDERED_TARGET; - - /** - * The Default Constructor - */ - protected Destination() { - } - - /** - * Construct the Destination with a defined physical name; - * - * @param name - */ - - protected Destination(String name) { - this.physicalName = name; - this.advisory = name != null && name.StartsWith(ADVISORY_PREFIX); - } - - - - /** - * @return Returns the advisory. - */ - public bool IsAdvisory() { - return advisory; - } - /** - * @param advisory The advisory to set. - */ - public void SetAdvisory(bool advisory) { - this.advisory = advisory; - } - - /** - * @return true if this is a destination for Consumer advisories - */ - public bool IsConsumerAdvisory(){ - return IsAdvisory() && physicalName.StartsWith(Destination.CONSUMER_ADVISORY_PREFIX); - } - - /** - * @return true if this is a destination for Producer advisories - */ - public bool IsProducerAdvisory(){ - return IsAdvisory() && physicalName.StartsWith(Destination.PRODUCER_ADVISORY_PREFIX); - } - - /** - * @return true if this is a destination for Connection advisories - */ - public bool IsConnectionAdvisory(){ - return IsAdvisory() && physicalName.StartsWith(Destination.CONNECTION_ADVISORY_PREFIX); - } - - /** - * @return Returns the exclusive. - */ - public bool IsExclusive() { - return exclusive; - } - /** - * @param exclusive The exclusive to set. - */ - public void SetExclusive(bool exclusive) { - this.exclusive = exclusive; - } - /** - * @return Returns the ordered. - */ - public bool IsOrdered() { - return ordered; - } - /** - * @param ordered The ordered to set. - */ - public void SetOrdered(bool ordered) { - this.ordered = ordered; - } - /** - * @return Returns the orderedTarget. - */ - public String GetOrderedTarget() { - return orderedTarget; - } - /** - * @param orderedTarget The orderedTarget to set. - */ - public void SetOrderedTarget(String orderedTarget) { - this.orderedTarget = orderedTarget; - } - /** - * A helper method to return a descriptive string for the topic or queue - * @param destination - * - * @return a descriptive string for this queue or topic - */ - public static String inspect(ActiveMQDestination destination) { - if (destination is Topic) { - return "Topic(" + destination.toString() + ")"; - } - else { - return "Queue(" + destination.toString() + ")"; - } - } - - /** - * @param destination - * @return @throws JMSException - * @throws javax.jms.JMSException - */ - public static ActiveMQDestination transformDestination(ActiveMQDestination destination) { - ActiveMQDestination result = null; - if (destination != null) { - if (destination is ActiveMQDestination) { - result = (ActiveMQDestination) destination; - } - else { - if (destination is TemporaryQueue) { - result = new ActiveMQTemporaryQueue(((Queue) destination).getQueueName()); - } - else if (destination is TemporaryTopic) { - result = new ActiveMQTemporaryTopic(((Topic) destination).getTopicName()); - } - else if (destination is Queue) { - result = new ActiveMQTemporaryQueue(((Queue) destination).getQueueName()); - } - else if (destination is Topic) { - result = new ActiveMQTemporaryTopic(((Topic) destination).getTopicName()); - } - } - } - return result; - } - - /** - * Create a Destination - * @param type - * @param pyhsicalName - * @return - */ - public static ActiveMQDestination CreateDestination(int type,String pyhsicalName){ - ActiveMQDestination result = null; - if (type == ACTIVEMQ_TOPIC) { - result = new ActiveMQTopic(pyhsicalName); - } - else if (type == ACTIVEMQ_TEMPORARY_TOPIC) { - result = new ActiveMQTemporaryTopic(pyhsicalName); - } - else if (type == ACTIVEMQ_QUEUE) { - result = new ActiveMQQueue(pyhsicalName); - } - else { - result = new ActiveMQTemporaryQueue(pyhsicalName); - } - return result; - } - - /** - * Create a temporary name from the clientId - * - * @param clientId - * @return - */ - public static String CreateTemporaryName(String clientId) { - return TEMP_PREFIX + clientId + TEMP_POSTFIX; - } - - /** - * From a temporary destination find the clientId of the Connection that created it - * - * @param destination - * @return the clientId or null if not a temporary destination - */ - public static String GetClientId(ActiveMQDestination destination) { - String answer = null; - if (destination != null && destination.isTemporary()) { - String name = destination.getPhysicalName(); - int start = name.indexOf(TEMP_PREFIX); - if (start >= 0) { - start += TEMP_PREFIX.length(); - int stop = name.lastIndexOf(TEMP_POSTFIX); - if (stop > start && stop < name.length()) { - answer = name.substring(start, stop); - } - } - } - return answer; - } - - - /** - * @param o object to compare - * @return 1 if this is less than o else 0 if they are equal or -1 if this is less than o - */ - public int CompareTo(Object o) { - if (o is ActiveMQDestination) { - return compareTo((ActiveMQDestination) o); - } - return -1; - } - - /** - * Lets sort by name first then lets sort topics greater than queues - * - * @param that another destination to compare against - * @return 1 if this is less than o else 0 if they are equal or -1 if this is less than o - */ - public int CompareTo(ActiveMQDestination that) { - int answer = 0; - if (physicalName != that.physicalName) { - if (physicalName == null) { - return -1; - } - else if (that.physicalName == null) { - return 1; - } - answer = physicalName.compareTo(that.physicalName); - } - if (answer == 0) { - if (isTopic()) { - if (that.isQueue()) { - return 1; - } - } - else { - if (that.isTopic()) { - return -1; - } - } - } - return answer; - } - - - /** - * @return Returns the Destination type - */ - - public abstract int GetDestinationType(); - - - /** - * @return Returns the physicalName. - */ - public String GetPhysicalName() { - return this.physicalName; - } - - /** - * @param newPhysicalName The physicalName to set. - */ - public void SetPhysicalName(String newPhysicalName) { - this.physicalName = newPhysicalName; - } - - /** - * Returns true if a temporary Destination - * - * @return true/false - */ - - public bool IsTemporary() { - return GetDestinationType() == ACTIVEMQ_TEMPORARY_TOPIC || - GetDestinationType() == ACTIVEMQ_TEMPORARY_QUEUE; - } - - /** - * Returns true if a Topic Destination - * - * @return true/false - */ - - public bool IsTopic() { - return GetDestinationType() == ACTIVEMQ_TOPIC || - GetDestinationType() == ACTIVEMQ_TEMPORARY_TOPIC; - } - - /** - * Returns true if a Queue Destination - * - * @return true/false - */ - public bool IsQueue() { - return !isTopic(); - } - - /** - * Returns true if this destination represents a collection of - * destinations; allowing a set of destinations to be published to or subscribed - * from in one JMS operation. - *

- * If this destination is a composite then you can call {@link #getChildDestinations()} - * to return the list of child destinations. - * - * @return true if this destination represents a collection of child destinations. - */ - public bool IsComposite() { - return physicalName.indexOf(COMPOSITE_SEPARATOR) > 0; - } - - /** - * Returns a list of child destinations if this destination represents a composite - * destination. - * - * @return - */ - /*public List GetChildDestinations() { - List answer = new ArrayList(); - StringTokenizer iter = new StringTokenizer(physicalName, COMPOSITE_SEPARATOR); - while (iter.hasMoreTokens()) { - String name = iter.nextToken(); - Destination child = null; - if (name.StartsWith(QUEUE_PREFIX)) { - child = new ActiveMQQueue(name.substring(QUEUE_PREFIX.length())); - } - else if (name.StartsWith(TOPIC_PREFIX)) { - child = new ActiveMQTopic(name.substring(TOPIC_PREFIX.length())); - } - else { - child = createDestination(name); - } - answer.add(child); - } - if (answer.size() == 1) { - // lets put ourselves inside the collection - // as we are not really a composite destination - answer.set(0, this); - } - return answer; - }*/ - - /** - * @return string representation of this instance - */ - - public override String ToString() { - return this.physicalName; - } - - /** - * @return hashCode for this instance - */ - - public override int GetHashCode() { - int answer = 0xcafebabe; - - if (this.physicalName != null) { - answer = physicalName.hashCode(); - } - if (isTopic()) { - answer ^= 0xfabfab; - } - return answer; - } - - /** - * if the object passed in is equivalent, return true - * - * @param obj the object to compare - * @return true if this instance and obj are equivalent - */ - - public override bool Equals(Object obj) { - bool result = this == obj; - if (!result && obj != null && obj is ActiveMQDestination) { - ActiveMQDestination other = (ActiveMQDestination) obj; - result = this.getDestinationType() == other.getDestinationType() && - this.physicalName.equals(other.physicalName); - } - return result; - } - - - /** - * @return true if the destination matches multiple possible destinations - */ - public bool IsWildcard() { - if (physicalName != null) { - return physicalName.indexOf(DestinationFilter.ANY_CHILD) >= 0 - || physicalName.indexOf(DestinationFilter.ANY_DESCENDENT) >= 0; - } - return false; - } - - /** - * @param destination - * @return true if the given destination matches this destination; including wildcards - */ - public bool Matches(ActiveMQDestination destination) { - if (isWildcard()) { - return GetDestinationFilter().matches(destination); - } - else { - return equals(destination); - } - } - - - /** - * @return the DestinationFilter - */ - public DestinationFilter GetDestinationFilter() { - if (filter == null) { - filter = DestinationFilter.parseFilter(this); - } - return filter; - } - - /** - * @return the associated paths associated with this Destination - */ - public String[] GetDestinationPaths() { - if (paths == null) { - paths = DestinationPath.getDestinationPaths(physicalName); - } - return paths; - } - - /** - * Factory method to create a child destination if this destination is a composite - * @param name - * @return the created Destination - */ - public abstract ActiveMQDestination CreateDestination(String name); - - -} - + public interface Destination + { + } }