Skip to content

Commit 23e970a

Browse files
Update API Versioning for OData to Support 6.0 (#100)
Updates API versioning for OData to support v6. Closes #36 and Resolves #35.
1 parent a199cda commit 23e970a

31 files changed

+1108
-281
lines changed

samples/webapi/AdvancedODataWebApiSample/AdvancedODataWebApiSample.csproj

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,17 @@
4848
<Private>True</Private>
4949
</Reference>
5050
<Reference Include="Microsoft.CSharp" />
51-
<Reference Include="Microsoft.OData.Core, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
52-
<HintPath>..\..\..\packages\Microsoft.OData.Core.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Core.dll</HintPath>
53-
<Private>True</Private>
51+
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
52+
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.1.0.0\lib\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll</HintPath>
5453
</Reference>
55-
<Reference Include="Microsoft.OData.Edm, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
56-
<HintPath>..\..\..\packages\Microsoft.OData.Edm.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Edm.dll</HintPath>
57-
<Private>True</Private>
54+
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
55+
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
56+
</Reference>
57+
<Reference Include="Microsoft.OData.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
58+
<HintPath>..\..\..\packages\Microsoft.OData.Core.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.OData.Core.dll</HintPath>
59+
</Reference>
60+
<Reference Include="Microsoft.OData.Edm, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
61+
<HintPath>..\..\..\packages\Microsoft.OData.Edm.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.OData.Edm.dll</HintPath>
5862
</Reference>
5963
<Reference Include="Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
6064
<HintPath>..\..\..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
@@ -64,9 +68,8 @@
6468
<HintPath>..\..\..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
6569
<Private>True</Private>
6670
</Reference>
67-
<Reference Include="Microsoft.Spatial, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
68-
<HintPath>..\..\..\packages\Microsoft.Spatial.6.15.0\lib\portable-net45+win+wpa81\Microsoft.Spatial.dll</HintPath>
69-
<Private>True</Private>
71+
<Reference Include="Microsoft.Spatial, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
72+
<HintPath>..\..\..\packages\Microsoft.Spatial.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.Spatial.dll</HintPath>
7073
</Reference>
7174
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
7275
<HintPath>..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -98,9 +101,8 @@
98101
<HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll</HintPath>
99102
<Private>True</Private>
100103
</Reference>
101-
<Reference Include="System.Web.OData, Version=5.9.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
102-
<HintPath>..\..\..\packages\Microsoft.AspNet.OData.5.9.1\lib\net45\System.Web.OData.dll</HintPath>
103-
<Private>True</Private>
104+
<Reference Include="System.Web.OData, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
105+
<HintPath>..\..\..\packages\Microsoft.AspNet.OData.6.0.0\lib\net45\System.Web.OData.dll</HintPath>
104106
</Reference>
105107
<Reference Include="System.Xml.Linq" />
106108
<Reference Include="System.Drawing" />
@@ -129,6 +131,7 @@
129131
<Content Include="Web.config" />
130132
</ItemGroup>
131133
<ItemGroup>
134+
<Compile Include="CaseInsensitiveODataUriResolver.cs" />
132135
<Compile Include="Configuration\OrderModelConfiguration.cs" />
133136
<Compile Include="Configuration\PersonModelConfiguration.cs" />
134137
<Compile Include="Controllers\Orders2Controller.cs" />
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Microsoft.Examples
2+
{
3+
using Microsoft.OData.UriParser;
4+
using System;
5+
6+
// HACK: required due to bug in ODL
7+
// REF: https://github.com/OData/odata.net/issues/695
8+
public sealed class CaseInsensitiveODataUriResolver : UnqualifiedODataUriResolver
9+
{
10+
public override bool EnableCaseInsensitive { get { return true; } set { } }
11+
}
12+
}

samples/webapi/AdvancedODataWebApiSample/Startup.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ namespace Microsoft.Examples
44
{
55
using Configuration;
66
using global::Owin;
7+
using Microsoft.OData;
8+
using Microsoft.OData.UriParser;
79
using Microsoft.Web.Http.Versioning;
810
using Microsoft.Web.OData.Builder;
911
using System.Web.Http;
1012
using System.Web.OData.Batch;
1113
using System.Web.OData.Builder;
12-
using System.Web.OData.Extensions;
14+
using static Microsoft.OData.ServiceLifetime;
1315
using static System.Web.Http.RouteParameter;
1416

1517
public class Startup
@@ -28,8 +30,6 @@ public void Configuration( IAppBuilder appBuilder )
2830
new QueryStringApiVersionReader(),
2931
new HeaderApiVersionReader( "api-version", "x-ms-version" ) );
3032
} );
31-
configuration.EnableCaseInsensitive( true );
32-
configuration.EnableUnqualifiedNameCall( true );
3333

3434
var modelBuilder = new VersionedODataModelBuilder( configuration )
3535
{
@@ -43,9 +43,14 @@ public void Configuration( IAppBuilder appBuilder )
4343
var models = modelBuilder.GetEdmModels();
4444
var batchHandler = new DefaultODataBatchHandler( httpServer );
4545

46-
configuration.MapVersionedODataRoutes( "odata", "api", models, batchHandler );
46+
configuration.MapVersionedODataRoutes( "odata", "api", models, ConfigureODataServices, batchHandler );
4747
configuration.Routes.MapHttpRoute( "orders", "api/{controller}/{id}", new { id = Optional } );
4848
appBuilder.UseWebApi( httpServer );
4949
}
50+
51+
static void ConfigureODataServices( IContainerBuilder builder )
52+
{
53+
builder.AddService( Singleton, typeof( ODataUriResolver ), sp => new CaseInsensitiveODataUriResolver() );
54+
}
5055
}
5156
}
Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.AspNet.OData" version="5.9.1" targetFramework="net45" />
3+
<package id="Microsoft.AspNet.OData" version="6.0.0" targetFramework="net45" />
44
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
55
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
66
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net45" />
77
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net45" />
8+
<package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net45" />
9+
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" targetFramework="net45" />
810
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net45" developmentDependency="true" />
9-
<package id="Microsoft.OData.Core" version="6.15.0" targetFramework="net45" />
10-
<package id="Microsoft.OData.Edm" version="6.15.0" targetFramework="net45" />
11+
<package id="Microsoft.OData.Core" version="7.0.0" targetFramework="net45" />
12+
<package id="Microsoft.OData.Edm" version="7.0.0" targetFramework="net45" />
1113
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
1214
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" />
13-
<package id="Microsoft.Spatial" version="6.15.0" targetFramework="net45" />
15+
<package id="Microsoft.Spatial" version="7.0.0" targetFramework="net45" />
1416
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
1517
<package id="Owin" version="1.0" targetFramework="net45" />
18+
<package id="System.Collections" version="4.0.11" targetFramework="net45" />
19+
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net45" />
20+
<package id="System.ComponentModel" version="4.0.1" targetFramework="net45" />
21+
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net45" />
22+
<package id="System.Globalization" version="4.0.11" targetFramework="net45" />
23+
<package id="System.Linq" version="4.1.0" targetFramework="net45" />
24+
<package id="System.Linq.Expressions" version="4.1.0" targetFramework="net45" />
25+
<package id="System.Reflection" version="4.1.0" targetFramework="net45" />
26+
<package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net45" />
27+
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net45" />
28+
<package id="System.Threading" version="4.0.11" targetFramework="net45" />
29+
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="net45" />
1630
</packages>

samples/webapi/BasicODataWebApiSample/BasicODataWebApiSample.csproj

Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,17 @@
5151
<Private>True</Private>
5252
</Reference>
5353
<Reference Include="Microsoft.CSharp" />
54-
<Reference Include="Microsoft.OData.Core, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
55-
<HintPath>..\..\..\packages\Microsoft.OData.Core.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Core.dll</HintPath>
56-
<Private>True</Private>
54+
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
55+
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.1.0.0\lib\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll</HintPath>
5756
</Reference>
58-
<Reference Include="Microsoft.OData.Edm, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
59-
<HintPath>..\..\..\packages\Microsoft.OData.Edm.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Edm.dll</HintPath>
60-
<Private>True</Private>
57+
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
58+
<HintPath>..\..\..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.0.0\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
59+
</Reference>
60+
<Reference Include="Microsoft.OData.Core, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
61+
<HintPath>..\..\..\packages\Microsoft.OData.Core.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.OData.Core.dll</HintPath>
62+
</Reference>
63+
<Reference Include="Microsoft.OData.Edm, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
64+
<HintPath>..\..\..\packages\Microsoft.OData.Edm.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.OData.Edm.dll</HintPath>
6165
</Reference>
6266
<Reference Include="Microsoft.Owin, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
6367
<HintPath>..\..\..\packages\Microsoft.Owin.3.0.1\lib\net45\Microsoft.Owin.dll</HintPath>
@@ -67,9 +71,8 @@
6771
<HintPath>..\..\..\packages\Microsoft.Owin.Host.SystemWeb.3.0.1\lib\net45\Microsoft.Owin.Host.SystemWeb.dll</HintPath>
6872
<Private>True</Private>
6973
</Reference>
70-
<Reference Include="Microsoft.Spatial, Version=6.15.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
71-
<HintPath>..\..\..\packages\Microsoft.Spatial.6.15.0\lib\portable-net45+win+wpa81\Microsoft.Spatial.dll</HintPath>
72-
<Private>True</Private>
74+
<Reference Include="Microsoft.Spatial, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
75+
<HintPath>..\..\..\packages\Microsoft.Spatial.7.0.0\lib\portable-net45+win8+wpa81\Microsoft.Spatial.dll</HintPath>
7376
</Reference>
7477
<Reference Include="Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
7578
<HintPath>..\..\..\packages\Newtonsoft.Json.6.0.4\lib\net45\Newtonsoft.Json.dll</HintPath>
@@ -101,9 +104,8 @@
101104
<HintPath>..\..\..\packages\Microsoft.AspNet.WebApi.Owin.5.2.3\lib\net45\System.Web.Http.Owin.dll</HintPath>
102105
<Private>True</Private>
103106
</Reference>
104-
<Reference Include="System.Web.OData, Version=5.9.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
105-
<HintPath>..\..\..\packages\Microsoft.AspNet.OData.5.9.1\lib\net45\System.Web.OData.dll</HintPath>
106-
<Private>True</Private>
107+
<Reference Include="System.Web.OData, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
108+
<HintPath>..\..\..\packages\Microsoft.AspNet.OData.6.0.0\lib\net45\System.Web.OData.dll</HintPath>
107109
</Reference>
108110
<Reference Include="System.Xml.Linq" />
109111
<Reference Include="System.Drawing" />
@@ -126,6 +128,7 @@
126128
<Content Include="Web.config" />
127129
</ItemGroup>
128130
<ItemGroup>
131+
<Compile Include="CaseInsensitiveODataUriResolver.cs" />
129132
<Compile Include="Configuration\OrderModelConfiguration.cs" />
130133
<Compile Include="Configuration\PersonModelConfiguration.cs" />
131134
<Compile Include="Controllers\People2Controller.cs" />
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Microsoft.Examples
2+
{
3+
using Microsoft.OData.UriParser;
4+
using System;
5+
6+
// HACK: required due to bug in ODL
7+
// REF: https://github.com/OData/odata.net/issues/695
8+
public sealed class CaseInsensitiveODataUriResolver : UnqualifiedODataUriResolver
9+
{
10+
public override bool EnableCaseInsensitive { get { return true; } set { } }
11+
}
12+
}

samples/webapi/BasicODataWebApiSample/Startup.cs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@ namespace Microsoft.Examples
44
{
55
using Configuration;
66
using global::Owin;
7+
using Microsoft.OData;
8+
using Microsoft.OData.UriParser;
79
using Microsoft.Web.OData.Builder;
810
using System.Web.Http;
911
using System.Web.OData.Batch;
1012
using System.Web.OData.Builder;
11-
using System.Web.OData.Extensions;
13+
using static Microsoft.OData.ServiceLifetime;
1214

1315
public class Startup
1416
{
@@ -19,8 +21,6 @@ public void Configuration( IAppBuilder appBuilder )
1921

2022
// reporting api versions will return the headers "api-supported-versions" and "api-deprecated-versions"
2123
configuration.AddApiVersioning( o => o.ReportApiVersions = true );
22-
configuration.EnableCaseInsensitive( true );
23-
configuration.EnableUnqualifiedNameCall( true );
2424

2525
var modelBuilder = new VersionedODataModelBuilder( configuration )
2626
{
@@ -34,9 +34,14 @@ public void Configuration( IAppBuilder appBuilder )
3434
var models = modelBuilder.GetEdmModels();
3535
var batchHandler = new DefaultODataBatchHandler( httpServer );
3636

37-
configuration.MapVersionedODataRoutes( "odata", "api", models, batchHandler );
38-
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models, batchHandler );
37+
configuration.MapVersionedODataRoutes( "odata", "api", models, ConfigureODataServices, batchHandler );
38+
configuration.MapVersionedODataRoutes( "odata-bypath", "v{apiVersion}", models, ConfigureODataServices );
3939
appBuilder.UseWebApi( httpServer );
4040
}
41+
42+
static void ConfigureODataServices( IContainerBuilder builder )
43+
{
44+
builder.AddService( Singleton, typeof( ODataUriResolver ), sp => new CaseInsensitiveODataUriResolver() );
45+
}
4146
}
4247
}
Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.AspNet.OData" version="5.9.1" targetFramework="net45" />
3+
<package id="Microsoft.AspNet.OData" version="6.0.0" targetFramework="net45" />
44
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" />
55
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" />
66
<package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net45" />
77
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net45" />
8+
<package id="Microsoft.Extensions.DependencyInjection" version="1.0.0" targetFramework="net45" />
9+
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.0.0" targetFramework="net45" />
810
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net45" developmentDependency="true" />
9-
<package id="Microsoft.OData.Core" version="6.15.0" targetFramework="net45" />
10-
<package id="Microsoft.OData.Edm" version="6.15.0" targetFramework="net45" />
11+
<package id="Microsoft.OData.Core" version="7.0.0" targetFramework="net45" />
12+
<package id="Microsoft.OData.Edm" version="7.0.0" targetFramework="net45" />
1113
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net45" />
1214
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net45" />
13-
<package id="Microsoft.Spatial" version="6.15.0" targetFramework="net45" />
15+
<package id="Microsoft.Spatial" version="7.0.0" targetFramework="net45" />
1416
<package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
1517
<package id="Owin" version="1.0" targetFramework="net45" />
18+
<package id="System.Collections" version="4.0.11" targetFramework="net45" />
19+
<package id="System.Collections.Concurrent" version="4.0.12" targetFramework="net45" />
20+
<package id="System.ComponentModel" version="4.0.1" targetFramework="net45" />
21+
<package id="System.Diagnostics.Debug" version="4.0.11" targetFramework="net45" />
22+
<package id="System.Globalization" version="4.0.11" targetFramework="net45" />
23+
<package id="System.Linq" version="4.1.0" targetFramework="net45" />
24+
<package id="System.Linq.Expressions" version="4.1.0" targetFramework="net45" />
25+
<package id="System.Reflection" version="4.1.0" targetFramework="net45" />
26+
<package id="System.Resources.ResourceManager" version="4.0.1" targetFramework="net45" />
27+
<package id="System.Runtime.Extensions" version="4.1.0" targetFramework="net45" />
28+
<package id="System.Threading" version="4.0.11" targetFramework="net45" />
29+
<package id="System.Threading.Tasks" version="4.0.11" targetFramework="net45" />
1630
</packages>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
namespace Microsoft.Examples
2+
{
3+
using Microsoft.OData.UriParser;
4+
using System;
5+
6+
// HACK: required due to bug in ODL
7+
// REF: https://github.com/OData/odata.net/issues/695
8+
public sealed class CaseInsensitiveODataUriResolver : UnqualifiedODataUriResolver
9+
{
10+
public override bool EnableCaseInsensitive { get { return true; } set { } }
11+
}
12+
}

0 commit comments

Comments
 (0)