org.apache.sling.event.impl.jobs
Class DefaultJobManager

java.lang.Object
  extended by org.apache.sling.event.impl.jobs.StatisticsImpl
      extended by org.apache.sling.event.impl.jobs.DefaultJobManager
All Implemented Interfaces:
Runnable, JobManager, Statistics, org.osgi.service.event.EventHandler

@Services(value={@Service(value=java.lang.Runnable.class),@Service(value=JobManager.class),@Service(value=org.osgi.service.event.EventHandler.class)})
@Properties(value={@Property(name="scheduler.period",longValue=60L,propertyPrivate=true),@Property(name="scheduler.concurrent",boolValue=false,propertyPrivate=true),@Property(name="queue.priority",value="NORM",options={@PropertyOption(name="NORM",value="Norm"),@PropertyOption(name="MIN",value="Min"),@PropertyOption(name="MAX",value="Max")}),@Property(name="queue.retries",intValue=10),@Property(name="queue.retrydelay",longValue=2000L),@Property(name="queue.maxparallel",intValue=15),@Property(name="event.topics",propertyPrivate=true,value="org/apache/sling/event/notification/job/*")})
public class DefaultJobManager
extends StatisticsImpl
implements Runnable, JobManager, org.osgi.service.event.EventHandler

An event handler for special job events. We schedule this event handler to run in the background and clean up obsolete queues.


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.sling.event.jobs.JobManager
JobManager.QueryType
 
Constructor Summary
DefaultJobManager()
           
 
Method Summary
protected  void activate(Map<String,Object> props)
          Activate this component.
protected  void deactivate()
          Dectivate this component.
 org.osgi.service.event.Event findJob(String topic, Map<String,Object> template)
          Find a job - either scheduled or active.
 void forceRemoveJob(String jobId)
          Cancel this job.
 InternalQueueConfiguration getMainQueueConfiguration()
           
 Queue getQueue(String name)
          Return a queue with a specific name (if running)
 Iterable<Queue> getQueues()
          Return an iterator for all available queues.
 Statistics getStatistics()
          Return our internal statistics object.
 Iterable<TopicStatistics> getTopicStatistics()
          Return statistics information about job topics.
 void handleEvent(org.osgi.service.event.Event event)
           
 boolean isJobProcessingEnabled()
          Is job processing enabled? It is possible to completly turn off job processing.
 void notifyActiveJob(String key)
          Job started
 void notifyAddJob(JobEvent job)
          Add a job to all jobs.
 void notifyRemoveJob(String key)
          Remove a job from all jobs.
 void process(JobEvent event)
          Process a new job event.
 JobsIterator queryJobs(JobManager.QueryType type, String topic, Map<String,Object>... filterProps)
          Return all jobs either running or scheduled.
 boolean removeJob(String jobId)
          Cancel this job.
 void reset()
          Clear all collected statistics and set the starting time to the current time.
 void restart()
          Restart the job manager.
 void run()
          This method is invoked periodically by the scheduler.
protected  void update(Map<String,Object> props)
          Configure this component.
 
Methods inherited from class org.apache.sling.event.impl.jobs.StatisticsImpl
add, addActive, cancelledJob, clearQueued, copyFrom, decQueued, failedJob, finishedJob, getAverageProcessingTime, getAverageWaitingTime, getLastActivatedJobTime, getLastFinishedJobTime, getNumberOfActiveJobs, getNumberOfCancelledJobs, getNumberOfFailedJobs, getNumberOfFinishedJobs, getNumberOfJobs, getNumberOfProcessedJobs, getNumberOfQueuedJobs, getStartTime, incQueued
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DefaultJobManager

public DefaultJobManager()
Method Detail

activate

@Activate
protected void activate(Map<String,Object> props)
Activate this component.

Parameters:
props - Configuration properties

update

@Modified
protected void update(Map<String,Object> props)
Configure this component.

Parameters:
props - Configuration properties

deactivate

@Deactivate
protected void deactivate()
Dectivate this component.


process

public void process(JobEvent event)
Process a new job event. This method first searches the corresponding queue - if such a queue does not exist yet, it is created and started.

Parameters:
event - The job event

run

public void run()
This method is invoked periodically by the scheduler.

Specified by:
run in interface Runnable
See Also:
Runnable.run()

getStatistics

public Statistics getStatistics()
Return our internal statistics object. We recalculate this every 1.5sec (if requested)

Specified by:
getStatistics in interface JobManager
See Also:
JobManager.getStatistics()

getQueue

public Queue getQueue(String name)
Description copied from interface: JobManager
Return a queue with a specific name (if running)

Specified by:
getQueue in interface JobManager
Parameters:
name - The queue name
Returns:
The queue or null
See Also:
JobManager.getQueue(java.lang.String)

getQueues

public Iterable<Queue> getQueues()
Description copied from interface: JobManager
Return an iterator for all available queues.

Specified by:
getQueues in interface JobManager
See Also:
JobManager.getQueues()

getMainQueueConfiguration

public InternalQueueConfiguration getMainQueueConfiguration()

notifyAddJob

public void notifyAddJob(JobEvent job)
Add a job to all jobs.


notifyRemoveJob

public void notifyRemoveJob(String key)
Remove a job from all jobs.


notifyActiveJob

public void notifyActiveJob(String key)
Job started


queryJobs

public JobsIterator queryJobs(JobManager.QueryType type,
                              String topic,
                              Map<String,Object>... filterProps)
Description copied from interface: JobManager
Return all jobs either running or scheduled.

Specified by:
queryJobs in interface JobManager
Parameters:
type - Required parameter for the type: either all jobs, only queued or only started can be returned.
topic - Topic can be used as a filter, if it is non-null, only jobs with this topic will be returned.
filterProps - A list of filter property maps. Each map acts like a template. The searched job must match the template (AND query). By providing several maps, different filters are possible (OR query).
Returns:
A non null collection.
See Also:
JobManager.queryJobs(QueryType, java.lang.String, java.util.Map...)

findJob

public org.osgi.service.event.Event findJob(String topic,
                                            Map<String,Object> template)
Description copied from interface: JobManager
Find a job - either scheduled or active. This method searches for an event with the given topic and filter properties. If more than one job matches, the first one found is returned which could be any of the matching jobs.

Specified by:
findJob in interface JobManager
Parameters:
topic - Topic is required.
template - The map acts like a template. The searched job must match the template (AND query).
Returns:
An event or null
See Also:
JobManager.findJob(java.lang.String, java.util.Map)

removeJob

public boolean removeJob(String jobId)
Description copied from interface: JobManager
Cancel this job. Cancelling a job might fail if the job is currently in processing.

Specified by:
removeJob in interface JobManager
Parameters:
jobId - The unique identifer as found in the property JobUtil.JOB_ID.
Returns:
true if the job could be cancelled or does not exist anymore. false otherwise.
See Also:
JobManager.removeJob(java.lang.String)

forceRemoveJob

public void forceRemoveJob(String jobId)
Description copied from interface: JobManager
Cancel this job. This method acts like JobManager.removeJob(String) with the exception that it waits for a job to finish. The job will be removed when this method returns - however this method blocks until the job is finished!

Specified by:
forceRemoveJob in interface JobManager
Parameters:
jobId - The unique identifer as found in the property JobUtil.JOB_ID.
See Also:
JobManager.forceRemoveJob(java.lang.String)

reset

public void reset()
Description copied from interface: Statistics
Clear all collected statistics and set the starting time to the current time. Note that not all fields are cleared, last waiting time or number of active and queued jobs is not cleared as these are currently used.

Specified by:
reset in interface Statistics
Overrides:
reset in class StatisticsImpl
See Also:
Reset this statistics and all queues.

getTopicStatistics

public Iterable<TopicStatistics> getTopicStatistics()
Description copied from interface: JobManager
Return statistics information about job topics.

Specified by:
getTopicStatistics in interface JobManager
See Also:
JobManager.getTopicStatistics()

handleEvent

public void handleEvent(org.osgi.service.event.Event event)
Specified by:
handleEvent in interface org.osgi.service.event.EventHandler
See Also:
EventHandler.handleEvent(org.osgi.service.event.Event)

restart

public void restart()
Description copied from interface: JobManager
Restart the job manager. This method restarts the job manager and all queues - currently processed jobs will be finished. The job manager should only be restarted if really necessary!

Specified by:
restart in interface JobManager
See Also:
JobManager.restart()

isJobProcessingEnabled

public boolean isJobProcessingEnabled()
Description copied from interface: JobManager
Is job processing enabled? It is possible to completly turn off job processing.

Specified by:
isJobProcessingEnabled in interface JobManager
See Also:
JobManager.isJobProcessingEnabled()


Copyright © 2007-2013 The Apache Software Foundation. All Rights Reserved.