You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2008/10/27 10:59:31 UTC
svn commit: r708122 -
/incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
Author: cziegeler
Date: Mon Oct 27 02:59:30 2008
New Revision: 708122
URL: http://svn.apache.org/viewvc?rev=708122&view=rev
Log:
SLING-710 : Append service id to unique job identifier to correctly handle bind/unbind.
Modified:
incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
Modified: incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java
URL: http://svn.apache.org/viewvc/incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java?rev=708122&r1=708121&r2=708122&view=diff
==============================================================================
--- incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java (original)
+++ incubator/sling/trunk/commons/scheduler/src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java Mon Oct 27 02:59:30 2008
@@ -312,45 +312,53 @@
public void removeJob(String name) throws NoSuchElementException {
try {
this.scheduler.deleteJob(name, DEFAULT_QUARTZ_JOB_GROUP);
+ this.logger.debug("Unscheduling job with name {}", name);
} catch (final SchedulerException se) {
throw new NoSuchElementException(se.getMessage());
}
}
- protected void register(String type, ServiceReference ref)
+ /**
+ * Create unique identifier
+ * @param type
+ * @param ref
+ * @throws Exception
+ */
+ private String getServiceIdentifier(final ServiceReference ref) {
+ String name = (String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
+ if ( name == null ) {
+ name = (String)ref.getProperty(Constants.SERVICE_PID);
+ if ( name == null ) {
+ name = "Registered Service";
+ }
+ }
+ // now append service id to create a unique identifer
+ name = name + "." + ref.getProperty(Constants.SERVICE_ID);
+ return name;
+ }
+
+ private void register(String type, ServiceReference ref)
throws Exception {
final Object job = this.context.locateService(type, ref);
if ( ref != null ) {
this.checkJob(job);
- String name = (String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
- if ( name == null ) {
- name = (String)ref.getProperty(Constants.SERVICE_PID);
- }
- if ( name != null ) {
- final Boolean concurrent = (Boolean)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT);
- final String expression = (String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_EXPRESSION);
- if ( expression != null ) {
- this.addJob(name, job, null, expression, (concurrent != null ? concurrent : true));
- } else {
- final Long period = (Long)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD);
- if ( period != null ) {
- this.addPeriodicJob(name, job, null, period, (concurrent != null ? concurrent : true));
- }
- }
+ final String name = getServiceIdentifier(ref);
+ final Boolean concurrent = (Boolean)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_CONCURRENT);
+ final String expression = (String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_EXPRESSION);
+ if ( expression != null ) {
+ this.addJob(name, job, null, expression, (concurrent != null ? concurrent : true));
} else {
- throw new Exception("Job service must either have a PID or a configured property 'scheduler.name'.");
+ final Long period = (Long)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_PERIOD);
+ if ( period != null ) {
+ this.addPeriodicJob(name, job, null, period, (concurrent != null ? concurrent : true));
+ }
}
}
}
- protected void unregister(ServiceReference ref) {
- String name = (String)ref.getProperty(Scheduler.PROPERTY_SCHEDULER_NAME);
- if ( name == null ) {
- name = (String)ref.getProperty(Constants.SERVICE_PID);
- }
- if ( name != null ) {
- this.removeJob(name);
- }
+ private void unregister(ServiceReference ref) {
+ final String name = getServiceIdentifier(ref);
+ this.removeJob(name);
}
/**