diff --git a/src/Nest/Resolvers/Writers/TypeMappingWriter.cs b/src/Nest/Resolvers/Writers/TypeMappingWriter.cs index 09afcf43909..079e190debb 100644 --- a/src/Nest/Resolvers/Writers/TypeMappingWriter.cs +++ b/src/Nest/Resolvers/Writers/TypeMappingWriter.cs @@ -155,7 +155,7 @@ internal void WriteProperties(JsonWriter jsonWriter) if (type == "object" || type == "nested") { - var deepType = p.PropertyType; + var deepType = GetUnderlyingType(p.PropertyType); var deepTypeName = this.Infer.TypeName(deepType); var seenTypes = new ConcurrentDictionary(this.SeenTypes); seenTypes.AddOrUpdate(deepType, 0, (t, i) => ++i); diff --git a/src/Tests/Nest.Tests.Unit/Core/AttributeBasedMap/DeepObjectMappingTests.cs b/src/Tests/Nest.Tests.Unit/Core/AttributeBasedMap/DeepObjectMappingTests.cs index e15e67d26a5..2b863311aed 100644 --- a/src/Tests/Nest.Tests.Unit/Core/AttributeBasedMap/DeepObjectMappingTests.cs +++ b/src/Tests/Nest.Tests.Unit/Core/AttributeBasedMap/DeepObjectMappingTests.cs @@ -1,4 +1,5 @@ using NUnit.Framework; +using System.Collections.Generic; namespace Nest.Tests.Unit.Core.AttributeBasedMap { @@ -29,6 +30,12 @@ private class NestedRecursiveMapChild public string Name { get; set; } public NestedRecursiveMapParent Parent { get; set; } } + private class RecursiveMapCollection + { + public string Name { get; set; } + public IEnumerable Items { get; set; } + } + [Test] public void TestDeepObjectWriter() { @@ -41,5 +48,10 @@ public void TestDeepObjectResursiveWriter() //make sure we dont stackoverflow because of a never ending recursion Assert.DoesNotThrow(() => this.CreateMapFor() ); } + [Test] + public void TestRecursiveCollectionWriter() + { + Assert.DoesNotThrow(() => this.CreateMapFor()); + } } }