Skip to content

Add SerializerSettings to JsonApiOptions #187

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 3 commits into from
Nov 11, 2017
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
98 changes: 58 additions & 40 deletions src/JsonApiDotNetCore/Configuration/JsonApiOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,47 +3,65 @@
using JsonApiDotNetCore.Internal;
using JsonApiDotNetCore.Serialization;
using Microsoft.EntityFrameworkCore;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;

namespace JsonApiDotNetCore.Configuration
{
public class JsonApiOptions
{
public string Namespace { get; set; }
public int DefaultPageSize { get; set; }
public bool IncludeTotalRecordCount { get; set; }
public bool AllowClientGeneratedIds { get; set; }
public IContextGraph ContextGraph { get; set; }
public bool RelativeLinks { get; set; }

/// <summary>
/// This flag is experimental and could be perceived as a violation
/// of the v1 spec. However, we have decided that this is a real
/// requirement for users of this library and a gap in the specification.
/// It will likely be removed when the spec is updated to support this
/// requirement.
/// </summary>
public bool AllowCustomQueryParameters { get; set; }
public IContractResolver JsonContractResolver { get; set; } = new DasherizedResolver();
internal IContextGraphBuilder ContextGraphBuilder { get; } = new ContextGraphBuilder();

public void BuildContextGraph<TContext>(Action<IContextGraphBuilder> builder)
where TContext : DbContext
{
BuildContextGraph(builder);

ContextGraphBuilder.AddDbContext<TContext>();

ContextGraph = ContextGraphBuilder.Build();
}

public void BuildContextGraph(Action<IContextGraphBuilder> builder)
{
if (builder == null) return;

builder(ContextGraphBuilder);

ContextGraph = ContextGraphBuilder.Build();
}
}
}
public class JsonApiOptions
Copy link
Contributor

@jaredcnance jaredcnance Nov 11, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please fix formatting here. There is no need to change the size of the whitespace, nor introduce line spaces between properties. It also makes diffs more difficult and creates noise when looking at file line history.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really thought I had my settings on spaces, but perhaps that is because I am used to using an editorconfig file... The extra lines where added by the CodeMaid plugin I use a lot, but I will disable that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fair. TBH I thought we had an .editorconfig :oops: thanks for mentioning it and I'll get that added.

{
public string Namespace { get; set; }

public int DefaultPageSize { get; set; }

public bool IncludeTotalRecordCount { get; set; }

public bool AllowClientGeneratedIds { get; set; }

public IContextGraph ContextGraph { get; set; }

public bool RelativeLinks { get; set; }

/// <summary>
/// This flag is experimental and could be perceived as a violation
/// of the v1 spec. However, we have decided that this is a real
/// requirement for users of this library and a gap in the specification.
/// It will likely be removed when the spec is updated to support this
/// requirement.
/// </summary>
public bool AllowCustomQueryParameters { get; set; }

public IContractResolver JsonContractResolver
{
get => SerializerSettings.ContractResolver;
set => SerializerSettings.ContractResolver = value;
}

internal IContextGraphBuilder ContextGraphBuilder { get; } = new ContextGraphBuilder();

public JsonSerializerSettings SerializerSettings { get; } = new JsonSerializerSettings()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍
nit: let's move this to the line directly beneath the JsonContractResolver since they are related. Also, I agree that we should mark the JsonContractResolver as Obsolete

{
NullValueHandling = NullValueHandling.Ignore,
ContractResolver = new DasherizedResolver()
};

public void BuildContextGraph<TContext>(Action<IContextGraphBuilder> builder)
where TContext : DbContext
{
BuildContextGraph(builder);

ContextGraphBuilder.AddDbContext<TContext>();

ContextGraph = ContextGraphBuilder.Build();
}

public void BuildContextGraph(Action<IContextGraphBuilder> builder)
{
if (builder == null) return;

builder(ContextGraphBuilder);

ContextGraph = ContextGraphBuilder.Build();
}
}
}
Loading