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

fun.fengwk.convention4j.springboot.starter.cache.mapper.provider.MapperObjectClassProvider Maven / Gradle / Ivy

The newest version!
package fun.fengwk.convention4j.springboot.starter.cache.mapper.provider;

import fun.fengwk.convention4j.common.cache.exception.CacheInitializationException;
import fun.fengwk.convention4j.springboot.starter.cache.annotation.provider.ObjectClassProvider;
import fun.fengwk.convention4j.springboot.starter.cache.mapper.CacheableMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.ResolvableType;

import java.lang.reflect.AnnotatedElement;

/**
 * @author fengwk
 */
@Slf4j
public class MapperObjectClassProvider implements ObjectClassProvider {

    @Override
    public Class getObjectClass(AnnotatedElement element) {
        if (!(element instanceof Class) || !CacheableMapper.class.isAssignableFrom((Class) element)) {
            log.error("CacheMapperIndexClassProvider only support CacheableMapper implement class, element: {}",element);
            throw new CacheInitializationException(
                "CacheMapperIndexClassProvider only support CacheableMapper implement class.");
        }
        ResolvableType rt = ResolvableType.forClass((Class) element);
        return rt.as(CacheableMapper.class).getGeneric(0).resolve();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy