From 39f9dc5570217f2d7eca23e535d5e118a65f7f88 Mon Sep 17 00:00:00 2001 From: noear Date: Thu, 27 May 2021 09:38:54 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20solon=20=E7=9A=84=E9=9B=86?= =?UTF-8?q?=E6=88=90=E9=80=82=E9=85=8D=E5=8F=8A=E7=A4=BA=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../xxl/job/solon/ExtractorOfCloudJob.java | 35 ------------------- .../java/com/xxl/job/solon/XPluginImp.java | 25 +++++-------- ...onfigXxlJob.java => XxlJobAutoConfig.java} | 4 +-- ...XxlJobMethod.java => XxlJobExtractor.java} | 2 +- .../solon/service/CloudJobServiceImpl.java | 7 +++- 6 files changed, 19 insertions(+), 56 deletions(-) delete mode 100644 xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfCloudJob.java rename xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/{AutoConfigXxlJob.java => XxlJobAutoConfig.java} (97%) rename xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/{ExtractorOfXxlJobMethod.java => XxlJobExtractor.java} (96%) diff --git a/pom.xml b/pom.xml index 071986b0..6a7d0b43 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 5.3.3 2.4.2 - 1.4.4 + 1.4.5 2.1.4 8.0.23 diff --git a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfCloudJob.java b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfCloudJob.java deleted file mode 100644 index 7b131fa1..00000000 --- a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfCloudJob.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.xxl.job.solon; - -import com.xxl.job.core.executor.XxlJobExecutor; -import org.noear.solon.cloud.annotation.CloudJob; -import com.xxl.job.solon.service.CloudJobServiceImpl; -import org.noear.solon.core.BeanExtractor; -import org.noear.solon.core.BeanWrap; -import org.noear.solon.core.handle.Action; - -import java.lang.reflect.Method; - -/** - * @author noear - * @since 1.4 - */ -class ExtractorOfCloudJob implements BeanExtractor { - @Override - public void doExtract(BeanWrap bw, Method method, CloudJob anno) { - String name = anno.value(); - - if (name.trim().length() == 0) { - throw new RuntimeException("xxl-job method-jobhandler name invalid, for[" + bw.clz() + "#" + method.getName() + "] ."); - } - if (XxlJobExecutor.loadJobHandler(name) != null) { - throw new RuntimeException("xxl-job jobhandler[" + name + "] naming conflicts."); - } - - method.setAccessible(true); - - Action action = new Action(bw, method); - - // registry jobhandler - CloudJobServiceImpl.instance.register(name, action); - } -} diff --git a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XPluginImp.java b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XPluginImp.java index 5c0420ca..dfeddb0e 100644 --- a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XPluginImp.java +++ b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XPluginImp.java @@ -1,15 +1,15 @@ package com.xxl.job.solon; import com.xxl.job.core.executor.XxlJobExecutor; -import com.xxl.job.core.handler.IJobHandler; import com.xxl.job.core.handler.annotation.XxlJob; import org.noear.solon.SolonApp; import org.noear.solon.cloud.CloudManager; import org.noear.solon.cloud.annotation.CloudJob; import com.xxl.job.solon.service.CloudJobServiceImpl; +import org.noear.solon.cloud.impl.CloudJobBuilder; +import org.noear.solon.cloud.impl.CloudJobExtractor; import org.noear.solon.core.Aop; import org.noear.solon.core.Plugin; -import org.noear.solon.core.handle.Handler; /** * @author noear @@ -22,19 +22,15 @@ public class XPluginImp implements Plugin { return; } - //add extractor for bean method - Aop.context().beanExtractorAdd(XxlJob.class, new ExtractorOfXxlJobMethod()); - Aop.context().beanExtractorAdd(CloudJob.class, new ExtractorOfCloudJob()); + //register Job Service + CloudManager.register(CloudJobServiceImpl.instance); - Aop.context().beanBuilderAdd(CloudJob.class, (clz, bw, anno) -> { - if (Handler.class.isAssignableFrom(clz)) { - CloudJobServiceImpl.instance.register(anno.value(), bw.raw()); - } else if (IJobHandler.class.isAssignableFrom(clz)) { - XxlJobExecutor.registJobHandler(anno.value(), bw.raw()); - } - }); + //add extractor for bean method + Aop.context().beanExtractorAdd(XxlJob.class, new XxlJobExtractor()); + Aop.context().beanExtractorAdd(CloudJob.class, new CloudJobExtractor()); + Aop.context().beanBuilderAdd(CloudJob.class,new CloudJobBuilder()); - Aop.context().beanMake(AutoConfigXxlJob.class); + Aop.context().beanMake(XxlJobAutoConfig.class); Aop.beanOnloaded(() -> { try { @@ -44,8 +40,5 @@ public class XPluginImp implements Plugin { throw new RuntimeException(e); } }); - - //登记Job服务 - CloudManager.register(CloudJobServiceImpl.instance); } } diff --git a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/AutoConfigXxlJob.java b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobAutoConfig.java similarity index 97% rename from xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/AutoConfigXxlJob.java rename to xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobAutoConfig.java index e862165d..d5ed4e95 100644 --- a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/AutoConfigXxlJob.java +++ b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobAutoConfig.java @@ -17,8 +17,8 @@ import org.slf4j.LoggerFactory; * @since 1.4 */ @Configuration -public class AutoConfigXxlJob { - private static final Logger logger = LoggerFactory.getLogger(AutoConfigXxlJob.class); +public class XxlJobAutoConfig { + private static final Logger logger = LoggerFactory.getLogger(XxlJobAutoConfig.class); @Inject("${xxl.job.admin.addresses}") private String adminAddresses; diff --git a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfXxlJobMethod.java b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobExtractor.java similarity index 96% rename from xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfXxlJobMethod.java rename to xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobExtractor.java index 5213514d..daa8ac0d 100644 --- a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/ExtractorOfXxlJobMethod.java +++ b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/XxlJobExtractor.java @@ -12,7 +12,7 @@ import java.lang.reflect.Method; * @author noear * @since 1.4 */ -class ExtractorOfXxlJobMethod implements BeanExtractor { +class XxlJobExtractor implements BeanExtractor { @Override public void doExtract(BeanWrap bw, Method method, XxlJob anno) { String name = anno.value(); diff --git a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/service/CloudJobServiceImpl.java b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/service/CloudJobServiceImpl.java index 9ae98e8f..b8fe33ce 100644 --- a/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/service/CloudJobServiceImpl.java +++ b/xxl-job-solon-plugin/src/main/java/com/xxl/job/solon/service/CloudJobServiceImpl.java @@ -12,8 +12,13 @@ public class CloudJobServiceImpl implements CloudJobService { public static final CloudJobService instance = new CloudJobServiceImpl(); @Override - public boolean register(String name, Handler handler) { + public boolean register(String name, String description, Handler handler) { XxlJobExecutor.registJobHandler(name, new CloudJobHanderProxy(handler)); return true; } + + @Override + public boolean isRegistered(String name) { + return XxlJobExecutor.loadJobHandler(name) != null; + } }