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

com.github.anonymousmister.bootfastconfig.expand.AnnotationJson Maven / Gradle / Ivy

package com.github.anonymousmister.bootfastconfig.expand;


import com.fasterxml.jackson.databind.BeanDescription;
import com.fasterxml.jackson.databind.DeserializationConfig;
import com.fasterxml.jackson.databind.SerializationConfig;
import com.fasterxml.jackson.databind.deser.BeanDeserializerBuilder;
import com.fasterxml.jackson.databind.deser.SettableBeanProperty;
import com.fasterxml.jackson.databind.ser.BeanPropertyWriter;

import java.lang.annotation.Annotation;
import java.util.List;


/**
 * @author admin
 * 通用的json 注解序列化处理器
 */
public interface AnnotationJson {

    /**
     * 返回Annotation 类型
     *
     * @return
     */
    Class getAnnotationClass();

    /**
     * 处理方法
     *
     * @param object     对象
     * @param name       字段名称
     * @param value      字段值
     * @param annotation 命中的annotation
     * @return
     */
    default Object serialization(Object object, String name, Object value, T annotation) {


        return value;
    }


    /**
     * Jackson 在反序列化会用到
     *
     * @param config
     * @param beanDesc
     * @param builder
     * @param settableBeanProperty
     * @param annotation
     */
    default void updateBuilder(final DeserializationConfig config,
                               final BeanDescription beanDesc,
                               final BeanDeserializerBuilder builder,
                               final SettableBeanProperty settableBeanProperty, T annotation) {

    }

    /**
     * Jackson 在序列化时用到
     *
     * @param config
     * @param beanDesc
     * @param beanProperties
     * @param writer
     * @param annotation
     * @return
     */
    default void changeProperties(final SerializationConfig config,
                                  final BeanDescription beanDesc,
                                  final List beanProperties,
                                  final BeanPropertyWriter writer, T annotation) {

    }

    ;
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy