Author: cziegeler
Date: Tue Aug 19 18:45:27 2014
New Revision: 1618928
URL: http://svn.apache.org/r1618928
Log:
SLING-3856 : NPE in JobManager.getJob if no map is provided
Modified:
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/Utility.java
sling/whiteboard/cziegeler/event/src/test/java/org/apache/sling/event/it/JobHandlingTest.java
Modified:
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java?rev=1618928&r1=1618927&r2=1618928&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
(original)
+++
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java
Tue Aug 19 18:45:27 2014
@@ -796,9 +796,14 @@ public class JobManagerImpl
* @see org.apache.sling.event.jobs.JobManager#getJob(java.lang.String,
java.util.Map)
*/
@Override
+ @SuppressWarnings("unchecked")
public Job getJob(final String topic, final Map<String, Object> template) {
- @SuppressWarnings("unchecked")
- final Iterable<Job> iter = this.findJobs(QueryType.ALL, topic, 1,
template);
+ final Iterable<Job> iter;
+ if ( template == null ) {
+ iter = this.findJobs(QueryType.ALL, topic, 1, (Map<String,
Object>[])null);
+ } else {
+ iter = this.findJobs(QueryType.ALL, topic, 1, template);
+ }
final Iterator<Job> i = iter.iterator();
if ( i.hasNext() ) {
return i.next();
Modified:
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/Utility.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/Utility.java?rev=1618928&r1=1618927&r2=1618928&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/Utility.java
(original)
+++
sling/whiteboard/cziegeler/event/src/main/java/org/apache/sling/event/impl/jobs/Utility.java
Tue Aug 19 18:45:27 2014
@@ -75,12 +75,10 @@ public abstract class Utility {
*/
public static String checkJob(final Object jobTopic, final Map<String,
Object> properties) {
final String msg = checkJobTopic(jobTopic);
- if ( msg == null ) {
- if ( properties != null ) {
- for(final Object val : properties.values()) {
- if ( val != null && !(val instanceof Serializable) ) {
- return "Discarding job - properties must be
serializable: " + jobTopic + " : " + properties;
- }
+ if ( msg == null && properties != null ) {
+ for(final Object val : properties.values()) {
+ if ( val != null && !(val instanceof Serializable) ) {
+ return "Discarding job - properties must be serializable:
" + jobTopic + " : " + properties;
}
}
}
Modified:
sling/whiteboard/cziegeler/event/src/test/java/org/apache/sling/event/it/JobHandlingTest.java
URL:
http://svn.apache.org/viewvc/sling/whiteboard/cziegeler/event/src/test/java/org/apache/sling/event/it/JobHandlingTest.java?rev=1618928&r1=1618927&r2=1618928&view=diff
==============================================================================
---
sling/whiteboard/cziegeler/event/src/test/java/org/apache/sling/event/it/JobHandlingTest.java
(original)
+++
sling/whiteboard/cziegeler/event/src/test/java/org/apache/sling/event/it/JobHandlingTest.java
Tue Aug 19 18:45:27 2014
@@ -209,6 +209,38 @@ public class JobHandlingTest extends Abs
}
/**
+ * Test get a job
+ */
+ @Test(timeout = DEFAULT_TEST_TIMEOUT)
+ public void testGetJob() throws Exception {
+ final Barrier cb = new Barrier(2);
+ final Barrier cb2 = new Barrier(2);
+ final ServiceRegistration jcReg = this.registerJobConsumer(TOPIC,
+ new JobConsumer() {
+
+ @Override
+ public JobResult process(Job job) {
+ cb.block();
+ cb2.block();
+ return JobResult.OK;
+ }
+ });
+ try {
+ final JobManager jobManager = this.getJobManager();
+ final Job j = jobManager.addJob(TOPIC, null);
+ cb.block();
+
+ assertNotNull(jobManager.getJob(TOPIC, null));
+
+ cb2.block(); // and continue job
+
+ jobManager.removeJobById(j.getId());
+ } finally {
+ jcReg.unregister();
+ }
+ }
+
+ /**
* Reschedule test.
* The job is rescheduled two times before it fails.
*/