diff --git a/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/Destinations/MessageDestinationAccessor.cs b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/Destinations/MessageDestinationAccessor.cs new file mode 100644 index 00000000..96504911 --- /dev/null +++ b/src/Spring/Spring.Messaging.Nms/Messaging/Nms/Support/Destinations/MessageDestinationAccessor.cs @@ -0,0 +1,112 @@ +#region License + +/* + * Copyright © 2002-2006 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#endregion + +using System; +using Spring.Objects.Factory; +using Spring.Util; +using Apache.NMS; + +namespace Spring.Messaging.Nms.Support.IDestinations +{ + /// Base class for MessageTemplate} and other + /// NMS-accessing gateway helpers, adding destination-related properties to + /// MessagingAccessor's common properties. + /// + /// + ///

Not intended to be used directly. See MessageTemplate.

+ /// + ///
+ /// Juergen Hoeller + /// Mark Pollack (.NET) + public class MessageDestinationAccessor : MessagingAccessor + { + #region Fields + + private IDestinationResolver destinationResolver = new DynamicDestinationResolver(); + + private bool pubSubDomain = false; + + #endregion + + #region Properties + + /// + /// Gets or sets the destination resolver that is to be used to resolve + /// IDestination references for this accessor. + /// + /// The default resolver is a DynamicDestinationResolver. Specify a + /// JndiDestinationResolver for resolving destination names as JNDI locations. + /// + /// The destination resolver. + virtual public IDestinationResolver DestinationResolver + { + get + { + return destinationResolver; + } + + set + { + AssertUtils.ArgumentNotNull(value, "DestinationResolver must not be null"); + this.destinationResolver = value; + } + + } + + + /// + /// Gets or sets a value indicating whether Publish/Subscribe + /// domain (Topics) is used. Otherwise, the Point-to-Point domain + /// (Queues) is used. + /// + /// + /// this + /// setting tells what type of destination to create if dynamic destinations are enabled. + /// true if Publish/Subscribe domain; otherwise, false + /// for the Point-to-Point domain. + public virtual bool PubSubDomain + { + get + { + return pubSubDomain; + } + + set + { + this.pubSubDomain = value; + } + + } + + #endregion + + /// + /// Resolves the given destination name to a NMS destination. + /// + /// The current session. + /// Name of the destination. + /// The located IDestination + /// If resolution failed. + public virtual IDestination ResolveDestinationName(ISession session, System.String destinationName) + { + return DestinationResolver.ResolveDestinationName(session, destinationName, PubSubDomain); + } + } +}