Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
 public void OnPropertyChanged(object source, PropertyChangedEventArgs args)
 {
     if (objectsToNotify != null && OnPropertyChangedAction != null)
     {
         if (BindingDefinition.MustNotify(DataSource, source, args))
         {
             OnPropertyChangedAction(this, OnPropertyChangedActionArgs);
         }
     }
 }
Esempio n. 4
0
 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));
 }
Esempio n. 5
0
 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);
     }
 }
Esempio n. 6
0
 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));
        }
Esempio n. 9
0
        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);
                }
            }
        }