This is an automated email from the ASF dual-hosted git repository.

zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere-elasticjob.git


The following commit(s) were added to refs/heads/master by this push:
     new ad75f84  Fix  spring namespace example for job-error-handler (#1617)
ad75f84 is described below

commit ad75f845683df3b65278406d2139ca8281cdc8dd
Author: Yanjie Zhou <[email protected]>
AuthorDate: Tue Oct 20 22:02:06 2020 +0800

    Fix  spring namespace example for job-error-handler (#1617)
    
    * Fix spring example for job-error-handler
    
    * Fix code style
---
 .../job/parser/JobBeanDefinitionParser.java        |  23 ++-
 .../namespace/job/tag/JobBeanDefinitionTag.java    |   2 +
 .../main/resources/META-INF/applicationContext.xml | 189 ++++++++++++---------
 3 files changed, 122 insertions(+), 92 deletions(-)

diff --git 
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
 
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
index b198edb..d1b691a 100644
--- 
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
+++ 
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/parser/JobBeanDefinitionParser.java
@@ -7,7 +7,7 @@
  * the License.  You may obtain a copy of the License at
  *
  *     http://www.apache.org/licenses/LICENSE-2.0
- *  
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -82,14 +82,8 @@ public final class JobBeanDefinitionParser extends 
AbstractBeanDefinitionParser
         } else {
             
result.addConstructorArgValue(Arrays.asList(element.getAttribute(JobBeanDefinitionTag.JOB_LISTENER_TYPES_ATTRIBUTE).split(",")));
         }
-        String tracingRef = 
element.getAttribute(JobBeanDefinitionTag.TRACING_REF_ATTRIBUTE);
-        if (Strings.isNullOrEmpty(tracingRef)) {
-            result.addConstructorArgValue(Collections.emptyList());
-        } else {
-            Collection<BeanDefinition> extraConfigs = new ManagedList<>(1);
-            
extraConfigs.add(parserContext.getRegistry().getBeanDefinition(tracingRef));
-            result.addConstructorArgValue(extraConfigs);
-        }
+        result.addConstructorArgValue(parseExtraConfigs(new 
String[]{JobBeanDefinitionTag.TRACING_REF_ATTRIBUTE, 
JobBeanDefinitionTag.ERROR_HANDLER_CONFIG_REF_ATTRIBUTE},
+                element, parserContext));
         
result.addConstructorArgValue(element.getAttribute(JobBeanDefinitionTag.DESCRIPTION_ATTRIBUTE));
         result.addConstructorArgValue(parsePropsElement(element, 
parserContext));
         
result.addConstructorArgValue(element.getAttribute(JobBeanDefinitionTag.DISABLED_ATTRIBUTE));
@@ -97,6 +91,17 @@ public final class JobBeanDefinitionParser extends 
AbstractBeanDefinitionParser
         return result.getBeanDefinition();
     }
     
+    private Collection<BeanDefinition> parseExtraConfigs(final String[] 
extraConfigRefs, final Element element, final ParserContext parserContext) {
+        Collection<BeanDefinition> result = new 
ManagedList<>(extraConfigRefs.length);
+        for (String each : extraConfigRefs) {
+            String attribute = element.getAttribute(each);
+            if (!Strings.isNullOrEmpty(attribute)) {
+                
result.add(parserContext.getRegistry().getBeanDefinition(attribute));
+            }
+        }
+        return result;
+    }
+    
     private Properties parsePropsElement(final Element element, final 
ParserContext parserContext) {
         Element propsElement = DomUtils.getChildElementByTagName(element, 
JobBeanDefinitionTag.PROPS_TAG);
         return null == propsElement ? new Properties() : 
parserContext.getDelegate().parsePropsElement(propsElement);
diff --git 
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
 
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
index 2bd207d..34f2493 100644
--- 
a/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
+++ 
b/elasticjob-lite/elasticjob-lite-spring/elasticjob-lite-spring-namespace/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/namespace/job/tag/JobBeanDefinitionTag.java
@@ -62,6 +62,8 @@ public final class JobBeanDefinitionTag {
 
     public static final String EXTRA_CONFIGURATION_REF_ATTRIBUTE = 
"extra-configurations-ref";
     
+    public static final String ERROR_HANDLER_CONFIG_REF_ATTRIBUTE = 
"error-handler-config-ref";
+    
     public static final String DESCRIPTION_ATTRIBUTE = "description";
     
     public static final String PROPS_TAG = "props";
diff --git 
a/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
 
b/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
index 970d988..f41ddfa 100644
--- 
a/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
+++ 
b/examples/elasticjob-example-lite-spring/src/main/resources/META-INF/applicationContext.xml
@@ -16,8 +16,8 @@
   ~ limitations under the License.
   -->
 
-<beans xmlns="http://www.springframework.org/schema/beans"; 
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
+<beans xmlns="http://www.springframework.org/schema/beans";
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        xmlns:context="http://www.springframework.org/schema/context";
        xmlns:elasticjob="http://shardingsphere.apache.org/schema/elasticjob";
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
@@ -27,95 +27,118 @@
                         http://shardingsphere.apache.org/schema/elasticjob
                         
http://shardingsphere.apache.org/schema/elasticjob/elasticjob.xsd
                         ">
-    <context:component-scan 
base-package="org.apache.shardingsphere.elasticjob.lite.example" />
-    <context:property-placeholder location="classpath:conf/*.properties" />
-    
-    <elasticjob:zookeeper id="regCenter" server-lists="${serverLists}" 
namespace="${namespace}" 
base-sleep-time-milliseconds="${baseSleepTimeMilliseconds}" 
max-sleep-time-milliseconds="${maxSleepTimeMilliseconds}" 
max-retries="${maxRetries}" />
-    
+    <context:component-scan 
base-package="org.apache.shardingsphere.elasticjob.lite.example"/>
+    <context:property-placeholder location="classpath:conf/*.properties"/>
+
+    <elasticjob:zookeeper id="regCenter" server-lists="${serverLists}" 
namespace="${namespace}"
+                          
base-sleep-time-milliseconds="${baseSleepTimeMilliseconds}"
+                          
max-sleep-time-milliseconds="${maxSleepTimeMilliseconds}" 
max-retries="${maxRetries}"/>
+
     <elasticjob:snapshot id="jobSnapshot" registry-center-ref="regCenter" 
dump-port="9999"/>
-    
+
     <bean id="elasticJobTracingDataSource" 
class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
-        <property name="driverClassName" value="${event.rdb.driver}" />
-        <property name="url" value="${event.rdb.url}" />
-        <property name="username" value="${event.rdb.username}" />
-        <property name="password" value="${event.rdb.password}" />
+        <property name="driverClassName" value="${event.rdb.driver}"/>
+        <property name="url" value="${event.rdb.url}"/>
+        <property name="username" value="${event.rdb.username}"/>
+        <property name="password" value="${event.rdb.password}"/>
     </bean>
-    <elasticjob:rdb-tracing id="elasticJobTrace" 
data-source-ref="elasticJobTracingDataSource" />
-    
-    <bean id="simpleJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob"
 />
-    <bean id="dataflowJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.dataflow.SpringDataflowJob"
 />
-    
-    <elasticjob:job id="${simple.id}" job-ref="simpleJob" 
registry-center-ref="regCenter" tracing-ref="elasticJobTrace" 
-             sharding-total-count="${simple.shardingTotalCount}" 
cron="${simple.cron}" 
sharding-item-parameters="${simple.shardingItemParameters}" 
monitor-execution="${simple.monitorExecution}" failover="${simple.failover}" 
description="${simple.description}" 
-             disabled="${simple.disabled}" overwrite="${simple.overwrite}" />
-    
-    <elasticjob:job id="${dataflow.id}" job-ref="dataflowJob" 
registry-center-ref="regCenter" 
-             sharding-total-count="${dataflow.shardingTotalCount}" 
cron="${dataflow.cron}" 
sharding-item-parameters="${dataflow.shardingItemParameters}" 
monitor-execution="${dataflow.monitorExecution}" 
failover="${dataflow.failover}" 
max-time-diff-seconds="${dataflow.maxTimeDiffSeconds}" 
description="${dataflow.description}" 
-             disabled="${dataflow.disabled}" overwrite="${dataflow.overwrite}">
+
+    <elasticjob:rdb-tracing id="elasticJobTrace" 
data-source-ref="elasticJobTracingDataSource"/>
+
+
+    <bean id="simpleJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.SpringSimpleJob"/>
+    <bean id="dataflowJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.dataflow.SpringDataflowJob"/>
+
+    <elasticjob:job id="${simple.id}" job-ref="simpleJob" 
registry-center-ref="regCenter" tracing-ref="elasticJobTrace"
+                    sharding-total-count="${simple.shardingTotalCount}" 
cron="${simple.cron}"
+                    sharding-item-parameters="${simple.shardingItemParameters}"
+                    monitor-execution="${simple.monitorExecution}" 
failover="${simple.failover}"
+                    description="${simple.description}"
+                    disabled="${simple.disabled}" 
overwrite="${simple.overwrite}"/>
+
+    <elasticjob:job id="${dataflow.id}" job-ref="dataflowJob" 
registry-center-ref="regCenter"
+                    sharding-total-count="${dataflow.shardingTotalCount}" 
cron="${dataflow.cron}"
+                    
sharding-item-parameters="${dataflow.shardingItemParameters}"
+                    monitor-execution="${dataflow.monitorExecution}" 
failover="${dataflow.failover}"
+                    max-time-diff-seconds="${dataflow.maxTimeDiffSeconds}" 
description="${dataflow.description}"
+                    disabled="${dataflow.disabled}" 
overwrite="${dataflow.overwrite}">
         <props>
             <prop key="streaming.process">${dataflow.streamingProcess}</prop>
         </props>
     </elasticjob:job>
-    
+
     <!-- use absolute path to run script job -->
     <!--<elasticjob:job id="${script.id}" registry-center-ref="regCenter" -->
-             <!--sharding-total-count="${script.shardingTotalCount}" 
cron="${script.cron}" 
sharding-item-parameters="${script.shardingItemParameters}" 
description="${script.description}" -->
-             <!--overwrite="${script.overwrite}">-->
-        <!--<props>-->
-            <!--<prop 
key="script.command.line">${script.scriptCommandLine}</prop>-->
-        <!--</props>-->
+    <!--sharding-total-count="${script.shardingTotalCount}" 
cron="${script.cron}" 
sharding-item-parameters="${script.shardingItemParameters}" 
description="${script.description}" -->
+    <!--overwrite="${script.overwrite}">-->
+    <!--<props>-->
+    <!--<prop key="script.command.line">${script.scriptCommandLine}</prop>-->
+    <!--</props>-->
     <!--</elasticjob:job>-->
-    
-    <bean id="occurErrorNoticeDingtalkJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
 />
-    
-    <elasticjob:job id="${occurErrorNoticeDingtalkJob.id}" 
job-ref="occurErrorNoticeDingtalkJob" registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"
-                    
sharding-total-count="${occurErrorNoticeDingtalkJob.shardingTotalCount}" 
cron="${occurErrorNoticeDingtalkJob.cron}" 
sharding-item-parameters="${occurErrorNoticeDingtalkJob.shardingItemParameters}"
 
-                    
monitor-execution="${occurErrorNoticeDingtalkJob.monitorExecution}" 
failover="${occurErrorNoticeDingtalkJob.failover}" 
description="${occurErrorNoticeDingtalkJob.description}"
-                    
job-error-handler-type="${occurErrorNoticeDingtalkJob.jobErrorHandlerType}"
-                    disabled="${occurErrorNoticeDingtalkJob.disabled}" 
overwrite="${occurErrorNoticeDingtalkJob.overwrite}" >
-        <props>
-            <prop 
key="dingtalk.webhook">https://oapi.dingtalk.com/robot/send?access_token=42eead064e81ce81fc6af2c107fbe10a4339a3d40a7db8abf5b34d8261527a3f</prop>
-            <prop key="dingtalk.keyword">keyword</prop>
-            <prop 
key="dingtalk.secret">SEC0b0a6b13b6823b95737dd83491c23adee5d8a7a649899a12217e038eddc84ff4</prop>
-            <prop key="dingtalk.connectTimeoutMillisecond">3000</prop>
-            <prop key="dingtalk.readTimeoutMillisecond">5000</prop>
-        </props>
-    </elasticjob:job>
-    
-    <bean id="occurErrorNoticeWechatJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
 />
-    
-    <elasticjob:job id="${occurErrorNoticeWechatJob.id}" 
job-ref="occurErrorNoticeWechatJob" registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"
-                    
sharding-total-count="${occurErrorNoticeWechatJob.shardingTotalCount}" 
cron="${occurErrorNoticeWechatJob.cron}" 
sharding-item-parameters="${occurErrorNoticeWechatJob.shardingItemParameters}" 
-                    
monitor-execution="${occurErrorNoticeWechatJob.monitorExecution}" 
failover="${occurErrorNoticeWechatJob.failover}" 
description="${occurErrorNoticeWechatJob.description}"
-                    
job-error-handler-type="${occurErrorNoticeWechatJob.jobErrorHandlerType}"
-                    disabled="${occurErrorNoticeWechatJob.disabled}" 
overwrite="${occurErrorNoticeWechatJob.overwrite}" >
-        <props>
-            <prop 
key="wechat.webhook">https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=5308e20a-2900-484b-a332-b5bb701ade04</prop>
-            <prop key="wechat.connectTimeout">3000</prop>
-            <prop key="wechat.readTimeout">5000</prop>
-        </props>
-    </elasticjob:job>
-    
-    <bean id="occurErrorNoticeEmailJob" 
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"
 />
-    
-<!--    <elasticjob:job id="${occurErrorNoticeEmailJob.id}" 
job-ref="occurErrorNoticeEmailJob" registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"-->
-<!--                    
sharding-total-count="${occurErrorNoticeEmailJob.shardingTotalCount}" 
cron="${occurErrorNoticeEmailJob.cron}" 
sharding-item-parameters="${occurErrorNoticeEmailJob.shardingItemParameters}" 
-->
-<!--                    
monitor-execution="${occurErrorNoticeEmailJob.monitorExecution}" 
failover="${occurErrorNoticeEmailJob.failover}" 
description="${occurErrorNoticeEmailJob.description}"-->
-<!--                    
job-error-handler-type="${occurErrorNoticeEmailJob.jobErrorHandlerType}"-->
-<!--                    disabled="${occurErrorNoticeEmailJob.disabled}" 
overwrite="${occurErrorNoticeEmailJob.overwrite}" >-->
-<!--        <props>-->
-<!--            <prop key="email.host">host</prop>-->
-<!--            <prop key="email.port">465</prop>-->
-<!--            <prop key="email.username">username</prop>-->
-<!--            <prop key="email.password">password</prop>-->
-<!--            <prop key="email.protocol">smtp</prop>-->
-<!--            <prop key="email.useSsl">true</prop>-->
-<!--            <prop key="email.subject">ElasticJob error message</prop>-->
-<!--            <prop key="email.form">[email protected]</prop>-->
-<!--            <prop key="email.to">[email protected],[email protected]</prop>-->
-<!--            <prop key="email.cc">[email protected]</prop>-->
-<!--            <prop key="email.bcc">[email protected]</prop>-->
-<!--            <prop key="email.debug">false</prop>-->
-<!--        </props>-->
-<!--    </elasticjob:job>-->
+
+    <!-- use dingtalk error handler -->
+    <!--    <elasticjob:dingtalk-error-handler 
id="dingtalkErrorHandlerConfig"-->
+    <!--                                       
webhook="https://oapi.dingtalk.com/robot/send?access_token=token"-->
+    <!--                                       keyword="keyword" 
secret="secret"-->
+    <!--                                       
connect-timeout-millisecond="3000"-->
+    <!--                                       
read-timeout-millisecond="5000"/>-->
+    <!--    -->
+    <!--    <bean id="occurErrorNoticeDingtalkJob"-->
+    <!--          
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+    <!--    <elasticjob:job id="${occurErrorNoticeDingtalkJob.id}" 
job-ref="occurErrorNoticeDingtalkJob"-->
+    <!--                    registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"-->
+    <!--                    
sharding-total-count="${occurErrorNoticeDingtalkJob.shardingTotalCount}"-->
+    <!--                    cron="${occurErrorNoticeDingtalkJob.cron}"-->
+    <!--                    
sharding-item-parameters="${occurErrorNoticeDingtalkJob.shardingItemParameters}"-->
+    <!--                    
monitor-execution="${occurErrorNoticeDingtalkJob.monitorExecution}"-->
+    <!--                    
failover="${occurErrorNoticeDingtalkJob.failover}"-->
+    <!--                    
description="${occurErrorNoticeDingtalkJob.description}"-->
+    <!--                    
job-error-handler-type="${occurErrorNoticeDingtalkJob.jobErrorHandlerType}"-->
+    <!--                    
error-handler-config-ref="dingtalkErrorHandlerConfig"-->
+    <!--                    
disabled="${occurErrorNoticeDingtalkJob.disabled}"-->
+    <!--                    
overwrite="${occurErrorNoticeDingtalkJob.overwrite}" />-->
+
+    <!-- use wechat error handler -->
+    <!--    <bean id="occurErrorNoticeWechatJob"-->
+    <!--          
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+    <!--    <elasticjob:wechat-error-handler id="wechatErrorHandlerConfig"-->
+    <!--                                     
webhook="https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=key"-->
+    <!--                                     
connect-timeout-millisecond="3000"-->
+    <!--                                     
read-timeout-millisecond="5000"/>-->
+
+    <!--    <elasticjob:job id="${occurErrorNoticeWechatJob.id}" 
job-ref="occurErrorNoticeWechatJob"-->
+    <!--                    registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"-->
+    <!--                    
sharding-total-count="${occurErrorNoticeWechatJob.shardingTotalCount}"-->
+    <!--                    cron="${occurErrorNoticeWechatJob.cron}"-->
+    <!--                    
sharding-item-parameters="${occurErrorNoticeWechatJob.shardingItemParameters}"-->
+    <!--                    
monitor-execution="${occurErrorNoticeWechatJob.monitorExecution}"-->
+    <!--                    failover="${occurErrorNoticeWechatJob.failover}"-->
+    <!--                    
description="${occurErrorNoticeWechatJob.description}"-->
+    <!--                    
job-error-handler-type="${occurErrorNoticeWechatJob.jobErrorHandlerType}"-->
+    <!--                    
error-handler-config-ref="wechatErrorHandlerConfig"-->
+    <!--                    disabled="${occurErrorNoticeWechatJob.disabled}" 
overwrite="${occurErrorNoticeWechatJob.overwrite}" />-->
+
+    <!-- use email error handler -->
+    <!--    <bean id="occurErrorNoticeEmailJob"-->
+    <!--          
class="org.apache.shardingsphere.elasticjob.lite.example.job.simple.JavaOccurErrorJob"/>-->
+
+    <!--    <elasticjob:email-error-handler id="emailErrorHandlerConfig" 
host="host" port="465" username="username"-->
+    <!--                                    password="password" use-ssl="true" 
subject="ElasticJob error message"-->
+    <!--                                    from="[email protected]" 
to="[email protected],[email protected]"-->
+    <!--                                    cc="[email protected]" 
bcc="[email protected]"-->
+    <!--                                    debug="false"/>-->
+
+    <!--    <elasticjob:job id="${occurErrorNoticeEmailJob.id}" 
job-ref="occurErrorNoticeEmailJob"-->
+    <!--                    registry-center-ref="regCenter" 
tracing-ref="elasticJobTrace"-->
+    <!--                    
sharding-total-count="${occurErrorNoticeEmailJob.shardingTotalCount}"-->
+    <!--                    cron="${occurErrorNoticeEmailJob.cron}"-->
+    <!--                    
sharding-item-parameters="${occurErrorNoticeEmailJob.shardingItemParameters}"-->
+    <!--                    
monitor-execution="${occurErrorNoticeEmailJob.monitorExecution}"-->
+    <!--                    failover="${occurErrorNoticeEmailJob.failover}"-->
+    <!--                    
description="${occurErrorNoticeEmailJob.description}"-->
+    <!--                    
job-error-handler-type="${occurErrorNoticeEmailJob.jobErrorHandlerType}"-->
+    <!--                    
error-handler-config-ref="emailErrorHandlerConfig"-->
+    <!--                    disabled="${occurErrorNoticeEmailJob.disabled}" 
overwrite="${occurErrorNoticeEmailJob.overwrite}" />-->
 </beans>

Reply via email to