-
-
Notifications
You must be signed in to change notification settings - Fork 143
Open
Labels
Milestone
Description
As I needed a fix for polymorphism on Option #125 I updated to 2.3.2.
I don't know if it works fine but it introduced a new kind of error in my code base that used to work with 2.2.0:
Caused by: java.lang.IllegalArgumentException: Can't unserialize json class=class models.Stample:
{
"author" : "",
"source" : "",
"categoryId" : "5087de9be4b078ca9f03f225",
"_typeHint" : "models.Stample",
"history" : [ {
"userId" : "5087de9be4b078ca9f03f224",
"userProfile" : {
"username" : "herqule",
"avatarUrl" : "http://www.gravatar.com/avatar/b2495caca536aa0a730da3f0aeace952?d=404",
"profilePicture" : "https://s3.amazonaws.com/com.stample.s3/stample-5087de9be4b078ca9f03f2241386000334039-sebastienlorber.jpg",
"lastName" : "Sebastien Lorber",
"firstName" : "",
"fullname" : "Sebastien Lorber"
},
"date" : "2014-03-26T10:02:09.387Z"
} ],
"description" : "",
"labelColor" : "",
"stampleType" : "Stample",
"sourcePublicationDate" : "",
"stampleSharing" : {
"public" : false
},
"id" : "5332a5a1e4b0f3da2af015d5",
"breadcrumb" : [ {
"_id" : "5087de9be4b078ca9f03f225",
"name" : "Home"
} ],
"content" : {
"hashtags" : [ "#roberto" ]
},
"creationDate" : 1395828129387,
"position" : 1.395828129387E12,
"userId" : "5087de9be4b078ca9f03f224",
"title" : "test",
"props" : {
"mentionedUserIds" : [ ],
"spotonUsers" : [ ],
"followers" : [ "5087de9be4b078ca9f03f224" ],
"locked" : false,
"stampleLastEvent" : {
"all" : "2014-05-26T10:46:51.390Z"
},
"nbcomments" : 0
},
"summary" : ""
}
at utils.CustomSerializer$$anonfun$unserialize$2.applyOrElse(CustomSerializer.scala:65) ~[classes/:na]
at utils.CustomSerializer$$anonfun$unserialize$2.applyOrElse(CustomSerializer.scala:64) ~[classes/:na]
at scala.runtime.AbstractPartialFunction.apply(AbstractPartialFunction.scala:33) ~[scala-library-2.10.3.jar:na]
at scala.util.Failure$$anonfun$recover$1.apply(Try.scala:185) ~[scala-library-2.10.3.jar:na]
at scala.util.Try$.apply(Try.scala:161) ~[scala-library-2.10.3.jar:na]
at scala.util.Failure.recover(Try.scala:185) ~[scala-library-2.10.3.jar:na]
at utils.CustomSerializer$.unserialize(CustomSerializer.scala:64) ~[classes/:na]
at controllers.SearchController$$anonfun$3.apply(SearchController.scala:78) ~[classes/:na]
at controllers.SearchController$$anonfun$3.apply(SearchController.scala:77) ~[classes/:na]
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library-2.10.3.jar:na]
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) ~[scala-library-2.10.3.jar:na]
at scala.collection.Iterator$class.foreach(Iterator.scala:727) ~[scala-library-2.10.3.jar:na]
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) ~[scala-library-2.10.3.jar:na]
at scala.collection.IterableLike$class.foreach(IterableLike.scala:72) ~[scala-library-2.10.3.jar:na]
at scala.collection.AbstractIterable.foreach(Iterable.scala:54) ~[scala-library-2.10.3.jar:na]
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) ~[scala-library-2.10.3.jar:na]
at scala.collection.AbstractTraversable.map(Traversable.scala:105) ~[scala-library-2.10.3.jar:na]
at controllers.SearchController$.enhanceResult(SearchController.scala:77) ~[classes/:na]
at controllers.SearchController$$anonfun$getSearchResults$1$$anonfun$apply$2.apply(SearchController.scala:57) ~[classes/:na]
at controllers.SearchController$$anonfun$getSearchResults$1$$anonfun$apply$2.apply(SearchController.scala:50) ~[classes/:na]
at controllers.BaseController$$anonfun$whenSuccessfulForm$2.apply(BaseController.scala:318) ~[classes/:na]
at controllers.BaseController$$anonfun$whenSuccessfulForm$2.apply(BaseController.scala:318) ~[classes/:na]
at play.api.data.Form.fold(Form.scala:136) ~[play_2.10-2.2.2.jar:2.2.2]
at controllers.BaseController$class.whenSuccessfulForm(BaseController.scala:316) ~[classes/:na]
at controllers.SearchController$.whenSuccessfulForm(SearchController.scala:21) ~[classes/:na]
at controllers.SearchController$$anonfun$getSearchResults$1.apply(SearchController.scala:50) ~[classes/:na]
at controllers.SearchController$$anonfun$getSearchResults$1.apply(SearchController.scala:49) ~[classes/:na]
at controllers.BaseController$$anonfun$controllers$BaseController$$withUserInMDC$1.apply(BaseController.scala:252) ~[classes/:na]
at controllers.BaseController$$anonfun$controllers$BaseController$$withUserInMDC$1.apply(BaseController.scala:249) ~[classes/:na]
at controllers.BaseController$$anonfun$sr$1$1$$anonfun$apply$1.apply(BaseController.scala:208) ~[classes/:na]
at controllers.BaseController$$anonfun$sr$1$1$$anonfun$apply$1.apply(BaseController.scala:208) ~[classes/:na]
at scala.util.Try$.apply(Try.scala:161) ~[scala-library-2.10.3.jar:na]
at controllers.BaseController$class.controllers$BaseController$$wrapUserRelatedRuntimeExceptions(BaseController.scala:236) ~[classes/:na]
... 39 common frames omitted
Caused by: com.fasterxml.jackson.databind.JsonMappingException: No suitable constructor found for type [simple type, class models.StampleHistory]: can not instantiate from JSON object (need to add/enable type information?)
at [Source: java.io.StringReader@31a69bf3; line: 1, column: 322]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:164) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1078) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:268) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:124) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:227) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:204) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.module.scala.deser.SeqDeserializer.deserialize(SeqDeserializerModule.scala:76) ~[jackson-module-scala_2.10-2.3.2.jar:na]
at com.fasterxml.jackson.module.scala.deser.SeqDeserializer.deserialize(SeqDeserializerModule.scala:59) ~[jackson-module-scala_2.10-2.3.2.jar:na]
at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:525) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:331) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1071) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:268) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:124) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2993) ~[jackson-databind-2.3.2.jar:2.3.2]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2098) ~[jackson-databind-2.3.2.jar:2.3.2]
at utils.CustomSerializer$$anonfun$unserialize$5.apply(CustomSerializer.scala:63) ~[classes/:na]
at scala.util.Try$.apply(Try.scala:161) ~[scala-library-2.10.3.jar:na]
at utils.CustomSerializer$.unserialize(CustomSerializer.scala:62) ~[classes/:na]
... 65 common frames omitted
@JsonIgnoreProperties(ignoreUnknown = true)
case class Stample(
....................,
history: List[StampleHistory] = Nil,
....................
)
@JsonIgnoreProperties(ignoreUnknown = true)
@deprecated
case class StampleHistory(userId: ObjectId, userProfile: Option[UserProfile] = None, @JsonIgnore date: DateTime = new DateTime())
@JsonIgnoreProperties(ignoreUnknown = true)
case class UserProfile(
username: String,
fullname: String,
firstName: String = "",
lastName: String = "",
avatarUrl: Option[String] = None,
profilePicture: Option[String] = None)
Any idea why this deserialization doesn't work anymore?