Skip to content

Commit 3b08cc4

Browse files
committed
fix #469 DefaultProperyNameInferrer was not applied correctly in the expression visitor
1 parent 5ede2a2 commit 3b08cc4

File tree

5 files changed

+266
-225
lines changed

5 files changed

+266
-225
lines changed

src/Nest/Domain/Connection/ConnectionSettings.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public ConnectionSettings(Uri uri, string defaultIndex)
7070

7171
this.MaximumAsyncConnections = 0;
7272
this.DefaultTypeNameInferrer = (t => t.Name.ToLower());
73+
this.DefaultPropertyNameInferrer = (p => p.ToCamelCase());
7374
this.DefaultIndices = new FluentDictionary<Type, string>();
7475
this.DefaultTypeNames = new FluentDictionary<Type, string>();
7576
this.ConnectionStatusHandler = this.ConnectionStatusDefaultHandler;

src/Nest/Resolvers/PropertyNameResolver.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ protected override Expression VisitMemberAccess(MemberExpression expression, Sta
127127
if (stack != null)
128128
{
129129
var name = expression.Member.Name;
130-
var resolvedName = name.ToCamelCase();
130+
var resolvedName = this._settings.DefaultPropertyNameInferrer(name);
131131

132132
var att = ElasticAttributes.Property(expression.Member);
133133
if (att != null)

src/Tests/Nest.Tests.Unit/Internals/Inferno/PropertyNameResolverTests.cs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,28 @@ public override string ToString()
5151
return "static id ftw";
5252
}
5353
}
54-
54+
55+
internal class UserItemData
56+
{
57+
public string Id { get; set; }
58+
public string UserId { get; set; }
59+
public string Title { get; set; }
60+
public string Hidden { get; set; }
61+
public string UserLabels { get; set; }
62+
}
63+
64+
[Test]
65+
public void TestUsesDefaultPropertyNameResolver()
66+
{
67+
var settings = new ConnectionSettings(Test.Default.Uri, Test.Default.DefaultIndex)
68+
.SetDefaultPropertyNameInferrer(p => p);
69+
var client = new ElasticClient(settings);
70+
Expression<Func<UserItemData, object>> exp = (m) => m.UserLabels;
71+
var propertyName = client.Infer.PropertyPath(exp);
72+
Assert.AreEqual("UserLabels", propertyName);
73+
74+
}
75+
5576
[Test]
5677
public void TestUsesElasticProperty()
5778
{
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
{
2+
"from": 0,
3+
"size": 10,
4+
}

0 commit comments

Comments
 (0)