Search in sources :

Example 11 with BeanProperty

use of com.fasterxml.jackson.databind.BeanProperty in project alfresco-remote-api by Alfresco.

the class TargetDeserializer method deserialize.

@Override
public Target deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
    Target target = null;
    JsonToken curr = jp.getCurrentToken();
    if (curr == JsonToken.START_OBJECT) {
        while (jp.nextToken() != JsonToken.END_OBJECT) {
            String fieldname = jp.getCurrentName();
            if (Type.SITE.toString().equals(fieldname.toUpperCase())) {
                jp.nextToken();
                try {
                    JavaType t = SimpleType.construct(Site.class);
                    BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
                    JsonDeserializer<?> siteDeserializer = ctxt.findContextualValueDeserializer(t, p);
                    Site site = (Site) siteDeserializer.deserialize(jp, ctxt);
                    target = new SiteTarget(site);
                } catch (JsonMappingException e) {
                    throw new IllegalArgumentException("Target body is invalid for target type");
                }
            } else if (Type.FILE.toString().equals(fieldname.toUpperCase())) {
                jp.nextToken();
                try {
                    JavaType t = SimpleType.construct(Document.class);
                    BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
                    JsonDeserializer<?> documentDeserializer = ctxt.findContextualValueDeserializer(t, p);
                    Document document = (Document) documentDeserializer.deserialize(jp, ctxt);
                    target = new DocumentTarget(document);
                } catch (JsonMappingException e) {
                    throw new IllegalArgumentException("Target body is invalid for target type");
                }
            } else if (Type.FOLDER.toString().equals(fieldname.toUpperCase())) {
                jp.nextToken();
                try {
                    JavaType t = SimpleType.construct(Folder.class);
                    BeanProperty p = new BeanProperty.Std(new PropertyName(""), t, null, null, null, null);
                    JsonDeserializer<?> folderDeserializer = ctxt.findContextualValueDeserializer(t, p);
                    Folder folder = (Folder) folderDeserializer.deserialize(jp, ctxt);
                    target = new FolderTarget(folder);
                } catch (JsonMappingException e) {
                    throw new IllegalArgumentException("Target body is invalid for target type");
                }
            }
        }
        return target;
    } else {
        throw new IOException("Unable to deserialize favourite: " + curr.asString());
    }
}
Also used : Site(org.alfresco.rest.api.model.Site) PropertyName(com.fasterxml.jackson.databind.PropertyName) DocumentTarget(org.alfresco.rest.api.model.DocumentTarget) FolderTarget(org.alfresco.rest.api.model.FolderTarget) IOException(java.io.IOException) Document(org.alfresco.rest.api.model.Document) JsonDeserializer(com.fasterxml.jackson.databind.JsonDeserializer) Folder(org.alfresco.rest.api.model.Folder) BeanProperty(com.fasterxml.jackson.databind.BeanProperty) Target(org.alfresco.rest.api.model.Target) SiteTarget(org.alfresco.rest.api.model.SiteTarget) DocumentTarget(org.alfresco.rest.api.model.DocumentTarget) FolderTarget(org.alfresco.rest.api.model.FolderTarget) JavaType(com.fasterxml.jackson.databind.JavaType) JsonMappingException(com.fasterxml.jackson.databind.JsonMappingException) JsonToken(com.fasterxml.jackson.core.JsonToken) SiteTarget(org.alfresco.rest.api.model.SiteTarget)

Aggregations

BeanProperty (com.fasterxml.jackson.databind.BeanProperty)11 DeserializationContext (com.fasterxml.jackson.databind.DeserializationContext)5 InjectableValues (com.fasterxml.jackson.databind.InjectableValues)5 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)5 Test (org.junit.Test)5 JsonMappingException (com.fasterxml.jackson.databind.JsonMappingException)4 DefaultObjectMapper (org.apache.druid.jackson.DefaultObjectMapper)3 JavaType (com.fasterxml.jackson.databind.JavaType)2 Module (com.fasterxml.jackson.databind.Module)2 AnnotatedMember (com.fasterxml.jackson.databind.introspect.AnnotatedMember)2 TypeDeserializer (com.fasterxml.jackson.databind.jsontype.TypeDeserializer)2 EC2AutoScaler (io.druid.indexing.overlord.autoscaling.ec2.EC2AutoScaler)2 DefaultObjectMapper (io.druid.jackson.DefaultObjectMapper)2 IOException (java.io.IOException)2 AutoScaler (org.apache.druid.indexing.overlord.autoscaling.AutoScaler)2 JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)1 JsonPointer (com.fasterxml.jackson.core.JsonPointer)1 JsonToken (com.fasterxml.jackson.core.JsonToken)1 JsonDeserializer (com.fasterxml.jackson.databind.JsonDeserializer)1 PropertyName (com.fasterxml.jackson.databind.PropertyName)1