diff --git a/src/main/scala/com/arangodb/velocypack/module/scala/internal/VPackScalaDeserializers.scala b/src/main/scala/com/arangodb/velocypack/module/scala/internal/VPackScalaDeserializers.scala index fb478ae..db6691b 100644 --- a/src/main/scala/com/arangodb/velocypack/module/scala/internal/VPackScalaDeserializers.scala +++ b/src/main/scala/com/arangodb/velocypack/module/scala/internal/VPackScalaDeserializers.scala @@ -23,9 +23,14 @@ object VPackScalaDeserializers { } } - val LIST = new VPackDeserializer[List[Any]] { + val LIST = new VPackDeserializerParameterizedType[List[Any]] { def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext): List[Any] = - context.deserialize(vpack, classOf[java.util.List[Any]]).toList + throw new UnsupportedOperationException + + def deserialize(parent: VPackSlice, vpack: VPackSlice, context: VPackDeserializationContext, t: ParameterizedType): List[Any] = { + val clazz = t.getActualTypeArguments()(0).asInstanceOf[Class[Any]] + vpack.arrayIterator().map { slice => context.deserialize(slice, clazz) }.toList + } } val MAP = new VPackDeserializer[Map[Any, Any]] { diff --git a/src/test/scala/com/arangodb/velocypack/module/scala/VPackListTest.scala b/src/test/scala/com/arangodb/velocypack/module/scala/VPackListTest.scala index 7663656..deeb023 100644 --- a/src/test/scala/com/arangodb/velocypack/module/scala/VPackListTest.scala +++ b/src/test/scala/com/arangodb/velocypack/module/scala/VPackListTest.scala @@ -55,6 +55,7 @@ class VPackListTest extends FunSuite with Matchers { entity.i(0) should be(69) entity.o.size should be(1) entity.o(0) should not be null + entity.o(0) shouldBe a [ListTestEntity] } -} \ No newline at end of file +}