private bool TryLoadActionProvider() { if (!this.attemptedToLoadActionProvider && (this.dataService.Provider.Configuration.DataServiceBehavior.MaxProtocolVersion >= DataServiceProtocolVersion.V3)) { this.actionProvider = this.dataService.Provider.GetService <IDataServiceActionProvider>(); this.attemptedToLoadActionProvider = true; } return(this.actionProvider != null); }
/// <summary> /// Tries to load an implementation of IDataServiceActionProvider from the service. Return true if successful; false otherwise. /// </summary> /// <returns>true if successfully loaded an implementation of IDataServiceActionProvider; false otherwise.</returns> private bool TryLoadActionProvider() { if (!this.attemptedToLoadActionProvider) { this.actionProvider = this.provider.GetService <IDataServiceActionProvider>(); if (this.actionProvider != null) { // try to get the action resolver for overloads. This can either be the same instance as the action provider, or a separate instance returned by GetService. this.actionResolver = this.actionProvider as IDataServiceActionResolver ?? this.provider.GetService <IDataServiceActionResolver>(); } this.attemptedToLoadActionProvider = true; } return(this.actionProvider != null); }
private static MetadataProviderEdmModel CreateMetadataProviderEdmModel(DataServiceProviderSimulator metadataProvider, IDataServiceActionProvider actionProvider = null) { var dataServiceSimulator = new DataServiceSimulatorWithGetService { OperationContext = new DataServiceOperationContext(false, new DataServiceHost2Simulator()), ProcessingPipeline = new DataServiceProcessingPipeline() }; dataServiceSimulator.OperationContext.InitializeAndCacheHeaders(dataServiceSimulator); var dataServiceConfiguration = new DataServiceConfiguration(metadataProvider); dataServiceConfiguration.SetEntitySetAccessRule("*", EntitySetRights.AllRead); dataServiceConfiguration.SetServiceActionAccessRule("*", ServiceActionRights.Invoke); dataServiceConfiguration.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4; if (actionProvider != null) { dataServiceSimulator.Providers.Add(typeof(IDataServiceActionProvider), actionProvider); } DataServiceStaticConfiguration staticConfiguration = new DataServiceStaticConfiguration(dataServiceSimulator.Instance.GetType(), metadataProvider); IDataServiceProviderBehavior providerBehavior = DataServiceProviderBehavior.CustomDataServiceProviderBehavior; DataServiceProviderWrapper providerWrapper = new DataServiceProviderWrapper( new DataServiceCacheItem( dataServiceConfiguration, staticConfiguration), metadataProvider, metadataProvider, dataServiceSimulator, false); dataServiceSimulator.Provider = providerWrapper; var model = new MetadataProviderEdmModel(providerWrapper, new DataServiceStreamProviderWrapper(dataServiceSimulator), DataServiceActionProviderWrapper.Create(dataServiceSimulator)); model.MetadataProvider.ProviderBehavior = providerBehavior; return(model); }
public static IDataServiceInvokable CreateServiceActionInvokable(DataServiceOperationContext operationContext, IDataServiceActionProvider actionProvider, ServiceAction serviceAction, object[] parameterTokens) { WebUtil.CheckArgumentNull(operationContext, "operationContext"); WebUtil.CheckArgumentNull(actionProvider, "actionProvider"); WebUtil.CheckArgumentNull(serviceAction, "serviceAction"); operationContext.CurrentDataService.ProcessingPipeline.AssertAndUpdateDebugStateAtInvokeServiceAction(operationContext.CurrentDataService); IDataServiceInvokable result = actionProvider.CreateInvokable(operationContext, serviceAction, parameterTokens); WebUtil.CheckResourceExists(result != null, serviceAction.Name); return(result); }
private static MetadataProviderEdmModel CreateMetadataProviderEdmModel(DataServiceProviderSimulator metadataProvider, IDataServiceActionProvider actionProvider = null) { var dataServiceSimulator = new DataServiceSimulatorWithGetService { OperationContext = new DataServiceOperationContext(false, new DataServiceHost2Simulator()), ProcessingPipeline = new DataServiceProcessingPipeline() }; dataServiceSimulator.OperationContext.InitializeAndCacheHeaders(dataServiceSimulator); var dataServiceConfiguration = new DataServiceConfiguration(metadataProvider); dataServiceConfiguration.SetEntitySetAccessRule("*", EntitySetRights.AllRead); dataServiceConfiguration.SetServiceActionAccessRule("*", ServiceActionRights.Invoke); dataServiceConfiguration.DataServiceBehavior.MaxProtocolVersion = ODataProtocolVersion.V4; if (actionProvider != null) { dataServiceSimulator.Providers.Add(typeof(IDataServiceActionProvider), actionProvider); } DataServiceStaticConfiguration staticConfiguration = new DataServiceStaticConfiguration(dataServiceSimulator.Instance.GetType(), metadataProvider); IDataServiceProviderBehavior providerBehavior = DataServiceProviderBehavior.CustomDataServiceProviderBehavior; DataServiceProviderWrapper providerWrapper = new DataServiceProviderWrapper( new DataServiceCacheItem( dataServiceConfiguration, staticConfiguration), metadataProvider, metadataProvider, dataServiceSimulator, false); dataServiceSimulator.Provider = providerWrapper; var model = new MetadataProviderEdmModel(providerWrapper, new DataServiceStreamProviderWrapper(dataServiceSimulator), DataServiceActionProviderWrapper.Create(dataServiceSimulator)); model.MetadataProvider.ProviderBehavior = providerBehavior; return model; }
public static IDataServiceInvokable CreateServiceActionInvokable(DataServiceOperationContext operationContext, IDataServiceActionProvider actionProvider, ServiceAction serviceAction, object[] parameterTokens) { WebUtil.CheckArgumentNull <DataServiceOperationContext>(operationContext, "operationContext"); WebUtil.CheckArgumentNull <IDataServiceActionProvider>(actionProvider, "actionProvider"); WebUtil.CheckArgumentNull <ServiceAction>(serviceAction, "serviceAction"); IDataServiceInvokable invokable = actionProvider.CreateInvokable(operationContext, serviceAction, parameterTokens); WebUtil.CheckResourceExists(invokable != null, serviceAction.Name); return(invokable); }
private bool TryLoadActionProvider() { if (!this.attemptedToLoadActionProvider && (this.dataService.Provider.Configuration.DataServiceBehavior.MaxProtocolVersion >= DataServiceProtocolVersion.V3)) { this.actionProvider = this.dataService.Provider.GetService<IDataServiceActionProvider>(); this.attemptedToLoadActionProvider = true; } return (this.actionProvider != null); }