Skip to content

Commit e586283

Browse files
Chris Martinezcommonsensesoftware
authored andcommitted
Update OData samples
1 parent 419caef commit e586283

File tree

6 files changed

+55
-25
lines changed

6 files changed

+55
-25
lines changed

samples/webapi/AdvancedODataWebApiSample/Startup.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22

33
namespace Microsoft.Examples
44
{
5-
using Configuration;
65
using global::Owin;
6+
using Microsoft.AspNet.OData;
77
using Microsoft.AspNet.OData.Batch;
88
using Microsoft.AspNet.OData.Builder;
99
using Microsoft.AspNet.OData.Routing;
10+
using Microsoft.Examples.Configuration;
1011
using Microsoft.OData;
12+
using Microsoft.OData.UriParser;
1113
using Microsoft.Web.Http.Versioning;
1214
using System.Web.Http;
1315
using static Microsoft.OData.ODataUrlKeyDelimiter;
@@ -33,7 +35,6 @@ public void Configuration( IAppBuilder appBuilder )
3335

3436
var modelBuilder = new VersionedODataModelBuilder( configuration )
3537
{
36-
ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
3738
ModelConfigurations =
3839
{
3940
new PersonModelConfiguration(),
@@ -43,14 +44,15 @@ public void Configuration( IAppBuilder appBuilder )
4344
var models = modelBuilder.GetEdmModels();
4445
var batchHandler = new DefaultODataBatchHandler( httpServer );
4546

46-
configuration.MapVersionedODataRoutes( "odata", "api", models, OnConfigureContainer, batchHandler );
47+
configuration.MapVersionedODataRoutes( "odata", "api", models, ConfigureContainer, batchHandler );
4748
configuration.Routes.MapHttpRoute( "orders", "api/{controller}/{id}", new { id = Optional } );
4849
appBuilder.UseWebApi( httpServer );
4950
}
5051

51-
static void OnConfigureContainer( IContainerBuilder builder )
52+
static void ConfigureContainer( IContainerBuilder builder )
5253
{
53-
builder.AddService( Singleton, typeof( IODataPathHandler ), sp => new DefaultODataPathHandler() { UrlKeyDelimiter = Parentheses } );
54+
builder.AddService<IODataPathHandler>( Singleton, sp => new DefaultODataPathHandler() { UrlKeyDelimiter = Parentheses } );
55+
builder.AddService<ODataUriResolver>( Singleton, sp => new UnqualifiedCallAndEnumPrefixFreeResolver() { EnableCaseInsensitive = true } );
5456
}
5557
}
5658
}

samples/webapi/BasicODataWebApiSample/Startup.cs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
namespace Microsoft.Examples
44
{
5-
using Configuration;
65
using global::Owin;
6+
using Microsoft.AspNet.OData;
77
using Microsoft.AspNet.OData.Batch;
88
using Microsoft.AspNet.OData.Builder;
9+
using Microsoft.AspNet.OData.Routing;
10+
using Microsoft.Examples.Configuration;
11+
using Microsoft.OData;
12+
using Microsoft.OData.UriParser;
913
using System.Web.Http;
14+
using static Microsoft.OData.ODataUrlKeyDelimiter;
15+
using static Microsoft.OData.ServiceLifetime;
1016

1117
public class Startup
1218
{
@@ -20,7 +26,6 @@ public void Configuration( IAppBuilder appBuilder )
2026

2127
var modelBuilder = new VersionedODataModelBuilder( configuration )
2228
{
23-
ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
2429
ModelConfigurations =
2530
{
2631
new PersonModelConfiguration(),
@@ -30,9 +35,15 @@ public void Configuration( IAppBuilder appBuilder )
3035
var models = modelBuilder.GetEdmModels();
3136
var batchHandler = new DefaultODataBatchHandler( httpServer );
3237

33-
configuration.MapVersionedODataRoutes( "odata", "api", models, batchHandler );
34-
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models );
38+
configuration.MapVersionedODataRoutes( "odata", "api", models, ConfigureContainer, batchHandler );
39+
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models, ConfigureContainer );
3540
appBuilder.UseWebApi( httpServer );
3641
}
42+
43+
static void ConfigureContainer( IContainerBuilder builder )
44+
{
45+
builder.AddService<IODataPathHandler>( Singleton, sp => new DefaultODataPathHandler() { UrlKeyDelimiter = Parentheses } );
46+
builder.AddService<ODataUriResolver>( Singleton, sp => new UnqualifiedCallAndEnumPrefixFreeResolver() { EnableCaseInsensitive = true } );
47+
}
3748
}
3849
}

samples/webapi/ConventionsODataWebApiSample/Startup.cs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,19 @@
22

33
namespace Microsoft.Examples
44
{
5-
using Configuration;
6-
using Controllers;
75
using global::Owin;
6+
using Microsoft.AspNet.OData;
87
using Microsoft.AspNet.OData.Batch;
98
using Microsoft.AspNet.OData.Builder;
9+
using Microsoft.AspNet.OData.Routing;
10+
using Microsoft.Examples.Configuration;
11+
using Microsoft.Examples.Controllers;
12+
using Microsoft.OData;
13+
using Microsoft.OData.UriParser;
1014
using Microsoft.Web.Http.Versioning.Conventions;
1115
using System.Web.Http;
16+
using static Microsoft.OData.ODataUrlKeyDelimiter;
17+
using static Microsoft.OData.ServiceLifetime;
1218

1319
public class Startup
1420
{
@@ -38,7 +44,6 @@ public void Configuration( IAppBuilder appBuilder )
3844

3945
var modelBuilder = new VersionedODataModelBuilder( configuration )
4046
{
41-
ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
4247
ModelConfigurations =
4348
{
4449
new PersonModelConfiguration(),
@@ -48,9 +53,15 @@ public void Configuration( IAppBuilder appBuilder )
4853
var models = modelBuilder.GetEdmModels();
4954
var batchHandler = new DefaultODataBatchHandler( httpServer );
5055

51-
configuration.MapVersionedODataRoutes( "odata", "api", models, batchHandler );
52-
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models );
56+
configuration.MapVersionedODataRoutes( "odata", "api", models, ConfigureContainer, batchHandler );
57+
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models, ConfigureContainer );
5358
appBuilder.UseWebApi( httpServer );
5459
}
60+
61+
static void ConfigureContainer( IContainerBuilder builder )
62+
{
63+
builder.AddService<IODataPathHandler>( Singleton, sp => new DefaultODataPathHandler() { UrlKeyDelimiter = Parentheses } );
64+
builder.AddService<ODataUriResolver>( Singleton, sp => new UnqualifiedCallAndEnumPrefixFreeResolver() { EnableCaseInsensitive = true } );
65+
}
5566
}
5667
}

samples/webapi/SwaggerODataWebApiSample/Configuration/OrderModelConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ public void Apply( ODataModelBuilder builder, ApiVersion apiVersion )
3030

3131
if ( apiVersion >= ApiVersions.V1 )
3232
{
33-
// order.Collection.Function( "MostExpensive" ).ReturnsFromEntitySet<Order>( "Orders" );
33+
order.Collection.Function( "MostExpensive" ).ReturnsFromEntitySet<Order>( "Orders" );
3434
}
3535

3636
if ( apiVersion >= ApiVersions.V2 )
3737
{
38-
//order.Action( "Rate" ).Parameter<int>( "rating" );
38+
order.Action( "Rate" ).Parameter<int>( "rating" );
3939
}
4040
}
4141
}

samples/webapi/SwaggerODataWebApiSample/Startup.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,21 @@
33
namespace Microsoft.Examples
44
{
55
using global::Owin;
6+
using Microsoft.AspNet.OData;
67
using Microsoft.AspNet.OData.Builder;
78
using Microsoft.AspNet.OData.Extensions;
9+
using Microsoft.AspNet.OData.Routing;
810
using Microsoft.Examples.Configuration;
11+
using Microsoft.OData;
12+
using Microsoft.OData.UriParser;
913
using Newtonsoft.Json.Serialization;
1014
using Swashbuckle.Application;
1115
using System.IO;
1216
using System.Reflection;
1317
using System.Web.Http;
1418
using System.Web.Http.Description;
19+
using static Microsoft.OData.ODataUrlKeyDelimiter;
20+
using static Microsoft.OData.ServiceLifetime;
1521

1622
/// <summary>
1723
/// Represents the startup process for the application.
@@ -28,8 +34,6 @@ public void Configuration( IAppBuilder builder )
2834
var configuration = new HttpConfiguration();
2935
var httpServer = new HttpServer( configuration );
3036

31-
configuration.SetUrlKeyDelimiter( OData.ODataUrlKeyDelimiter.Parentheses );
32-
3337
// reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
3438
configuration.AddApiVersioning( o => o.ReportApiVersions = true );
3539

@@ -38,7 +42,6 @@ public void Configuration( IAppBuilder builder )
3842

3943
var modelBuilder = new VersionedODataModelBuilder( configuration )
4044
{
41-
ModelBuilderFactory = () => new ODataConventionModelBuilder().EnableLowerCamelCase(),
4245
ModelConfigurations =
4346
{
4447
new AllConfigurations(),
@@ -51,10 +54,10 @@ public void Configuration( IAppBuilder builder )
5154
// TODO: while you can use both, you should choose only ONE of the following; comment, uncomment, or remove as necessary
5255

5356
// WHEN VERSIONING BY: query string, header, or media type
54-
configuration.MapVersionedODataRoutes( "odata", routePrefix, models );
57+
configuration.MapVersionedODataRoutes( "odata", routePrefix, models, ConfigureContainer );
5558

5659
// WHEN VERSIONING BY: url segment
57-
//configuration.MapVersionedODataRoutes( "odata-bypath", "api/v{apiVersion}", models, ConfigureODataServices );
60+
//configuration.MapVersionedODataRoutes( "odata-bypath", "api/v{apiVersion}", models, ConfigureContainer );
5861

5962
// add the versioned IApiExplorer and capture the strongly-typed implementation (e.g. ODataApiExplorer vs IApiExplorer)
6063
// note: the specified format code will format the version as "'v'major[.minor][-status]"
@@ -114,5 +117,11 @@ static string XmlCommentsFilePath
114117
return Path.Combine( basePath, fileName );
115118
}
116119
}
120+
121+
static void ConfigureContainer( IContainerBuilder builder )
122+
{
123+
builder.AddService<IODataPathHandler>( Singleton, sp => new DefaultODataPathHandler() { UrlKeyDelimiter = Parentheses } );
124+
builder.AddService<ODataUriResolver>( Singleton, sp => new UnqualifiedCallAndEnumPrefixFreeResolver() { EnableCaseInsensitive = true } );
125+
}
117126
}
118127
}

samples/webapi/SwaggerODataWebApiSample/SwaggerODataWebApiSample.csproj

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,6 @@
8484
<Reference Include="Swashbuckle.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cd1bb07a5ac7c7bc, processorArchitecture=MSIL">
8585
<HintPath>..\..\..\packages\Swashbuckle.Core.5.5.3\lib\net40\Swashbuckle.Core.dll</HintPath>
8686
</Reference>
87-
<!--<Reference Include="Swashbuckle.OData, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a2e252c86e553959, processorArchitecture=MSIL">
88-
<HintPath>..\..\..\packages\Swashbuckle.OData.3.2.0\lib\net452\Swashbuckle.OData.dll</HintPath>
89-
</Reference>-->
9087
<Reference Include="System.Net.Http" />
9188
<Reference Include="System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
9289
<HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Client.5.2.3\lib\net45\System.Net.Http.Formatting.dll</HintPath>
@@ -178,7 +175,7 @@
178175
<AutoAssignPort>True</AutoAssignPort>
179176
<DevelopmentServerPort>1874</DevelopmentServerPort>
180177
<DevelopmentServerVPath>/</DevelopmentServerVPath>
181-
<IISUrl>http://localhost:1874/</IISUrl>
178+
<IISUrl>http://localhost:1874/swagger</IISUrl>
182179
<NTLMAuthentication>False</NTLMAuthentication>
183180
<UseCustomServer>False</UseCustomServer>
184181
<CustomServerUrl>

0 commit comments

Comments
 (0)