You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 09:50:41 UTC
[sling-org-apache-sling-jobs] 03/06: SLING-5645 Improved IT tests,
improved config checking and reduced dependency footprint
This is an automated email from the ASF dual-hosted git repository.
rombert pushed a commit to annotated tag org.apache.sling.jobs-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-jobs.git
commit 09609b06c5995ac52a88fc30e626593ce138b516
Author: Ian Boston <ie...@apache.org>
AuthorDate: Tue Oct 4 09:23:13 2016 +0000
SLING-5645 Improved IT tests, improved config checking and reduced dependency footprint
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/commons/mom/jobs/core@1763255 13f79535-47bb-0310-9956-ffa450edef68
---
pom.xml | 5 ---
.../org/apache/sling/jobs/impl/JobSubsystem.java | 39 +++++++++++++++++++---
2 files changed, 35 insertions(+), 9 deletions(-)
diff --git a/pom.xml b/pom.xml
index 08a38ad..43b2911 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,11 +116,6 @@
<!-- Use the version being used in Sling -->
<version>15.0</version>
</dependency>
- <dependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.commons.osgi</artifactId>
- <version>2.4.0</version>
- </dependency>
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
diff --git a/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java b/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
index ef3123b..1be6a00 100644
--- a/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
+++ b/src/main/java/org/apache/sling/jobs/impl/JobSubsystem.java
@@ -28,8 +28,14 @@ import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
-import org.apache.sling.commons.osgi.PropertiesUtil;
-import org.apache.sling.jobs.*;
+import org.apache.sling.jobs.Job;
+import org.apache.sling.jobs.JobBuilder;
+import org.apache.sling.jobs.JobCallback;
+import org.apache.sling.jobs.JobConsumer;
+import org.apache.sling.jobs.JobManager;
+import org.apache.sling.jobs.JobTypeValve;
+import org.apache.sling.jobs.JobUpdateListener;
+import org.apache.sling.jobs.Types;
import org.apache.sling.jobs.impl.spi.JobStorage;
import org.apache.sling.jobs.impl.storage.InMemoryJobStorage;
import org.apache.sling.mom.QueueManager;
@@ -41,7 +47,8 @@ import org.slf4j.LoggerFactory;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.io.Closeable;
-import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
@@ -180,10 +187,34 @@ public class JobSubsystem implements JobManager, JobConsumer {
if ( consumer instanceof JobTypeValve) {
jobTypes = ImmutableSet.of();
} else {
- jobTypes = Types.jobType(PropertiesUtil.toStringArray(properties.get(JobConsumer.JOB_TYPES)));
+ jobTypes = getJobTypes(properties);
}
}
+ public Set<Types.JobType> getJobTypes(Map<Object, Object> properties) {
+ Object types = properties.get(JobConsumer.JOB_TYPES);
+ if (types instanceof String) {
+ return Types.jobType(new String[]{(String) types});
+
+ } else if (types instanceof String[]) {
+ return Types.jobType((String[]) types);
+
+ } else if (types instanceof Iterable) {
+ List<String> l = new ArrayList<String>();
+ for (Object o : (Iterable<?>) types) {
+ l.add(String.valueOf(o));
+ }
+ return Types.jobType((String[]) l.toArray(new String[l.size()]));
+ }
+ throw new IllegalArgumentException("For the JobConsumer to work, the job consumer must either " +
+ "implement a JobTypeValve or define a list of JobTypes, neither were specified. " +
+ "Please check the implementation or OSGi configuration, was expecting " +
+ JobConsumer.JOB_TYPES + " property to be set to a String[]");
+ }
+
+
+
+
@Override
public boolean accept(@Nonnull Types.JobType jobType) {
if ( consumer instanceof JobTypeValve) {
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.