All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.stjs.server.json.jackson.STJSDeserializers Maven / Gradle / Ivy

package org.stjs.server.json.jackson;

import org.codehaus.jackson.map.BeanDescription;
import org.codehaus.jackson.map.BeanProperty;
import org.codehaus.jackson.map.DeserializationConfig;
import org.codehaus.jackson.map.DeserializerProvider;
import org.codehaus.jackson.map.JsonDeserializer;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.KeyDeserializer;
import org.codehaus.jackson.map.TypeDeserializer;
import org.codehaus.jackson.map.module.SimpleDeserializers;
import org.codehaus.jackson.map.type.CollectionLikeType;
import org.codehaus.jackson.map.type.CollectionType;
import org.codehaus.jackson.map.type.MapLikeType;
import org.codehaus.jackson.map.type.MapType;
import org.codehaus.jackson.map.type.SimpleType;
import org.codehaus.jackson.type.JavaType;
import org.stjs.javascript.Array;
import org.stjs.javascript.Map;

public class STJSDeserializers extends SimpleDeserializers {
	@Override
	public JsonDeserializer findBeanDeserializer(JavaType type, DeserializationConfig config,
			DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property) throws JsonMappingException {
		if (type.getRawClass() == Array.class) {
			return new JSArrayDeserializer(type, provider.findValueDeserializer(config,
					((SimpleType) type).containedType(0), property), null);
		}
		if (type.getRawClass() == Map.class) {
			KeyDeserializer keyDeserializer = provider.findKeyDeserializer(config,
					((SimpleType) type).containedType(0), property);
			return new JSMapDeserializer(type, keyDeserializer, provider.findValueDeserializer(config,
					((SimpleType) type).containedType(1), property), null);
		}
		return super.findBeanDeserializer(type, config, provider, beanDesc, property);
	}

	@Override
	public JsonDeserializer findCollectionDeserializer(CollectionType type, DeserializationConfig config,
			DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property,
			TypeDeserializer elementTypeDeserializer, JsonDeserializer elementDeserializer)
			throws JsonMappingException {
		if (type.getRawClass() == Array.class) {
			return new JSArrayDeserializer(type,
					provider.findValueDeserializer(config, type.getContentType(), property), elementTypeDeserializer);
		}
		return super.findCollectionDeserializer(type, config, provider, beanDesc, property, elementTypeDeserializer,
				elementDeserializer);
	}

	@Override
	public JsonDeserializer findCollectionLikeDeserializer(CollectionLikeType type, DeserializationConfig config,
			DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property,
			TypeDeserializer elementTypeDeserializer, JsonDeserializer elementDeserializer)
			throws JsonMappingException {
		if (type.getRawClass() == Array.class) {
			return new JSArrayDeserializer(type,
					provider.findValueDeserializer(config, type.getContentType(), property), elementTypeDeserializer);
		}

		return super.findCollectionLikeDeserializer(type, config, provider, beanDesc, property,
				elementTypeDeserializer, elementDeserializer);
	}

	@Override
	public JsonDeserializer findMapDeserializer(MapType type, DeserializationConfig config,
			DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property,
			KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer,
			JsonDeserializer elementDeserializer) throws JsonMappingException {
		if (type.getRawClass() == Map.class) {
			return new JSMapDeserializer(type, keyDeserializer, provider.findValueDeserializer(config,
					type.getContentType(), property), elementTypeDeserializer);
		}
		return super.findMapDeserializer(type, config, provider, beanDesc, property, keyDeserializer,
				elementTypeDeserializer, elementDeserializer);
	}

	@Override
	public JsonDeserializer findMapLikeDeserializer(MapLikeType type, DeserializationConfig config,
			DeserializerProvider provider, BeanDescription beanDesc, BeanProperty property,
			KeyDeserializer keyDeserializer, TypeDeserializer elementTypeDeserializer,
			JsonDeserializer elementDeserializer) throws JsonMappingException {
		if (type.getRawClass() == Map.class) {
			return new JSMapDeserializer(type, keyDeserializer, provider.findValueDeserializer(config,
					type.getContentType(), property), elementTypeDeserializer);
		}
		return super.findMapLikeDeserializer(type, config, provider, beanDesc, property, keyDeserializer,
				elementTypeDeserializer, elementDeserializer);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy