Hello everyone, i'm currently facing a weird behavior in my application as i can't serialize a case class for (apparently) various reason.I have a polymorphic queue-like implementation where each class extends "AbstractQueueItem"
I already have a couple of classes extending it and it all works properly except for this new one :
case class MeterReadingRequestQueueItem(
override val id: Option[ObjectId] = None,
override val creationDate: LocalDateTime = new LocalDateTime(),
override val status: ItemStatusEnum.Value = ItemStatusEnum.Unprocessed,
override val response: Option[String] = None,
request: MeterReadingsRequest
) extends AbstractQueueItem(id, creationDate, status, response) {
def clone(newStatus: ItemStatusEnum.Value, newResponse: Option[String] = None): AbstractQueueItem = this.copy(status = newStatus, response = newResponse)
}
Now the request is the interesting part and it is as follow:
case class MeterReadingsRequest(
reference: Long,
readings: MeterReadingSubmission
)
case class MeterReadingSubmission(
CaseId: String,
ContactCaseId: Option[String],
Comment: String,
MeterReadingMethod: Option[String],
ReadingDate: Option[String] = None,
MeterReadingRequests: List[MeterReadingRequest]
)
case class MeterReadingRequest(
ReadingDate: String,
Digits: Option[Int],
EAN: String,
LDNT1: Option[Int],
LDNT2: Option[Int],
ODNT1: Option[Int],
ODNT2: Option[Int]
)
Odd enough the ReadingDate is a Option[String] or just String in the case of the inner request and that is because the serialization was just failing saying (can't serialize class org.joda.time.LocalDateTime
java.lang.IllegalArgumentException: can't serialize class org.joda.time.LocalDateTime
While trying to track down the issue i changed the LocalDateTime into plain string and hoped this would resolve the serialization issues (even thou i do serialize joda LocalDateTime in other classes) but instead i've got this :