in src/main/java/org/apache/sling/commons/scheduler/impl/QuartzScheduler.java [196:231]
public void bundleChanged(final BundleEvent event) {
if ( event.getType() == BundleEvent.STOPPED ) {
final Long bundleId = event.getBundle().getBundleId();
synchronized ( this.schedulers ) {
if ( this.active ) {
for(final SchedulerProxy proxy : this.schedulers.values()) {
try {
final List<String> groups = proxy.getScheduler().getJobGroupNames();
for(final String group : groups) {
final Set<JobKey> keys = proxy.getScheduler().getJobKeys(GroupMatcher.jobGroupEquals(group));
for(final JobKey key : keys) {
final JobDetail detail = proxy.getScheduler().getJobDetail(key);
if ( detail != null ) {
final String jobName = (String) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_NAME);
final Object job = detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_OBJECT);
if ( jobName != null && job != null ) {
final Long jobBundleId = (Long) detail.getJobDataMap().get(QuartzScheduler.DATA_MAP_BUNDLE_ID);
if ( jobBundleId != null && jobBundleId.equals(bundleId) ) {
proxy.getScheduler().deleteJob(key);
this.logger.debug("Unscheduling job with name {}", jobName);
}
}
}
}
}
} catch ( final SchedulerException ignore) {
// we ignore this as there is nothing to do
}
}
}
}
}
}