package tech.powerjob.worker.processor.impl; import com.google.common.collect.Sets; import lombok.extern.slf4j.Slf4j; import tech.powerjob.common.enums.ProcessorType; import tech.powerjob.worker.core.processor.sdk.BasicProcessor; import tech.powerjob.worker.extension.processor.ProcessorBean; import tech.powerjob.worker.extension.processor.ProcessorDefinition; import tech.powerjob.worker.extension.processor.ProcessorFactory; import java.util.Set; /** * 内建的默认处理器工厂,通过全限定类名加载处理器,但无法享受 IOC 框架的 DI 功能 * * @author tjq * @since 2023/1/17 */ @Slf4j public class BuiltInDefaultProcessorFactory implements ProcessorFactory { @Override public Set supportTypes() { return Sets.newHashSet(ProcessorType.BUILT_IN.name()); } @Override public ProcessorBean build(ProcessorDefinition processorDefinition) { String className = processorDefinition.getProcessorInfo(); try { Class clz = Class.forName(className); BasicProcessor basicProcessor = (BasicProcessor) clz.getDeclaredConstructor().newInstance(); return new ProcessorBean() .setProcessor(basicProcessor) .setClassLoader(basicProcessor.getClass().getClassLoader()); }catch (Exception e) { log.warn("[ProcessorFactory] load local Processor(className = {}) failed.", className, e); } return null; } }