public StringToServiceBusEntityConverter(ServiceBusAccount account, IBindableServiceBusPath defaultPath, EntityType entityType, MessagingProvider messagingProvider) { _account = account; _defaultPath = defaultPath; _entityType = entityType; _messagingProvider = messagingProvider; }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { ParameterInfo parameter = context.Parameter; ServiceBusAttribute serviceBusAttribute = parameter.GetCustomAttribute <ServiceBusAttribute>(inherit: false); if (serviceBusAttribute == null) { return(Task.FromResult <IBinding>(null)); } string queueOrTopicName = Resolve(serviceBusAttribute.QueueOrTopicName); IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName); path.ValidateContractCompatibility(context.BindingDataContract); IArgumentBinding <ServiceBusEntity> argumentBinding = _innerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException("Can't bind ServiceBus to type '" + parameter.ParameterType + "'."); } string connectionString = _accountProvider.ConnectionString; ServiceBusAccount account = ServiceBusAccount.CreateFromConnectionString(connectionString); IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, path); return(Task.FromResult(binding)); }
public void Bind_IfNullBindingData_Throws() { const string queueOrTopicNamePattern = "queue-{name}-with-{parameter}"; IBindableServiceBusPath path = CreateProductUnderTest(queueOrTopicNamePattern); Assert.Throws <ArgumentNullException>(() => path.Bind(null), "bindingData"); }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; var attribute = TypeUtility.GetResolvedAttribute <ServiceBusAttribute>(parameter); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } string queueOrTopicName = Resolve(attribute.QueueOrTopicName); IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName); ValidateContractCompatibility(path, context.BindingDataContract); IArgumentBinding <ServiceBusEntity> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't bind ServiceBus to type '{0}'.", parameter.ParameterType)); } attribute.Connection = Resolve(attribute.Connection); ServiceBusAccount account = new ServiceBusAccount(_options, _configuration, attribute); IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, _options, path, attribute, _messagingProvider); return(Task.FromResult <IBinding>(binding)); }
public StringToServiceBusEntityConverter(ServiceBusAccount account, IBindableServiceBusPath defaultPath, AccessRights accessRights, EntityType entityType) { _account = account; _defaultPath = defaultPath; _accessRights = accessRights; _entityType = entityType; }
public StringToServiceBusEntityConverter(ServiceBusAttribute attribute, IBindableServiceBusPath defaultPath, MessagingProvider messagingProvider, ServiceBusClientFactory clientFactory) { _attribute = attribute; _defaultPath = defaultPath; _entityType = _attribute.EntityType; _messagingProvider = messagingProvider; _clientFactory = clientFactory; }
public void Create_IfParameterizedPattern_ReturnsNotBoundPath() { const string queueOrTopicNamePattern = "queue-{name}-with-{parameter}"; IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicNamePattern); Assert.NotNull(path); Assert.AreEqual(queueOrTopicNamePattern, path.QueueOrTopicNamePattern); Assert.False(path.IsBound); }
public ServiceBusBinding(string parameterName, IArgumentBinding <ServiceBusEntity> argumentBinding, ServiceBusAccount account, IBindableServiceBusPath path, AccessRights accessRights) { _parameterName = parameterName; _argumentBinding = argumentBinding; _account = account; _namespaceName = ServiceBusClient.GetNamespaceName(account); _path = path; _accessRights = accessRights; _converter = CreateConverter(account, path, accessRights); }
public ServiceBusBinding(string parameterName, IArgumentBinding <ServiceBusEntity> argumentBinding, ServiceBusAccount account, IBindableServiceBusPath path, ServiceBusAttribute attr, MessagingProvider messagingProvider) { _parameterName = parameterName; _argumentBinding = argumentBinding; _account = account; _path = path; _entityType = attr.EntityType; _messagingProvider = messagingProvider; _converter = new OutputConverter <string>(new StringToServiceBusEntityConverter(account, _path, _entityType, _messagingProvider)); }
public ServiceBusBinding(string parameterName, IArgumentBinding<ServiceBusEntity> argumentBinding, ServiceBusAccount account, IBindableServiceBusPath path, AccessRights accessRights) { _parameterName = parameterName; _argumentBinding = argumentBinding; _account = account; _namespaceName = ServiceBusClient.GetNamespaceName(account); _path = path; _accessRights = accessRights; _converter = CreateConverter(account, path, accessRights); }
public void Create_IfNonParameterizedPattern_ReturnsBoundPath() { const string queueOrTopicNamePattern = "queue-name-with-no-parameters"; IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicNamePattern); Assert.NotNull(path); Assert.AreEqual(queueOrTopicNamePattern, path.QueueOrTopicNamePattern); Assert.True(path.IsBound); }
public ServiceBusBinding(string parameterName, IArgumentBinding <ServiceBusEntity> argumentBinding, ServiceBusAccount account, IBindableServiceBusPath path, ServiceBusAttribute attr) { _parameterName = parameterName; _argumentBinding = argumentBinding; _account = account; _namespaceName = ServiceBusClient.GetNamespaceName(account); _path = path; _accessRights = attr.Access; _entityType = attr.EntityType; _converter = new OutputConverter <string>( new StringToServiceBusEntityConverter(account, _path, _accessRights, _entityType)); }
public void Bind_IfNotNullBindingData_ReturnsResolvedQueueName() { const string queueOrTopicNamePattern = "queue-{name}-with-{parameter}"; var bindingData = new Dictionary <string, object> { { "name", "name" }, { "parameter", "parameter" } }; IBindableServiceBusPath path = CreateProductUnderTest(queueOrTopicNamePattern); string result = path.Bind(bindingData); Assert.AreEqual("queue-name-with-parameter", result); }
public ServiceBusBinding( string parameterName, IArgumentBinding <ServiceBusEntity> argumentBinding, IBindableServiceBusPath path, ServiceBusAttribute attribute, MessagingProvider messagingProvider, ServiceBusClientFactory clientFactory) { _parameterName = parameterName; _argumentBinding = argumentBinding; _path = path; _messagingProvider = messagingProvider; _clientFactory = clientFactory; _attribute = attribute; _converter = new OutputConverter <string>(new StringToServiceBusEntityConverter(_attribute, _path, _messagingProvider, _clientFactory)); }
private static void ValidateContractCompatibility(IBindableServiceBusPath path, IReadOnlyDictionary<string, Type> bindingDataContract) { if (path == null) { throw new ArgumentNullException("path"); } IEnumerable<string> parameterNames = path.ParameterNames; if (parameterNames != null) { foreach (string parameterName in parameterNames) { if (bindingDataContract != null && !bindingDataContract.ContainsKey(parameterName)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "No binding parameter exists for '{0}'.", parameterName)); } } } }
private static void ValidateContractCompatibility(IBindableServiceBusPath path, IReadOnlyDictionary <string, Type> bindingDataContract) { if (path == null) { throw new ArgumentNullException("path"); } IEnumerable <string> parameterNames = path.ParameterNames; if (parameterNames != null) { foreach (string parameterName in parameterNames) { if (bindingDataContract != null && !bindingDataContract.ContainsKey(parameterName)) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "No binding parameter exists for '{0}'.", parameterName)); } } } }
public Task <IBinding> TryCreateAsync(BindingProviderContext context) { if (context == null) { throw new ArgumentNullException("context"); } ParameterInfo parameter = context.Parameter; ServiceBusAttribute attribute = parameter.GetCustomAttribute <ServiceBusAttribute>(inherit: false); if (attribute == null) { return(Task.FromResult <IBinding>(null)); } string queueOrTopicName = Resolve(attribute.QueueOrTopicName); IBindableServiceBusPath path = BindableServiceBusPath.Create(queueOrTopicName); ValidateContractCompatibility(path, context.BindingDataContract); IArgumentBinding <ServiceBusEntity> argumentBinding = InnerProvider.TryCreate(parameter); if (argumentBinding == null) { throw new InvalidOperationException(string.Format(CultureInfo.CurrentCulture, "Can't bind ServiceBus to type '{0}'.", parameter.ParameterType)); } string connectionName = ServiceBusAccount.GetAccountOverrideOrNull(context.Parameter); ServiceBusAccount account = new ServiceBusAccount { MessagingFactory = _config.MessagingProvider.CreateMessagingFactory(queueOrTopicName, connectionName), NamespaceManager = _config.MessagingProvider.CreateNamespaceManager(connectionName) }; IBinding binding = new ServiceBusBinding(parameter.Name, argumentBinding, account, path, attribute.Access); return(Task.FromResult <IBinding>(binding)); }
public StringToServiceBusEntityConverter(ServiceBusAccount account, IBindableServiceBusPath defaultPath) { _account = account; _defaultPath = defaultPath; }
private static IAsyncObjectToTypeConverter<ServiceBusEntity> CreateConverter(ServiceBusAccount account, IBindableServiceBusPath queueOrTopicName, AccessRights accessRights) { return new OutputConverter<string>(new StringToServiceBusEntityConverter(account, queueOrTopicName, accessRights)); }
private static IAsyncObjectToTypeConverter <ServiceBusEntity> CreateConverter(ServiceBusAccount account, IBindableServiceBusPath queueOrTopicName, AccessRights accessRights) { return(new OutputConverter <string>(new StringToServiceBusEntityConverter(account, queueOrTopicName, accessRights))); }