public async Task <Result <BindingInfo> > Create(Action <BindingCreateAction> action, CancellationToken cancellationToken = default) { cancellationToken.RequestCanceled(); var impl = new BindingCreateActionImpl(); action(impl); impl.Validate(); BindingDefinition definition = impl.Definition.Value; Debug.Assert(definition != null); string sourceBinding = impl.SourceBinding.Value; string destinationBinding = impl.DestinationBinding.Value; BindingType bindingType = impl.BindingType.Value; string vhost = impl.VirtualHost.Value.ToSanitizedName(); string url = bindingType == BindingType.Exchange ? $"api/bindings/{vhost}/e/{sourceBinding}/e/{destinationBinding}" : $"api/bindings/{vhost}/e/{sourceBinding}/q/{destinationBinding}"; if (impl.Errors.Value.Any()) { return(new FaultedResult <BindingInfo>(impl.Errors.Value, new DebugInfoImpl(url, definition.ToJsonString()))); } return(await Post <BindingInfo, BindingDefinition>(url, definition, cancellationToken)); }
public void Verify_can_add_arguments() { var container = GetContainerBuilder().BuildServiceProvider(); var result = container.GetService <IBrokerObjectFactory>() .Object <Binding>() .Create(x => { x.Binding(b => { b.Source("E2"); b.Destination("Q1"); b.Type(BindingType.Exchange); }); x.Configure(c => { c.HasRoutingKey("*."); c.HasArguments(arg => { arg.Set("arg1", "value1"); }); }); x.Targeting(t => t.VirtualHost("HareDu")); }) .GetResult(); result.HasFaulted.ShouldBeFalse(); result.DebugInfo.ShouldNotBeNull(); BindingDefinition definition = result.DebugInfo.Request.ToObject <BindingDefinition>(Deserializer.Options); definition.RoutingKey.ShouldBe("*."); definition.Arguments["arg1"].ToString().ShouldBe("value1"); }
public void OnPropertyChanged(object source, PropertyChangedEventArgs args) { if (objectsToNotify != null && OnPropertyChangedAction != null) { if (BindingDefinition.MustNotify(DataSource, source, args)) { OnPropertyChangedAction(this, OnPropertyChangedActionArgs); } } }
protected void Bind <T>( Binding <T> binding, string propertyName, Action <T> updater) { if (binding == null) { return; } _bindings[propertyName] = new BindingDefinition(binding, propertyName, v => updater.Invoke((T)v)); }
public virtual bool UpdateDataSource(object data, out object retValue) { if (BindingDefinition != null) { retValue = BindingDefinition.UpdateDataSource(DataSource, data); return(BindingDefinition.IsReadOnly); } else { retValue = null; return(false); } }
public virtual object ResolveBinding() { try { return(BindingDefinition?.ResolveBinding(DataSource)); } catch (Exception ex) { string message = $"Can't resolve binding for 'BindingDefinition' '{Name}': {ex.Message.EmptyIfNull()}"; log.LogException(LogType.Error, ex, message); return("##Binding Error##"); } }
/// <summary>Create a binding definition from a cell value</summary> private IBindingDefinition CreateBindingDefinition(ExcelTemplateDefinitionPart templateDefinitionPart, string value, string trimmedValue) { ExcelTemplateDefinition excelTemplateDefinition = templateDefinitionPart.Parent as ExcelTemplateDefinition; IBindingDefinition ret = null; if (trimmedValue.StartsWith(ExcelBindingDefinitionButton.BUTTON_TEMPLATE_PREFIX)) { ret = ExcelBindingDefinitionButton.CreateInstance(excelTemplateDefinition, trimmedValue); } else if (trimmedValue.StartsWith(ExcelBindingDefinitionCheckBox.CHECKBOX_TEMPLATE_PREFIX)) { ret = ExcelBindingDefinitionCheckBox.CreateInstance(excelTemplateDefinition, trimmedValue); } else if (trimmedValue.StartsWith(ExcelBindingDefinitionFormulaResult.FORMULA_RESULT_PREFIX)) { ret = ExcelBindingDefinitionFormulaResult.CreateInstance(excelTemplateDefinition, trimmedValue); } else if (trimmedValue.StartsWith(ExcelBindingDefinitionNamedRange.NAMEDRANGE_TEMPLATE_PREFIX)) { ExcelNamedRangeDefinition excelNamedRangeDefinition = ExcelBindingDefinitionNamedRange.RetrieveNamedRangeDefinition(trimmedValue); if (excelNamedRangeDefinition != null) { BindingDefinition nestedBindingDefinition = null; if (!string.IsNullOrEmpty(excelNamedRangeDefinition.Value)) { nestedBindingDefinition = CreateBindingDefinition(templateDefinitionPart, excelNamedRangeDefinition.Value, excelNamedRangeDefinition.Value.Trim()) as BindingDefinition; } ret = ExcelBindingDefinitionNamedRange.CreateInstance(templateDefinitionPart, excelNamedRangeDefinition, nestedBindingDefinition); } } else { BindingDefinitionDescription bindingDefinitionDescription = BindingDefinitionDescription.CreateBindingDescription(templateDefinitionPart.Parent, value, trimmedValue); if (bindingDefinitionDescription.Formula != null) { ret = ExcelBindingDefinitionWithFormula.CreateInstance(excelTemplateDefinition, bindingDefinitionDescription); } else { ret = BindingDefinitionFactory.CreateInstances(excelTemplateDefinition, bindingDefinitionDescription); } } return(ret); }
public object ResolveBinding(object dataSource) { if (dataSource == null) { return(null); } if (BindingDefinition == null) { return(dataSource); } if (BindingDefinition.IsOptional) { BindingDefinition = (BindingDefinition as BindingDefinitionOptional).CreateRealBindingDefinition(dataSource.GetType()); } return(BindingDefinition.ResolveBinding(dataSource)); }
public void OnPropertyChanged(object source, PropertyChangedEventArgs args) { if (objectsToNotify != null && OnPropertyChangedAction != null) { if (BindingDefinition.MustNotify(DataSource, source, args)) { OnPropertyChangedAction(this, OnPropertyChangedActionArgs); } } if (button != null && EnableProperty != null && args.PropertyName.Equals(excelBindingDefinitionButton.EnablePropertyInfo.Name)) { if (EnablePropertyGet.IsStatic) { button.Enable = (bool)EnablePropertyGet.Invoke(null, null); } else { button.Enable = (bool)EnablePropertyGet.Invoke(source, null); } } }