/* * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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. * */ using System; using System.Configuration; using System.Reflection; using System.ServiceModel.Channels; using System.ServiceModel.Configuration; namespace org.apache.qpid.wcf.model { public sealed class QpidTransportElement : TransportElement { public override void ApplyConfiguration(BindingElement bindingElement) { base.ApplyConfiguration(bindingElement); if (bindingElement == null) throw new ArgumentNullException("bindingElement"); var bindind = bindingElement as QpidTransportBindingElement; if (bindind == null) { throw new ArgumentException( string.Format("Invalid type for binding. Expected {0}, Passed: {1}", typeof(QpidTransportBindingElement).AssemblyQualifiedName, bindingElement.GetType().AssemblyQualifiedName)); } bindind.Host = Host; bindind.Password = Password; bindind.UserName = UserName; bindind.VirtualHost = VirtualHost; bindind.PortNumber = PortNumber; } public override void CopyFrom(ServiceModelExtensionElement from) { base.CopyFrom(from); var element = from as QpidTransportElement; if (element != null) { Host = element.Host; PortNumber = element.PortNumber; Password = element.Password; UserName = element.UserName; VirtualHost = element.VirtualHost; } } protected override BindingElement CreateBindingElement() { TransportBindingElement element = CreateDefaultBindingElement(); ApplyConfiguration(element); return element; } protected override TransportBindingElement CreateDefaultBindingElement() { return new QpidTransportBindingElement(); } protected override void InitializeFrom(BindingElement bindingElement) { base.InitializeFrom(bindingElement); if (bindingElement == null) throw new ArgumentNullException("bindingElement"); var binding = bindingElement as QpidTransportBindingElement; if (binding == null) { throw new ArgumentException( string.Format("Invalid type for binding. Expected {0}, Passed: {1}", typeof(QpidTransportBindingElement).AssemblyQualifiedName, bindingElement.GetType().AssemblyQualifiedName)); } Host = binding.Host; PortNumber = binding.PortNumber; Password = binding.Password; UserName = binding.UserName; VirtualHost = binding.VirtualHost; } public override Type BindingElementType { get { return typeof(QpidTransportElement); } } /// /// Specifies the broker host name that the binding should connect to. /// [ConfigurationProperty("host", DefaultValue = "localhost")] public string Host { get { return ((string) base["host"]); } set { base["host"] = value; } } /// /// Specifies the broker port number that the binding should connect to. /// [ConfigurationProperty("port", DefaultValue = "5672")] public int PortNumber { get { return (Convert.ToInt16(base["port"])); } set { base["port"] = value; } } /// /// Password to use when authenticating with the broker /// [ConfigurationProperty("password", DefaultValue = "guest")] public string Password { get { return ((string)base["password"]); } set { base["password"] = value; } } /// /// The username to use when authenticating with the broker /// [ConfigurationProperty("username", DefaultValue = "guest")] public string UserName { get { return ((string)base["username"]); } set { base["username"] = value; } } /// /// The virtual host to access. /// [ConfigurationProperty("virtualHost", DefaultValue = "test")] public string VirtualHost { get { return ((string)base["virtualHost"]); } set { base["virtualHost"] = value; } } protected override ConfigurationPropertyCollection Properties { get { ConfigurationPropertyCollection configProperties = base.Properties; foreach (PropertyInfo prop in GetType().GetProperties(BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.Instance)) { foreach (ConfigurationPropertyAttribute attr in prop.GetCustomAttributes(typeof(ConfigurationPropertyAttribute), false)) { configProperties.Add( new ConfigurationProperty(attr.Name, prop.PropertyType, attr.DefaultValue)); } } return configProperties; } } } }