Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
10 changes: 9 additions & 1 deletion src/Elasticsearch.Net/Utf8Json/Resolvers/CompositeResolver.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,20 @@
#endregion

using System;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using Elasticsearch.Net.Utf8Json.Internal.Emit;

namespace Elasticsearch.Net.Utf8Json.Resolvers
{
internal static class ResolverConfig
{
// this needs to be determined `dynamically` at compile time
// because we rewrite namespaces and published versioned packages
public static readonly string Namespace = String.Join(".", typeof(ResolverConfig).Namespace.Split('.').Take(2));
}

internal sealed class CompositeResolver : IJsonFormatterResolver
{
public static readonly CompositeResolver Instance = new CompositeResolver();
Expand Down Expand Up @@ -147,7 +155,7 @@ static FormatterCache()

internal abstract class DynamicCompositeResolver : IJsonFormatterResolver
{
const string ModuleName = "Elasticsearch.Net.DynamicCompositeResolver";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicCompositeResolver";

static readonly DynamicAssembly assembly;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ internal sealed class CustomDynamicObjectResolver
private readonly ThreadsafeTypeKeyHashTable<object> _formatters = new ThreadsafeTypeKeyHashTable<object>();

// configuration
const string ModuleName = "Elasticsearch.Net.CustomDynamicObjectResolver";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.CustomDynamicObjectResolver";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -133,7 +133,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullFalseName
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateOriginal();
static readonly Func<string, string> nameMutator = StringMutator.Original;
static readonly bool excludeNull = false;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateOriginal";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateOriginal";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -178,7 +178,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullFalseName
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateCamelCase();
static readonly Func<string, string> nameMutator = StringMutator.ToCamelCase;
static readonly bool excludeNull = false;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateCamelCase";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateCamelCase";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -223,7 +223,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullFalseName
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateSnakeCase();
static readonly Func<string, string> nameMutator = StringMutator.ToSnakeCase;
static readonly bool excludeNull = false;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateSnakeCase";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullFalseNameMutateSnakeCase";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -268,7 +268,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameM
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateOriginal();
static readonly Func<string, string> nameMutator = StringMutator.Original;
static readonly bool excludeNull = true;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateOriginal";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateOriginal";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -313,7 +313,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameM
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateCamelCase();
static readonly Func<string, string> nameMutator = StringMutator.ToCamelCase;
static readonly bool excludeNull = true;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateCamelCase";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateCamelCase";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -358,7 +358,7 @@ internal sealed class DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameM
public static readonly IJsonFormatterResolver Instance = new DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateSnakeCase();
static readonly Func<string, string> nameMutator = StringMutator.ToSnakeCase;
static readonly bool excludeNull = true;
const string ModuleName = "Elasticsearch.Net.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateSnakeCase";
private static readonly string ModuleName = $"{ResolverConfig.Namespace}.DynamicObjectResolverAllowPrivateFalseExcludeNullTrueNameMutateSnakeCase";

static readonly DynamicAssembly assembly;

Expand Down Expand Up @@ -653,7 +653,7 @@ static TypeInfo BuildType(DynamicAssembly assembly, Type type, Func<string, stri
var hasShouldSerialize = serializationInfo.Members.Any(x => x.ShouldSerializeMethodInfo != null);

var formatterType = typeof(IJsonFormatter<>).MakeGenericType(type);
var typeBuilder = assembly.DefineType("Elasticsearch.Net." + SubtractFullNameRegex.Replace(type.FullName, "").Replace(".", "_") + "Formatter" + Interlocked.Increment(ref nameSequence), TypeAttributes.NotPublic | TypeAttributes.Sealed, null, new[] { formatterType });
var typeBuilder = assembly.DefineType(ResolverConfig.Namespace + "." + SubtractFullNameRegex.Replace(type.FullName, "").Replace(".", "_") + "Formatter" + Interlocked.Increment(ref nameSequence), TypeAttributes.NotPublic | TypeAttributes.Sealed, null, new[] { formatterType });

FieldBuilder stringByteKeysField;
Dictionary<MetaMember, FieldInfo> customFormatterLookup;
Expand Down