Skip to content

Commit 476fdc1

Browse files
committed
[Codeplex #1853]: Delete TransientFunction and TransientAction
Summary of this changeset: 1. Remove the TransientFunction and TransientAction functions 2. Remove the IsAlwaysBindable, AlwaysBindable
1 parent 7710a52 commit 476fdc1

13 files changed

+18
-173
lines changed

src/System.Web.OData/OData/Builder/ActionConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,9 +169,9 @@ public ActionConfiguration ReturnsCollection<TReturnElementType>()
169169
/// <summary>
170170
/// Specifies the bindingParameter name, type and whether it is alwaysBindable, use only if the Action "isBindable".
171171
/// </summary>
172-
public ActionConfiguration SetBindingParameter(string name, IEdmTypeConfiguration bindingParameterType, bool alwaysBindable)
172+
public ActionConfiguration SetBindingParameter(string name, IEdmTypeConfiguration bindingParameterType)
173173
{
174-
SetBindingParameterImplementation(name, bindingParameterType, alwaysBindable);
174+
SetBindingParameterImplementation(name, bindingParameterType);
175175
return this;
176176
}
177177

src/System.Web.OData/OData/Builder/BindingParameterConfiguration.cs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -28,15 +28,12 @@ public class BindingParameterConfiguration : ParameterConfiguration
2828
/// </summary>
2929
public const string DefaultBindingParameterName = "bindingParameter";
3030

31-
private bool _alwaysBindable;
32-
3331
/// <summary>
3432
/// Create a BindingParameterConfiguration
3533
/// </summary>
3634
/// <param name="name">The name of the Binding Parameter</param>
3735
/// <param name="parameterType">The type of the Binding Parameter</param>
38-
/// <param name="alwaysBindable">Whether the action can always be bound to instances of the binding parameter.</param>
39-
public BindingParameterConfiguration(string name, IEdmTypeConfiguration parameterType, bool alwaysBindable)
36+
public BindingParameterConfiguration(string name, IEdmTypeConfiguration parameterType)
4037
: base(name, parameterType)
4138
{
4239
EdmTypeKind kind = parameterType.Kind;
@@ -48,16 +45,6 @@ public BindingParameterConfiguration(string name, IEdmTypeConfiguration paramete
4845
{
4946
throw Error.Argument("parameterType", SRResources.InvalidBindingParameterType, parameterType.FullName);
5047
}
51-
_alwaysBindable = alwaysBindable;
52-
}
53-
54-
/// <summary>
55-
/// Indicates whether the BindingParameter is always bindable or not.
56-
/// For example some actions are always available some are only available at certain times or in certain states.
57-
/// </summary>
58-
public bool AlwaysBindable
59-
{
60-
get { return _alwaysBindable; }
6148
}
6249
}
6350
}

src/System.Web.OData/OData/Builder/EntityCollectionConfigurationOfTEntityType.cs

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public ActionConfiguration Action(string name)
2626
{
2727
Contract.Assert(ModelBuilder != null);
2828
ActionConfiguration configuration = ModelBuilder.Action(name);
29-
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this, alwaysBindable: true);
29+
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this);
3030
return configuration;
3131
}
3232

@@ -39,33 +39,7 @@ public FunctionConfiguration Function(string name)
3939
{
4040
Contract.Assert(ModelBuilder != null);
4141
FunctionConfiguration configuration = ModelBuilder.Function(name);
42-
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this, alwaysBindable: true);
43-
return configuration;
44-
}
45-
46-
/// <summary>
47-
/// Creates a new Action that sometimes binds to Collection(EntityType).
48-
/// </summary>
49-
/// <param name="name">The name of the Action</param>
50-
/// <returns>An <see cref="ActionConfiguration"/> to allow further configuration of the Action.</returns>
51-
public ActionConfiguration TransientAction(string name)
52-
{
53-
Contract.Assert(ModelBuilder != null);
54-
ActionConfiguration configuration = ModelBuilder.Action(name);
55-
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this, alwaysBindable: false);
56-
return configuration;
57-
}
58-
59-
/// <summary>
60-
/// Creates a new Function that sometimes binds to Collection(EntityType).
61-
/// </summary>
62-
/// <param name="name">The name of the Function</param>
63-
/// <returns>A <see cref="FunctionConfiguration"/> to allow further configuration of the Function.</returns>
64-
public FunctionConfiguration TransientFunction(string name)
65-
{
66-
Contract.Assert(ModelBuilder != null);
67-
FunctionConfiguration configuration = ModelBuilder.Function(name);
68-
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this, alwaysBindable: false);
42+
configuration.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, this);
6943
return configuration;
7044
}
7145
}

src/System.Web.OData/OData/Builder/EntityTypeConfigurationOfTEntityType.cs

Lines changed: 2 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ public ActionConfiguration Action(string name)
223223
Contract.Assert(_configuration != null && _configuration.ModelBuilder != null);
224224

225225
ActionConfiguration action = _configuration.ModelBuilder.Action(name);
226-
action.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration, alwaysBindable: true);
226+
action.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration);
227227
return action;
228228
}
229229

@@ -237,35 +237,7 @@ public FunctionConfiguration Function(string name)
237237
Contract.Assert(_configuration != null && _configuration.ModelBuilder != null);
238238

239239
FunctionConfiguration function = _configuration.ModelBuilder.Function(name);
240-
function.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration, alwaysBindable: true);
241-
return function;
242-
}
243-
244-
/// <summary>
245-
/// Create an Action that sometimes binds to this EntityType
246-
/// </summary>
247-
/// <param name="name">The name of the action.</param>
248-
/// <returns>The ActionConfiguration to allow further configuration of the new 'transient' Action.</returns>
249-
public ActionConfiguration TransientAction(string name)
250-
{
251-
Contract.Assert(_configuration != null && _configuration.ModelBuilder != null);
252-
253-
ActionConfiguration action = _configuration.ModelBuilder.Action(name);
254-
action.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration, alwaysBindable: false);
255-
return action;
256-
}
257-
258-
/// <summary>
259-
/// Create a Function that sometimes binds to this EntityType
260-
/// </summary>
261-
/// <param name="name">The name of the function.</param>
262-
/// <returns>The FunctionConfiguration to allow further configuration of the new 'transient' Function.</returns>
263-
public FunctionConfiguration TransientFunction(string name)
264-
{
265-
Contract.Assert(_configuration != null && _configuration.ModelBuilder != null);
266-
267-
FunctionConfiguration function = _configuration.ModelBuilder.Function(name);
268-
function.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration, alwaysBindable: false);
240+
function.SetBindingParameter(BindingParameterConfiguration.DefaultBindingParameterName, _configuration);
269241
return function;
270242
}
271243

src/System.Web.OData/OData/Builder/FunctionConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,9 +139,9 @@ public FunctionConfiguration ReturnsCollection<TReturnElementType>()
139139
/// <summary>
140140
/// Specifies the bindingParameter name, type and whether it is alwaysBindable, use only if the Function "isBindable".
141141
/// </summary>
142-
public FunctionConfiguration SetBindingParameter(string name, IEdmTypeConfiguration bindingParameterType, bool alwaysBindable)
142+
public FunctionConfiguration SetBindingParameter(string name, IEdmTypeConfiguration bindingParameterType)
143143
{
144-
SetBindingParameterImplementation(name, bindingParameterType, alwaysBindable);
144+
SetBindingParameterImplementation(name, bindingParameterType);
145145
return this;
146146
}
147147

src/System.Web.OData/OData/Builder/ProcedureConfiguration.cs

Lines changed: 2 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -130,25 +130,6 @@ public virtual bool IsBindable
130130
}
131131
}
132132

133-
/// <summary>
134-
/// Whether this procedure can always be bound.
135-
/// <example>
136-
/// For example imagine an Watch action that can be bound to a Movie, it might not always be possible to Watch a movie,
137-
/// in which case IsAlwaysBindable would return false.
138-
/// </example>
139-
/// </summary>
140-
public virtual bool IsAlwaysBindable
141-
{
142-
get
143-
{
144-
if (IsBindable)
145-
{
146-
return _bindingParameter.AlwaysBindable;
147-
}
148-
return false;
149-
}
150-
}
151-
152133
/// <summary>
153134
/// Sets the return type to a single EntityType instance.
154135
/// </summary>
@@ -243,9 +224,9 @@ internal void ReturnsCollectionImplementation<TReturnElementType>()
243224
/// <summary>
244225
/// Specifies the bindingParameter name, type and whether it is alwaysBindable, use only if the procedure "isBindable".
245226
/// </summary>
246-
internal void SetBindingParameterImplementation(string name, IEdmTypeConfiguration bindingParameterType, bool alwaysBindable)
227+
internal void SetBindingParameterImplementation(string name, IEdmTypeConfiguration bindingParameterType)
247228
{
248-
_bindingParameter = new BindingParameterConfiguration(name, bindingParameterType, alwaysBindable);
229+
_bindingParameter = new BindingParameterConfiguration(name, bindingParameterType);
249230
}
250231

251232
/// <summary>

test/System.Web.OData.Test/OData/Builder/ActionConfigurationTest.cs

Lines changed: 1 addition & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ public void CanCreateActionThatBindsToEntity()
225225

226226
// Assert
227227
Assert.True(sendEmail.IsBindable);
228-
Assert.True(sendEmail.IsAlwaysBindable);
229228
Assert.NotNull(sendEmail.Parameters);
230229
Assert.Equal(1, sendEmail.Parameters.Count());
231230
Assert.Equal(BindingParameterConfiguration.DefaultBindingParameterName, sendEmail.Parameters.Single().Name);
@@ -243,26 +242,12 @@ public void CanCreateActionThatBindsToEntityCollection()
243242

244243
// Assert
245244
Assert.True(sendEmail.IsBindable);
246-
Assert.True(sendEmail.IsAlwaysBindable);
247245
Assert.NotNull(sendEmail.Parameters);
248246
Assert.Equal(1, sendEmail.Parameters.Count());
249247
Assert.Equal(BindingParameterConfiguration.DefaultBindingParameterName, sendEmail.Parameters.Single().Name);
250248
Assert.Equal(string.Format("Collection({0})", typeof(Customer).FullName), sendEmail.Parameters.Single().TypeConfiguration.FullName);
251249
}
252250

253-
[Fact]
254-
public void CanCreateTransientAction()
255-
{
256-
ODataModelBuilder builder = new ODataModelBuilder();
257-
EntityTypeConfiguration<Customer> customer = builder.EntityType<Customer>();
258-
customer.TransientAction("Reward");
259-
260-
ProcedureConfiguration action = builder.Procedures.SingleOrDefault();
261-
Assert.NotNull(action);
262-
Assert.True(action.IsBindable);
263-
Assert.False(action.IsAlwaysBindable);
264-
}
265-
266251
[Fact]
267252
public void CanCreateActionWithNonbindingParameters()
268253
{
@@ -350,24 +335,6 @@ public void CanCreateEdmModel_WithNonBindableAction()
350335
Assert.Empty(action.Action.Parameters);
351336
}
352337

353-
[Fact]
354-
public void CanCreateEdmModel_WithTransientBindableAction()
355-
{
356-
// Arrange
357-
ODataModelBuilder builder = new ODataModelBuilder();
358-
EntityTypeConfiguration<Customer> customer = builder.EntityType<Customer>();
359-
customer.HasKey(c => c.CustomerId);
360-
customer.Property(c => c.Name);
361-
362-
// Act
363-
ActionConfiguration sendEmail = customer.TransientAction("ActionName");
364-
IEdmModel model = builder.GetEdmModel();
365-
366-
// Assert
367-
IEdmAction action = Assert.Single(model.SchemaElements.OfType<IEdmAction>());
368-
Assert.True(action.IsBound);
369-
}
370-
371338
[Fact]
372339
public void GetEdmModel_ThrowsException_WhenUnboundActionOverloaded()
373340
{
@@ -496,7 +463,7 @@ public void HasActionLink_SetsFollowsConventions(bool value)
496463
Mock<IEdmTypeConfiguration> bindingParameterTypeMock = new Mock<IEdmTypeConfiguration>();
497464
bindingParameterTypeMock.Setup(o => o.Kind).Returns(EdmTypeKind.Entity);
498465
IEdmTypeConfiguration bindingParameterType = bindingParameterTypeMock.Object;
499-
action.SetBindingParameter("IgnoreParameter", bindingParameterType, alwaysBindable: false);
466+
action.SetBindingParameter("IgnoreParameter", bindingParameterType);
500467

501468
// Act
502469
action.HasActionLink((a) => { throw new NotImplementedException(); }, followsConventions: value);

test/System.Web.OData.Test/OData/Builder/BindableProcedureFinderAnnotationTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void CanBuildBoundProcedureCacheForIEdmModel()
2929
customer.Action("InCache2_CustomerAction");
3030
movie.Action("InCache3_MovieAction");
3131
ActionConfiguration incache4_MovieAction = builder.Action("InCache4_MovieAction");
32-
incache4_MovieAction.SetBindingParameter("bindingParameter", movieConfiguration, true);
32+
incache4_MovieAction.SetBindingParameter("bindingParameter", movieConfiguration);
3333
blockBuster.Action("InCache5_BlockbusterAction");
3434

3535
// build actions that are either: bindable to a collection of entities, have no parameter, have only complex parameter

test/System.Web.OData.Test/OData/Builder/Conventions/ActionLinkGenerationConventionTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public void Apply_FollowsConventions()
7979
ActionConfiguration action = new ActionConfiguration(builder, "IgnoreAction");
8080
Mock<IEdmTypeConfiguration> mockBindingParameterType = new Mock<IEdmTypeConfiguration>();
8181
mockBindingParameterType.Setup(o => o.Kind).Returns(EdmTypeKind.Entity);
82-
action.SetBindingParameter("IgnoreParameter", mockBindingParameterType.Object, alwaysBindable: false);
82+
action.SetBindingParameter("IgnoreParameter", mockBindingParameterType.Object);
8383
ActionLinkGenerationConvention convention = new ActionLinkGenerationConvention();
8484

8585
// Act

test/System.Web.OData.Test/OData/Builder/FunctionConfigurationTest.cs

Lines changed: 1 addition & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,6 @@ public void CanCreateFunctionThatBindsToEntity()
263263

264264
// Assert
265265
Assert.True(sendEmail.IsBindable);
266-
Assert.True(sendEmail.IsAlwaysBindable);
267266
Assert.NotNull(sendEmail.Parameters);
268267
Assert.Equal(1, sendEmail.Parameters.Count());
269268
Assert.Equal(BindingParameterConfiguration.DefaultBindingParameterName, sendEmail.Parameters.Single().Name);
@@ -281,26 +280,12 @@ public void CanCreateFunctionThatBindsToEntityCollection()
281280

282281
// Assert
283282
Assert.True(sendEmail.IsBindable);
284-
Assert.True(sendEmail.IsAlwaysBindable);
285283
Assert.NotNull(sendEmail.Parameters);
286284
Assert.Equal(1, sendEmail.Parameters.Count());
287285
Assert.Equal(BindingParameterConfiguration.DefaultBindingParameterName, sendEmail.Parameters.Single().Name);
288286
Assert.Equal(string.Format("Collection({0})", typeof(Customer).FullName), sendEmail.Parameters.Single().TypeConfiguration.FullName);
289287
}
290288

291-
[Fact]
292-
public void CanCreateTransientFunction()
293-
{
294-
ODataModelBuilder builder = new ODataModelBuilder();
295-
EntityTypeConfiguration<Customer> customer = builder.EntityType<Customer>();
296-
customer.TransientFunction("Reward");
297-
298-
ProcedureConfiguration function = builder.Procedures.SingleOrDefault();
299-
Assert.NotNull(function);
300-
Assert.True(function.IsBindable);
301-
Assert.False(function.IsAlwaysBindable);
302-
}
303-
304289
[Fact]
305290
public void CanCreateFunctionWithNonbindingParameters()
306291
{
@@ -392,26 +377,6 @@ public void CanCreateEdmModel_WithNonBindableFunction()
392377
Assert.Empty(function.Parameters);
393378
}
394379

395-
[Fact]
396-
public void CanCreateEdmModel_WithTransientBindableFunction()
397-
{
398-
// Arrange
399-
ODataModelBuilder builder = new ODataModelBuilder();
400-
EntityTypeConfiguration<Customer> customer = builder.EntityType<Customer>();
401-
customer.HasKey(c => c.CustomerId);
402-
customer.Property(c => c.Name);
403-
404-
// Act
405-
FunctionConfiguration sendEmail = customer.TransientFunction("FunctionName");
406-
sendEmail.Returns<bool>();
407-
IEdmModel model = builder.GetEdmModel();
408-
409-
// Assert
410-
Assert.Equal(1, model.SchemaElements.OfType<IEdmFunction>().Count());
411-
IEdmFunction function = Assert.Single(model.SchemaElements.OfType<IEdmFunction>());
412-
Assert.True(function.IsBound);
413-
}
414-
415380
[Fact]
416381
public void CanManuallyConfigureFunctionLinkFactory()
417382
{
@@ -475,7 +440,7 @@ public void HasFunctionLink_SetsFollowsConventions(bool value)
475440
Mock<IEdmTypeConfiguration> bindingParameterTypeMock = new Mock<IEdmTypeConfiguration>();
476441
bindingParameterTypeMock.Setup(o => o.Kind).Returns(EdmTypeKind.Entity);
477442
IEdmTypeConfiguration bindingParameterType = bindingParameterTypeMock.Object;
478-
function.SetBindingParameter("IgnoreParameter", bindingParameterType, alwaysBindable: false);
443+
function.SetBindingParameter("IgnoreParameter", bindingParameterType);
479444

480445
// Act
481446
function.HasFunctionLink((a) => { throw new NotImplementedException(); }, followsConventions: value);

0 commit comments

Comments
 (0)