lift-json: MappingException does not chain the cause exception

36 views
Skip to first unread message

Radek Tkaczyk

unread,
Feb 26, 2016, 8:47:05 AM2/26/16
to Lift
Hi Lift team,

we've been doing some tests involving our deployment procedures and we ran into a strange deserialization issue with lift-json. The message was like this:


net.liftweb.json.MappingException: No usable value for x
Parsed JSON values do not match with class constructor
args=
arg types=
constructor=public com.organization.SomeClass(scala.collection.immutable.List)
        at net.liftweb.json.Meta$.fail(Meta.scala:191) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:357) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:317) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        ...

Caused by: net.liftweb.json.MappingException: Parsed JSON values do not match with class constructor
args=
arg types=
constructor=public com.organization.SomeClass(scala.collection.immutable.List)
        at net.liftweb.json.Meta$.fail(Meta.scala:191) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.instantiate$1(Extraction.scala:262) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:286) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:315) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.mkWithTypeHint$1(Extraction.scala:276) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.newInstance$1(Extraction.scala:284) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:315) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$$anonfun$21.apply(Extraction.scala:305) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$$anonfun$21.apply(Extraction.scala:305) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library-2.10.5.jar:na]
        at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library-2.10.5.jar:na]
        at scala.collection.immutable.List.foreach(List.scala:318) ~[scala-library-2.10.5.jar:na]
        at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) ~[scala-library-2.10.5.jar:na]
        at scala.collection.AbstractTraversable.map(Traversable.scala:105) ~[scala-library-2.10.5.jar:na]
        at net.liftweb.json.Extraction$.newCollection$1(Extraction.scala:305) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.net$liftweb$json$Extraction$$build$1(Extraction.scala:322) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        at net.liftweb.json.Extraction$.mkValue$1(Extraction.scala:351) ~[lift-json_2.10-2.6.2.jar:2.6.2]
        ... 111 common frames omitted



After a long investigation we've discovered with had a problem with loading the SomeClass from jar. It might have been easier to deduce if the first `MappingException` that was thrown included the cause exception. The problem can be traced to this line: https://github.com/lift/lift/blob/master/framework/lift-base/lift-json/src/main/scala/net/liftweb/json/Extraction.scala#L204

I hope the fix is as simple as adding the caught exception as a second argument to the fail function.

Thanks,
Radek 

Antonio Salazar Cardozo

unread,
Feb 26, 2016, 10:32:06 AM2/26/16
to Lift
Thanks for the report; added an issue. We'll try and get it fixed
soonly :)
Thanks,
Antonio
Reply all
Reply to author
Forward
0 new messages