On 18/07/2013 23:44, Andrei Shakirin wrote:
Hi Francesco,

I am not 100% sure that is a solution for your case, but I have used Jackson 
specific annotation in AbstractSchemaTO:
@JsonTypeInfo(use=Id.CLASS, include=As.PROPERTY, property="class").

Annotation is currently deactivated, because it causes conflicts with Syncope 
Spring MVC Rest implementation.
The annotation forces client to send concrete class name in JSON 
representation, as a result service has more information to construct concrete 
class.
As I can remember, I have tested this code for JSON using CXF JAX-RS client and 
service.

Could you try to activate it and retest?

Hi Andrei,
when adding such Jackson annotation to AbstractSchemaTO, the JSON payload actually adds the expected attribute:

{
  "class": "org.apache.syncope.common.to.SchemaTO",
  "name": "fullname",
  "type": "String",
  "mandatoryCondition": "true",
  "enumerationValues": null,
  "enumerationKeys": null,
  "multivalue": false,
  "uniqueConstraint": true,
  "readonly": false,
  "conversionPattern": null,
  "validatorClass": null
}

However, this still generates the (same) exception:

java.lang.ClassCastException: java.util.LinkedHashMap cannot be cast to org.apache.syncope.common.to.AbstractSchemaTO

BTW, I have verified via debug that in ProviderBase (ancestor of JacksonJaxbJsonProvider), the method readFrom() is invoked with parameters

Class<Object> type => class org.apache.syncope.common.to.AbstractSchemaTO
Type genericType => T, with name ""org.apache.syncope.common.to.AbstractSchemaTO"

Regards.

--
Francesco Chicchiriccò

ASF Member, Apache Syncope PMC chair, Apache Cocoon PMC Member
http://people.apache.org/~ilgrosso/

Reply via email to