Java 类com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer 实例源码

项目:QuizUpWinner    文件:BasicDeserializerFactory.java   
public JsonDeserializer<?> findDefaultDeserializer(DeserializationContext paramDeserializationContext, JavaType paramJavaType, BeanDescription paramBeanDescription)
{
  Class localClass = paramJavaType.getRawClass();
  String str = localClass.getName();
  if ((localClass.isPrimitive()) || (str.startsWith("java.")))
  {
    if (localClass == CLASS_OBJECT)
      return UntypedObjectDeserializer.instance;
    if ((localClass == CLASS_STRING) || (localClass == CLASS_CHAR_BUFFER))
      return StringDeserializer.instance;
    if (localClass == CLASS_ITERABLE)
    {
      TypeFactory localTypeFactory = paramDeserializationContext.getTypeFactory();
      JavaType localJavaType;
      if (paramJavaType.containedTypeCount() > 0)
        localJavaType = paramJavaType.containedType(0);
      else
        localJavaType = TypeFactory.unknownType();
      return createCollectionDeserializer(paramDeserializationContext, localTypeFactory.constructCollectionType(Collection.class, localJavaType), paramBeanDescription);
    }
    JsonDeserializer localJsonDeserializer1 = NumberDeserializers.find(localClass, str);
    Object localObject = localJsonDeserializer1;
    if (localJsonDeserializer1 == null)
    {
      JsonDeserializer localJsonDeserializer2 = DateDeserializers.find(localClass, str);
      localObject = localJsonDeserializer2;
      if (localJsonDeserializer2 == null)
        localObject = JdkDeserializers.find(localClass, str);
    }
    return localObject;
  }
  if (str.startsWith("com.fasterxml."))
    return JacksonDeserializers.find(localClass);
  return null;
}
项目:imagej-server    文件:DefaultJsonService.java   
/**
 * Constructs and initializes a JsonService with an {@link ObjectService}.
 * 
 * @param objectService
 */
public DefaultJsonService(final ObjectService objectService) {

    idToObjDeserializer = new UntypedObjectDeserializer(null, null) {

        @Override
        public Object deserialize(JsonParser p, DeserializationContext ctxt)
            throws IOException, JsonProcessingException
        {
            final Object obj = super.deserialize(p, ctxt);
            if (!(obj instanceof String && ((String) obj).startsWith("object:")))
                return obj;
            final String id = (String) obj;
            if (!objectService.contains(id)) {
                throw new JsonMappingException(p, "Object does not exist");
            }
            final ObjectInfo info = objectService.find(id);
            info.updateLastUsed();
            return info.getObject();
        }
    };

    final JsonSerializer<Object> objToIdSerializer =
        new JsonSerializer<Object>()
    {

            @Override
            public void serialize(Object value, JsonGenerator gen,
                SerializerProvider serializers) throws IOException,
                JsonProcessingException
        {
                gen.writeString(objectService.register(value, "DefaultJsonService"));
            }

        };

    final SimpleModule objToIdModule = new SimpleModule();
    objToIdModule.setSerializerModifier(new BeanSerializerModifier() {

        @Override
        public JsonSerializer<?> modifySerializer(SerializationConfig config,
            BeanDescription beanDesc, JsonSerializer<?> serializer)
        {
            if (Mixins.support(beanDesc.getBeanClass())) return serializer;
            // If the serialized class is unknown (i.e. serialized using the general
            // BeanSerializer) or should not be serialized (i.e. complicated class
            // implemented interfaces such as Iterable), would be serialized as an
            // ID.
            if (serializer instanceof BeanSerializer) return objToIdSerializer;
            if (notSerialized(beanDesc.getBeanClass())) return objToIdSerializer;
            return serializer;

        }
    });
    objToIdMapper = new ObjectMapper();
    objToIdMapper.registerModule(objToIdModule);

    // register Jackson MixIns to obtain better json output format for some
    // specific types
    Mixins.registerMixIns(objToIdMapper);
}