public void bundleChanged()

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
                        }
                    }
                }
            }
        }

    }