Skip to content

Public API surface #808

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 25 commits into from
Aug 31, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
3a51c69
Renamed generic type parameter T to TResource
Aug 18, 2020
fd32441
Fixed inconsistencies in generic type parameter constraints
Aug 18, 2020
517ae65
Reviewed collection usage
Aug 18, 2020
c76db49
Renamed CurrentRequest to JsonApiRequest ('current' is vague terminol…
Aug 18, 2020
cdb168f
Merged AssemblyInfo.cs versions and removed unneeded InternalsVisibleTo
Aug 18, 2020
3a340ea
Reorganized namespaces
Aug 18, 2020
86d5f46
Fixes in documentation generation. Removed the parts from .csproj bec…
Aug 19, 2020
dea393b
Code cleanup: removed redundant parentheses
Aug 19, 2020
1bc055f
Code cleanup: spelling errors
Aug 19, 2020
abba0d9
Code cleanup: removed redundant qualifiers
Aug 19, 2020
94a52f6
Code cleanup: removed redundant cast
Aug 19, 2020
4535276
Fixed: possible comparison of value type with null
Aug 19, 2020
992ba42
Fixup naming conventions to match with existing style
Aug 19, 2020
cb60654
Use null instead of empty string for default value of TId; removed ha…
Aug 19, 2020
3042591
Renamed IJsonApiOptions parameter on controllers for consistency with…
Aug 20, 2020
7e323a9
Trace logging: shorter syntax and improved performance
Aug 20, 2020
d8789a0
Added null checks on input parameters of exposed methods
Aug 20, 2020
44292b0
Removed invalid usage of inheritdoc
Aug 21, 2020
1876cee
Opened up more for extensibility
Aug 24, 2020
ab95bcf
Extract method
Aug 24, 2020
8faf627
Normalized spacing in inheritdoc tags
Aug 24, 2020
47c8687
Reviewed doc-comments
Aug 24, 2020
fcaebac
Moved controller attributes in sub-namespace
Aug 31, 2020
ca74f04
Cleanup usings
Aug 31, 2020
6a24c23
Moved client serialization into Internal sub-namespace
Aug 31, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<Project>
<PropertyGroup>
<NetCoreAppVersion>netcoreapp3.1</NetCoreAppVersion>
<NetStandardVersion>netstandard2.1</NetStandardVersion>
<AspNetCoreVersion>3.1.*</AspNetCoreVersion>
<EFCoreVersion>3.1.*</EFCoreVersion>
<NpgsqlPostgreSQLVersion>3.1.*</NpgsqlPostgreSQLVersion>
Expand All @@ -10,6 +9,7 @@
<PropertyGroup Condition="'$(Configuration)'=='Release'">
<NoWarn>$(NoWarn);1591</NoWarn>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<GenerateDocumentationFile>true</GenerateDocumentationFile>
</PropertyGroup>

<!-- Test Project Dependencies -->
Expand Down
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,10 +54,10 @@ public class Article : Identifiable
public class ArticlesController : JsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
IResourceService<Article> resourceService,
ILoggerFactory loggerFactory)
: base(jsonApiOptions, resourceService, loggerFactory)
: base(options, resourceService, loggerFactory)
{ }
}
```
Expand Down
6 changes: 3 additions & 3 deletions benchmarks/BenchmarkResource.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
using JsonApiDotNetCore.Models;
using JsonApiDotNetCore.Models.Annotation;
using JsonApiDotNetCore.Resources;
using JsonApiDotNetCore.Resources.Annotations;

namespace Benchmarks
{
public sealed class BenchmarkResource : Identifiable
{
[Attr(BenchmarkResourcePublicNames.NameAttr)]
[Attr(PublicName = BenchmarkResourcePublicNames.NameAttr)]
public string Name { get; set; }

[HasOne]
Expand Down
7 changes: 2 additions & 5 deletions benchmarks/DependencyFactory.cs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
using System;
using JsonApiDotNetCore.Builders;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Internal.Contracts;
using JsonApiDotNetCore.Models;
using JsonApiDotNetCore.Services.Contract;
using JsonApiDotNetCore.Resources;
using Microsoft.Extensions.Logging.Abstractions;
using Moq;

Expand All @@ -14,7 +11,7 @@ internal static class DependencyFactory
public static IResourceGraph CreateResourceGraph(IJsonApiOptions options)
{
IResourceGraphBuilder builder = new ResourceGraphBuilder(options, NullLoggerFactory.Instance);
builder.AddResource<BenchmarkResource>(BenchmarkResourcePublicNames.Type);
builder.Add<BenchmarkResource>(BenchmarkResourcePublicNames.Type);
return builder.Build();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using BenchmarkDotNet.Attributes;
using System;
using System.Text;
using BenchmarkDotNet.Attributes;

namespace Benchmarks.LinkBuilder
{
Expand Down
28 changes: 13 additions & 15 deletions benchmarks/Query/QueryParserBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,10 @@
using System.ComponentModel.Design;
using BenchmarkDotNet.Attributes;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Internal;
using JsonApiDotNetCore.Internal.Contracts;
using JsonApiDotNetCore.Internal.QueryStrings;
using JsonApiDotNetCore.Middleware;
using JsonApiDotNetCore.QueryStrings;
using JsonApiDotNetCore.RequestServices;
using JsonApiDotNetCore.QueryStrings.Internal;
using JsonApiDotNetCore.Resources;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.WebUtilities;
using Microsoft.Extensions.Logging.Abstractions;
Expand All @@ -30,20 +29,19 @@ public QueryParserBenchmarks()

IResourceGraph resourceGraph = DependencyFactory.CreateResourceGraph(options);

var currentRequest = new CurrentRequest
var request = new JsonApiRequest
{
PrimaryResource = resourceGraph.GetResourceContext(typeof(BenchmarkResource))
};

_queryStringReaderForSort = CreateQueryParameterDiscoveryForSort(resourceGraph, currentRequest, options, _queryStringAccessor);
_queryStringReaderForAll = CreateQueryParameterDiscoveryForAll(resourceGraph, currentRequest, options, _queryStringAccessor);
_queryStringReaderForSort = CreateQueryParameterDiscoveryForSort(resourceGraph, request, options, _queryStringAccessor);
_queryStringReaderForAll = CreateQueryParameterDiscoveryForAll(resourceGraph, request, options, _queryStringAccessor);
}

private static QueryStringReader CreateQueryParameterDiscoveryForSort(IResourceGraph resourceGraph,
CurrentRequest currentRequest,
IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
JsonApiRequest request, IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
{
var sortReader = new SortQueryStringParameterReader(currentRequest, resourceGraph);
var sortReader = new SortQueryStringParameterReader(request, resourceGraph);

var readers = new List<IQueryStringParameterReader>
{
Expand All @@ -54,14 +52,14 @@ private static QueryStringReader CreateQueryParameterDiscoveryForSort(IResourceG
}

private static QueryStringReader CreateQueryParameterDiscoveryForAll(IResourceGraph resourceGraph,
CurrentRequest currentRequest, IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
JsonApiRequest request, IJsonApiOptions options, FakeRequestQueryStringAccessor queryStringAccessor)
{
var resourceFactory = new ResourceFactory(new ServiceContainer());

var filterReader = new FilterQueryStringParameterReader(currentRequest, resourceGraph, resourceFactory, options);
var sortReader = new SortQueryStringParameterReader(currentRequest, resourceGraph);
var sparseFieldSetReader = new SparseFieldSetQueryStringParameterReader(currentRequest, resourceGraph);
var paginationReader = new PaginationQueryStringParameterReader(currentRequest, resourceGraph, options);
var filterReader = new FilterQueryStringParameterReader(request, resourceGraph, resourceFactory, options);
var sortReader = new SortQueryStringParameterReader(request, resourceGraph);
var sparseFieldSetReader = new SparseFieldSetQueryStringParameterReader(request, resourceGraph);
var paginationReader = new PaginationQueryStringParameterReader(request, resourceGraph, options);
var defaultsReader = new DefaultsQueryStringParameterReader(options);
var nullsReader = new NullsQueryStringParameterReader(options);

Expand Down
6 changes: 2 additions & 4 deletions benchmarks/Serialization/JsonApiDeserializerBenchmarks.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,9 @@
using System.ComponentModel.Design;
using BenchmarkDotNet.Attributes;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Internal;
using JsonApiDotNetCore.Internal.Contracts;
using JsonApiDotNetCore.Models;
using JsonApiDotNetCore.Resources;
using JsonApiDotNetCore.Serialization;
using JsonApiDotNetCore.Serialization.Server;
using JsonApiDotNetCore.Serialization.Objects;
using Microsoft.AspNetCore.Http;
using Newtonsoft.Json;

Expand Down
12 changes: 5 additions & 7 deletions benchmarks/Serialization/JsonApiSerializerBenchmarks.cs
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
using System;
using BenchmarkDotNet.Attributes;
using JsonApiDotNetCore.Configuration;
using JsonApiDotNetCore.Internal.Contracts;
using JsonApiDotNetCore.Internal.QueryStrings;
using JsonApiDotNetCore.Middleware;
using JsonApiDotNetCore.Queries;
using JsonApiDotNetCore.RequestServices;
using JsonApiDotNetCore.QueryStrings.Internal;
using JsonApiDotNetCore.Serialization;
using JsonApiDotNetCore.Serialization.Server;
using JsonApiDotNetCore.Serialization.Server.Builders;
using JsonApiDotNetCore.Serialization.Building;
using Moq;

namespace Benchmarks.Serialization
Expand Down Expand Up @@ -41,11 +39,11 @@ public JsonApiSerializerBenchmarks()

private static FieldsToSerialize CreateFieldsToSerialize(IResourceGraph resourceGraph)
{
var currentRequest = new CurrentRequest();
var request = new JsonApiRequest();

var constraintProviders = new IQueryConstraintProvider[]
{
new SparseFieldSetQueryStringParameterReader(currentRequest, resourceGraph)
new SparseFieldSetQueryStringParameterReader(request, resourceGraph)
};

var resourceDefinitionProvider = DependencyFactory.CreateResourceDefinitionProvider(resourceGraph);
Expand Down
4 changes: 2 additions & 2 deletions docs/api/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ This section documents the package API and is generated from the XML source comm
## Common APIs

- [`JsonApiOptions`](JsonApiDotNetCore.Configuration.JsonApiOptions.yml)
- [`IResourceGraph`](JsonApiDotNetCore.Internal.Contracts.IResourceGraph.yml)
- [`ResourceDefinition<TResource>`](JsonApiDotNetCore.Models.ResourceDefinition-1.yml)
- [`IResourceGraph`](JsonApiDotNetCore.Configuration.IResourceGraph.yml)
- [`ResourceDefinition<TResource>`](JsonApiDotNetCore.Resources.ResourceDefinition-1.yml)
2 changes: 1 addition & 1 deletion docs/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
"dest": "api",
"disableGitFeatures": false,
"properties": {
"targetFramework": "netstandard2.0"
"targetFramework": "netcoreapp3.1"
}
}
],
Expand Down
4 changes: 2 additions & 2 deletions docs/getting-started/step-by-step.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,10 @@ where `T` is the model that inherits from `Identifiable<TId>`
public class PeopleController : JsonApiController<Person>
{
public PeopleController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Person> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
```
Expand Down
20 changes: 10 additions & 10 deletions docs/usage/extensibility/controllers.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ You need to create controllers that inherit from `JsonApiController<T>`
public class ArticlesController : JsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
```
Expand All @@ -23,11 +23,11 @@ public class ArticlesController : JsonApiController<Article, Guid>
//---------------------------------------------------------- ^^^^
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article, Guid> resourceService)
//----------------------- ^^^^
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
```
Expand All @@ -44,10 +44,10 @@ This approach is ok, but introduces some boilerplate that can easily be avoided.
public class ArticlesController : BaseJsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }

[HttpGet]
Expand Down Expand Up @@ -81,10 +81,10 @@ An attempt to use one blacklisted methods will result in a HTTP 405 Method Not A
public class ArticlesController : BaseJsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
```
Expand All @@ -101,10 +101,10 @@ For more information about resource injection, see the next section titled Resou
public class ReportsController : BaseJsonApiController<Report>
{
public ReportsController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Report> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }

[HttpGet]
Expand Down
4 changes: 2 additions & 2 deletions docs/usage/extensibility/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -148,11 +148,11 @@ Then in the controller, you should inherit from the base controller and pass the
public class ArticlesController : BaseJsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
ICreateService<Article, int> create,
IDeleteService<Article, int> delete)
: base(jsonApiOptions, loggerFactory, create: create, delete: delete)
: base(options, loggerFactory, create: create, delete: delete)
{ }

[HttpPost]
Expand Down
4 changes: 2 additions & 2 deletions docs/usage/routing.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ You can disable the default casing convention and specify your own template by u
public class CamelCasedModelsController : JsonApiController<CamelCasedModel>
{
public CamelCasedModelsController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<CamelCasedModel> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
```
Expand Down
4 changes: 2 additions & 2 deletions src/Examples/GettingStarted/Controllers/ArticlesController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace GettingStarted.Controllers
public sealed class ArticlesController : JsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
}
4 changes: 2 additions & 2 deletions src/Examples/GettingStarted/Controllers/PeopleController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace GettingStarted.Controllers
public sealed class PeopleController : JsonApiController<Person>
{
public PeopleController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Person> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
}
4 changes: 2 additions & 2 deletions src/Examples/GettingStarted/Models/Article.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
using JsonApiDotNetCore.Models;
using JsonApiDotNetCore.Models.Annotation;
using JsonApiDotNetCore.Resources;
using JsonApiDotNetCore.Resources.Annotations;

namespace GettingStarted.Models
{
Expand Down
4 changes: 2 additions & 2 deletions src/Examples/GettingStarted/Models/Person.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using System.Collections.Generic;
using JsonApiDotNetCore.Models;
using JsonApiDotNetCore.Models.Annotation;
using JsonApiDotNetCore.Resources;
using JsonApiDotNetCore.Resources.Annotations;

namespace GettingStarted.Models
{
Expand Down
2 changes: 1 addition & 1 deletion src/Examples/GettingStarted/Startup.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
using GettingStarted.Data;
using GettingStarted.Models;
using JsonApiDotNetCore;
using JsonApiDotNetCore.Configuration;
using Microsoft.AspNetCore.Builder;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace JsonApiDotNetCoreExample.Controllers
public sealed class ArticlesController : JsonApiController<Article>
{
public ArticlesController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Article> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace JsonApiDotNetCoreExample.Controllers
public sealed class AuthorsController : JsonApiController<Author>
{
public AuthorsController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Author> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ namespace JsonApiDotNetCoreExample.Controllers
public sealed class BlogsController : JsonApiController<Blog>
{
public BlogsController(
IJsonApiOptions jsonApiOptions,
IJsonApiOptions options,
ILoggerFactory loggerFactory,
IResourceService<Blog> resourceService)
: base(jsonApiOptions, loggerFactory, resourceService)
: base(options, loggerFactory, resourceService)
{ }
}
}
Loading