You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by zh...@apache.org on 2020/07/01 16:25:32 UTC

[shardingsphere-elasticjob-lite] branch master updated: Adapt spring namespace (#885)

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-lite.git


The following commit(s) were added to refs/heads/master by this push:
     new f2023d4  Adapt spring namespace (#885)
f2023d4 is described below

commit f2023d455ee19f220a41ae7f1cab4735cad87e8b
Author: Liang Zhang <te...@163.com>
AuthorDate: Thu Jul 2 00:25:23 2020 +0800

    Adapt spring namespace (#885)
    
    * Adapt spring namespace
    
    * Refactor test cases
---
 .../job/parser/common/AbstractJobBeanDefinitionParser.java  | 10 ++++++++--
 .../src/main/resources/META-INF/namespace/job.xsd           |  2 +-
 .../lite/spring/job/AbstractJobSpringIntegrateTest.java     | 13 +++----------
 .../lite/spring/job/JobSpringNamespaceWithRefTest.java      |  2 +-
 4 files changed, 13 insertions(+), 14 deletions(-)

diff --git a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
index 9d363ce..70afea6 100644
--- a/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
+++ b/elastic-job-lite-spring/src/main/java/org/apache/shardingsphere/elasticjob/lite/spring/job/parser/common/AbstractJobBeanDefinitionParser.java
@@ -20,6 +20,7 @@ package org.apache.shardingsphere.elasticjob.lite.spring.job.parser.common;
 import com.google.common.base.Strings;
 import lombok.SneakyThrows;
 import org.apache.shardingsphere.elasticjob.lite.api.JobType;
+import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.OneOffJobBootstrap;
 import org.apache.shardingsphere.elasticjob.lite.api.bootstrap.ScheduleJobBootstrap;
 import org.apache.shardingsphere.elasticjob.lite.config.JobConfiguration;
 import org.apache.shardingsphere.elasticjob.lite.tracing.api.TracingConfiguration;
@@ -43,8 +44,13 @@ public abstract class AbstractJobBeanDefinitionParser extends AbstractBeanDefini
     @SneakyThrows
     @Override
     protected final AbstractBeanDefinition parseInternal(final Element element, final ParserContext parserContext) {
-        BeanDefinitionBuilder factory = BeanDefinitionBuilder.rootBeanDefinition(ScheduleJobBootstrap.class);
-        factory.setInitMethodName("schedule");
+        BeanDefinitionBuilder factory;
+        if (Strings.isNullOrEmpty(element.getAttribute(BaseJobBeanDefinitionParserTag.CRON_ATTRIBUTE))) {
+            factory = BeanDefinitionBuilder.rootBeanDefinition(OneOffJobBootstrap.class);
+        } else {
+            factory = BeanDefinitionBuilder.rootBeanDefinition(ScheduleJobBootstrap.class);
+            factory.setInitMethodName("schedule");
+        }
         factory.addConstructorArgReference(element.getAttribute(BaseJobBeanDefinitionParserTag.REGISTRY_CENTER_REF_ATTRIBUTE));
         factory.addConstructorArgReference(element.getAttribute(BaseJobBeanDefinitionParserTag.JOB_REF_ATTRIBUTE));
         factory.addConstructorArgValue(createJobConfiguration(element));
diff --git a/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
index 7395e80..ae269cb 100644
--- a/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
+++ b/elastic-job-lite-spring/src/main/resources/META-INF/namespace/job.xsd
@@ -45,8 +45,8 @@
                 </xsd:all>
                 <xsd:attribute name="job-ref" type="xsd:string" />
                 <xsd:attribute name="registry-center-ref" type="xsd:string" use="required" />
-                <xsd:attribute name="cron" type="xsd:string" use="required" />
                 <xsd:attribute name="sharding-total-count" type="xsd:string" use="required" />
+                <xsd:attribute name="cron" type="xsd:string" />
                 <xsd:attribute name="sharding-item-parameters" type="xsd:string" />
                 <xsd:attribute name="job-parameter" type="xsd:string" />
                 <xsd:attribute name="monitor-execution" type="xsd:string" default="true"/>
diff --git a/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/AbstractJobSpringIntegrateTest.java b/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/AbstractJobSpringIntegrateTest.java
index 18f56bf..22099bc 100644
--- a/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/AbstractJobSpringIntegrateTest.java
+++ b/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/AbstractJobSpringIntegrateTest.java
@@ -23,6 +23,7 @@ import org.apache.shardingsphere.elasticjob.lite.reg.base.CoordinatorRegistryCen
 import org.apache.shardingsphere.elasticjob.lite.spring.fixture.job.DataflowElasticJob;
 import org.apache.shardingsphere.elasticjob.lite.spring.fixture.job.FooSimpleElasticJob;
 import org.apache.shardingsphere.elasticjob.lite.spring.test.AbstractZookeeperJUnit4SpringContextTests;
+import org.apache.shardingsphere.elasticjob.lite.util.concurrent.BlockUtils;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -62,7 +63,7 @@ public abstract class AbstractJobSpringIntegrateTest extends AbstractZookeeperJU
     
     private void assertSimpleElasticJobBean() {
         while (!FooSimpleElasticJob.isCompleted()) {
-            sleep(100L);
+            BlockUtils.waitingShortTime();
         }
         assertTrue(FooSimpleElasticJob.isCompleted());
         assertTrue(regCenter.isExisted("/" + simpleJobName + "/sharding"));
@@ -70,17 +71,9 @@ public abstract class AbstractJobSpringIntegrateTest extends AbstractZookeeperJU
     
     private void assertThroughputDataflowElasticJobBean() {
         while (!DataflowElasticJob.isCompleted()) {
-            sleep(100L);
+            BlockUtils.waitingShortTime();
         }
         assertTrue(DataflowElasticJob.isCompleted());
         assertTrue(regCenter.isExisted("/" + throughputDataflowJobName + "/sharding"));
     }
-    
-    private static void sleep(final long millis) {
-        try {
-            Thread.sleep(millis);
-        } catch (final InterruptedException ex) {
-            Thread.currentThread().interrupt();
-        }
-    }
 }
diff --git a/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/JobSpringNamespaceWithRefTest.java b/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/JobSpringNamespaceWithRefTest.java
index 58aee33..789df28 100644
--- a/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/JobSpringNamespaceWithRefTest.java
+++ b/elastic-job-lite-spring/src/test/java/org/apache/shardingsphere/elasticjob/lite/spring/job/JobSpringNamespaceWithRefTest.java
@@ -57,7 +57,7 @@ public final class JobSpringNamespaceWithRefTest extends AbstractZookeeperJUnit4
 
     private void assertSimpleElasticJobBean() {
         while (!RefFooSimpleElasticJob.isCompleted()) {
-            BlockUtils.sleep(100L);
+            BlockUtils.waitingShortTime();
         }
         assertTrue(RefFooSimpleElasticJob.isCompleted());
         assertTrue(regCenter.isExisted("/" + simpleJobName + "/sharding"));