public Task <IValueProvider> BindAsync(BindingContext context) { if (context == null) { throw new ArgumentNullException("context"); } var attribute = Parameter.GetTableAttribute(); var resolvedAttribute = new ApiHubTableAttribute(attribute.Connection) { DataSetName = attribute.DataSetName, TableName = attribute.TableName, EntityId = attribute.EntityId }; if (context.BindingData != null) { if (_dataSetNameBindingTemplate != null) { resolvedAttribute.DataSetName = _dataSetNameBindingTemplate.Bind(context.BindingData); } if (_tableNameBindingTemplate != null) { resolvedAttribute.TableName = _tableNameBindingTemplate.Bind(context.BindingData); } if (_entityIdBindingTemplate != null) { resolvedAttribute.EntityId = _entityIdBindingTemplate.Bind(context.BindingData); } } return(BindAsync(resolvedAttribute)); }
public static string GetEntityId( this ApiHubTableAttribute attribute, TableConfigContext configContext) { var entityId = configContext.NameResolver.ResolveWholeString(attribute.EntityId); return(entityId); }
public TableEntityValueBinder( ParameterInfo parameter, ApiHubTableAttribute resolvedAttribute, TableConfigContext configContext) { Parameter = parameter; ResolvedAttribute = resolvedAttribute; ConfigContext = configContext; }
private Task <IValueProvider> BindAsync(ApiHubTableAttribute resolvedAttribute) { var parameterType = Parameter.ParameterType; var valueProviderType = typeof(TableEntityValueBinder <>).MakeGenericType(parameterType); var valueProvider = (IValueProvider)Activator.CreateInstance( valueProviderType, Parameter, resolvedAttribute, ConfigContext); return(Task.FromResult(valueProvider)); }
private Task <IValueProvider> BindAsync(ApiHubTableAttribute resolvedAttribute) { var entityType = Parameter.ParameterType.GetGenericArguments().Single(); var valueProviderType = typeof(TableValueProvider <>).MakeGenericType(entityType); var valueProvider = (IValueProvider)Activator.CreateInstance( valueProviderType, Parameter, resolvedAttribute, ConfigContext); return(Task.FromResult(valueProvider)); }
public static ITableClient GetTableClient( this ApiHubTableAttribute attribute, TableConfigContext configContext) { var connection = configContext.ConnectionFactory.CreateConnection(attribute.Connection); var tableClient = connection.CreateTableClient(); return(tableClient); }
public static ITable <TEntity> GetTableReference <TEntity>( this ApiHubTableAttribute attribute, TableConfigContext configContext) where TEntity : class { var dataSet = GetDataSetReference(attribute, configContext); var tableName = configContext.NameResolver.ResolveWholeString(attribute.TableName); var table = dataSet.GetTableReference <TEntity>(tableName); return(table); }
public static IDataSet GetDataSetReference( this ApiHubTableAttribute attribute, TableConfigContext configContext) { var tableClient = GetTableClient(attribute, configContext); var dataSetName = string.IsNullOrEmpty(attribute.DataSetName) ? null : configContext.NameResolver.ResolveWholeString(attribute.DataSetName); var dataSet = tableClient.GetDataSetReference(dataSetName); return(dataSet); }
public override async Task BindAsync(BindingContext context) { var attribute = new ApiHubTableAttribute(Connection) { DataSetName = BindAndResolve(DataSetName, _dataSetNameBindingTemplate, context), TableName = BindAndResolve(TableName, _tableNameBindingTemplate, context), EntityId = BindAndResolve(EntityId, _entityIdBindingTemplate, context) }; var runtimeContext = new RuntimeBindingContext(attribute); if (Access == FileAccess.Read && BindingDirection == BindingDirection.In) { context.Value = await context.Binder.BindAsync <JObject>(runtimeContext); } else if (Access == FileAccess.Write && BindingDirection == BindingDirection.Out) { await BindAsyncCollectorAsync <JObject>(context, runtimeContext); } }
public TableBinding( ParameterInfo parameter, TableConfigContext configContext) { ValidateParameter(parameter); Parameter = parameter; ConfigContext = configContext; ApiHubTableAttribute attribute = Parameter.GetTableAttribute(); if (!string.IsNullOrEmpty(attribute.DataSetName)) { _dataSetNameBindingTemplate = BindingTemplate.FromString(attribute.DataSetName, ignoreCase: true); } if (!string.IsNullOrEmpty(attribute.TableName)) { _tableNameBindingTemplate = BindingTemplate.FromString(attribute.TableName, ignoreCase: true); } }
private static void ValidateContract(ApiHubTableAttribute attribute, INameResolver nameResolver, IReadOnlyDictionary <string, Type> contract) { ValidateContract(attribute.DataSetName, nameResolver, contract); ValidateContract(attribute.TableName, nameResolver, contract); ValidateContract(attribute.EntityId, nameResolver, contract); }