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

com.deepoove.poi.jsonmodel.support.GsonPreRenderDataCastor Maven / Gradle / Ivy

The newest version!
package com.deepoove.poi.jsonmodel.support;

import com.deepoove.poi.config.PreRenderDataCastor;
import com.deepoove.poi.policy.AbstractRenderPolicy;
import com.deepoove.poi.policy.RenderPolicy;
import com.deepoove.poi.policy.reference.AbstractTemplateRenderPolicy;
import com.google.gson.internal.LinkedTreeMap;

import net.jodah.typetools.TypeResolver;

public class GsonPreRenderDataCastor implements PreRenderDataCastor {

    private GsonHandler gsonHandler = new DefaultGsonHandler();

    @SuppressWarnings("rawtypes")
    @Override
    public Object preCast(RenderPolicy policy, Object data) {
        if (null != data && data instanceof LinkedTreeMap) {
            if (policy instanceof AbstractRenderPolicy) {
                Class[] typeArguments = TypeResolver.resolveRawArguments(AbstractRenderPolicy.class,
                        policy.getClass());
                return gsonHandler.castJsonToClass((LinkedTreeMap) data, typeArguments[0]);
            } else if (policy instanceof AbstractTemplateRenderPolicy) {
                Class[] typeArguments = TypeResolver.resolveRawArguments(AbstractTemplateRenderPolicy.class,
                        policy.getClass());
                return gsonHandler.castJsonToClass((LinkedTreeMap) data, typeArguments[1]);
            }
        }
        return data;
    }

    public GsonHandler getGsonHandler() {
        return gsonHandler;
    }

    public void setGsonHandler(GsonHandler gsonHandler) {
        this.gsonHandler = gsonHandler;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy