This is an automated email from the ASF dual-hosted git repository. joerghoh pushed a commit to branch SLING-13042 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-event.git
commit 7f2653ffd23b8b3aa2fa5d5c1fcabac9b4f67b74 Author: Joerg Hoh <[email protected]> AuthorDate: Tue Dec 23 19:57:35 2025 +0100 SLING-13042 refactoring: use try-with-resource for the ResourceResolver --- .../sling/event/impl/jobs/JobManagerImpl.java | 21 ++--- .../sling/event/impl/jobs/queues/JobQueueImpl.java | 5 +- .../event/impl/jobs/queues/QueueJobCache.java | 5 +- .../sling/event/impl/jobs/queues/QueueManager.java | 5 +- .../impl/jobs/scheduling/JobSchedulerImpl.java | 5 +- .../impl/jobs/scheduling/ScheduledJobHandler.java | 98 ++++++++-------------- .../sling/event/impl/jobs/tasks/CleanUpTask.java | 26 +----- .../event/impl/jobs/tasks/HistoryCleanUpTask.java | 5 +- 8 files changed, 51 insertions(+), 119 deletions(-) diff --git a/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java b/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java index 137a18e..df0247c 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/JobManagerImpl.java @@ -264,8 +264,7 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { final boolean isHistoryJob = this.configuration.isStoragePath(job.getResourcePath()); // if history job, simply remove - otherwise move to history! if (isHistoryJob) { - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Resource jobResource = resolver.getResource(job.getResourcePath()); if (jobResource != null) { resolver.delete(jobResource); @@ -279,8 +278,6 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { } catch (final PersistenceException pe) { logger.warn("Unable to remove job at " + job.getResourcePath(), pe); result = false; - } finally { - resolver.close(); } } else { final JobHandler jh = new JobHandler(job, null, this.configuration); @@ -308,9 +305,8 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { @Override public Job getJobById(final String id) { logger.debug("Getting job by id: {}", id); - final ResourceResolver resolver = this.configuration.createResourceResolver(); final StringBuilder buf = new StringBuilder(64); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { buf.append("/jcr:root"); buf.append(this.configuration.getJobsBasePathWithSlash()); @@ -341,8 +337,6 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { } } catch (final QuerySyntaxException qse) { logger.warn("Query syntax wrong " + buf.toString(), qse); - } finally { - resolver.close(); } logger.debug("Job not found with id: {}", id); return null; @@ -397,9 +391,8 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { || type == QueryType.GIVEN_UP || type == QueryType.STOPPED; final List<Job> result = new ArrayList<>(); - final ResourceResolver resolver = this.configuration.createResourceResolver(); final StringBuilder buf = new StringBuilder(64); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { buf.append(buildBaseQuery(this.configuration.getJobsBasePathWithSlash(), topic, type, isHistoryQuery)); if (templates != null && templates.length > 0) { @@ -512,8 +505,6 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { } } catch (final QuerySyntaxException qse) { logger.warn("Query syntax wrong " + buf.toString(), qse); - } finally { - resolver.close(); } return result; } @@ -606,8 +597,8 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { info.queueName, info.targetId); } - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final JobImpl job = this.writeJob(resolver, jobTopic, jobProperties, info); if (info.targetId != null) { this.configuration.getAuditLogger().debug("ASSIGN OK {} : {}", info.targetId, job.getId()); @@ -619,8 +610,6 @@ public class JobManagerImpl implements JobManager, EventHandler, Runnable { // something went wrong, so let's log it this.logger.error( "Exception during persisting new job '" + Utility.toString(jobTopic, jobProperties) + "'", re); - } finally { - resolver.close(); } if (errors != null) { errors.add("Unable to persist new job."); diff --git a/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java b/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java index 4447da1..d727186 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/queues/JobQueueImpl.java @@ -676,8 +676,7 @@ public class JobQueueImpl implements Queue { if (!topics.isEmpty()) { - final ResourceResolver resolver = this.services.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.services.configuration.createResourceResolver()) { final Resource baseResource = resolver.getResource(this.services.configuration.getLocalJobsPath()); // sanity check - should never be null @@ -714,8 +713,6 @@ public class JobQueueImpl implements Queue { logger.error("Unable to remove jobs", ignore); } } - } finally { - resolver.close(); } } } diff --git a/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java b/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java index d5a7a58..9d52738 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueJobCache.java @@ -224,8 +224,7 @@ public class QueueJobCache { final Map<String, List<JobImpl>> topicCache = new HashMap<String, List<JobImpl>>(); - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Resource baseResource = resolver.getResource(this.configuration.getLocalJobsPath()); // sanity check - should never be null if (baseResource != null) { @@ -237,8 +236,6 @@ public class QueueJobCache { } } } - } finally { - resolver.close(); } orderTopics(topicCache); diff --git a/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueManager.java b/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueManager.java index 127def4..bed25a1 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueManager.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/queues/QueueManager.java @@ -448,8 +448,7 @@ public class QueueManager implements Runnable, EventHandler, ConfigurationChange private Set<String> scanTopics() { final Set<String> topics = new HashSet<>(); - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Resource baseResource = resolver.getResource(this.configuration.getLocalJobsPath()); // sanity check - should never be null @@ -462,8 +461,6 @@ public class QueueManager implements Runnable, EventHandler, ConfigurationChange topics.add(topic); } } - } finally { - resolver.close(); } return topics; } diff --git a/src/main/java/org/apache/sling/event/impl/jobs/scheduling/JobSchedulerImpl.java b/src/main/java/org/apache/sling/event/impl/jobs/scheduling/JobSchedulerImpl.java index f3b82db..4871bf6 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/scheduling/JobSchedulerImpl.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/scheduling/JobSchedulerImpl.java @@ -475,8 +475,7 @@ public class JobSchedulerImpl * @param flag The corresponding flag */ public void setSuspended(final ScheduledJobInfoImpl info, final boolean flag) { - final ResourceResolver resolver = configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = configuration.createResourceResolver()) { final StringBuilder sb = new StringBuilder(this.configuration.getScheduledJobsPath(true)); sb.append(ResourceHelper.filterName(info.getName())); final String path = sb.toString(); @@ -499,8 +498,6 @@ public class JobSchedulerImpl } catch (final PersistenceException pe) { // we ignore the exception if removing fails ignoreException(pe); - } finally { - resolver.close(); } } diff --git a/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java b/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java index 9e82945..f86ce4f 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/scheduling/ScheduledJobHandler.java @@ -140,36 +140,31 @@ public class ScheduledJobHandler implements Runnable { } private void scan() { - final ResourceResolver resolver = configuration.createResourceResolver(); - if (resolver != null) { - try { - logger.debug("Scanning for scheduled jobs..."); - final String path = this.configuration.getScheduledJobsPath(false); - final Resource startResource = resolver.getResource(path); - if (startResource != null) { - final Map<String, Holder> newScheduledJobs = new HashMap<String, Holder>(); - synchronized (this.scheduledJobs) { - for (final Resource rsrc : startResource.getChildren()) { - if (!isRunning.get()) { - break; - } - handleAddOrUpdate(newScheduledJobs, rsrc); + try (ResourceResolver resolver = configuration.createResourceResolver()) { + logger.debug("Scanning for scheduled jobs..."); + final String path = this.configuration.getScheduledJobsPath(false); + final Resource startResource = resolver.getResource(path); + if (startResource != null) { + final Map<String, Holder> newScheduledJobs = new HashMap<String, Holder>(); + synchronized (this.scheduledJobs) { + for (final Resource rsrc : startResource.getChildren()) { + if (!isRunning.get()) { + break; } - if (isRunning.get()) { - for (final Holder h : this.scheduledJobs.values()) { - if (h.info != null) { - this.jobScheduler.unscheduleJob(h.info); - } + handleAddOrUpdate(newScheduledJobs, rsrc); + } + if (isRunning.get()) { + for (final Holder h : this.scheduledJobs.values()) { + if (h.info != null) { + this.jobScheduler.unscheduleJob(h.info); } - this.scheduledJobs.clear(); - this.scheduledJobs.putAll(newScheduledJobs); } + this.scheduledJobs.clear(); + this.scheduledJobs.putAll(newScheduledJobs); } } - logger.debug("Finished scanning for scheduled jobs..."); - } finally { - resolver.close(); } + logger.debug("Finished scanning for scheduled jobs..."); } } @@ -237,8 +232,7 @@ public class ScheduledJobHandler implements Runnable { final boolean suspend, final List<ScheduleInfoImpl> scheduleInfos) throws PersistenceException { - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { // create properties final Map<String, Object> properties = new HashMap<String, Object>(); @@ -286,8 +280,6 @@ public class ScheduledJobHandler implements Runnable { properties.put(ResourceHelper.PROPERTY_SCHEDULE_INFO, scheduleInfos); return properties; - } finally { - resolver.close(); } } @@ -330,23 +322,18 @@ public class ScheduledJobHandler implements Runnable { } } if (!updateJobs.isEmpty() && isRunning.get()) { - ResourceResolver resolver = configuration.createResourceResolver(); - if (resolver != null) { - try { - for (final Map.Entry<String, Holder> entry : updateJobs.entrySet()) { - final String path = configuration.getScheduledJobsPath(true) + entry.getKey(); - final Resource rsrc = resolver.getResource(path); - if (!isRunning.get()) { - break; - } - if (rsrc != null) { - synchronized (scheduledJobs) { - handleAddOrUpdate(scheduledJobs, rsrc); - } + try (ResourceResolver resolver = configuration.createResourceResolver()) { + for (final Map.Entry<String, Holder> entry : updateJobs.entrySet()) { + final String path = configuration.getScheduledJobsPath(true) + entry.getKey(); + final Resource rsrc = resolver.getResource(path); + if (!isRunning.get()) { + break; + } + if (rsrc != null) { + synchronized (scheduledJobs) { + handleAddOrUpdate(scheduledJobs, rsrc); } } - } finally { - resolver.close(); } } } @@ -386,17 +373,12 @@ public class ScheduledJobHandler implements Runnable { @Override public void run() { if (isRunning.get()) { - final ResourceResolver resolver = configuration.createResourceResolver(); - if (resolver != null) { - try { - final Resource rsrc = resolver.getResource(path); - if (rsrc != null) { - synchronized (scheduledJobs) { - handleAddOrUpdate(scheduledJobs, rsrc); - } + try (ResourceResolver resolver = configuration.createResourceResolver()) { + final Resource rsrc = resolver.getResource(path); + if (rsrc != null) { + synchronized (scheduledJobs) { + handleAddOrUpdate(scheduledJobs, rsrc); } - } finally { - resolver.close(); } } } @@ -461,8 +443,7 @@ public class ScheduledJobHandler implements Runnable { public void remove(final ScheduledJobInfoImpl info) { final String scheduleKey = ResourceHelper.filterName(info.getName()); - final ResourceResolver resolver = configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = configuration.createResourceResolver()) { final StringBuilder sb = new StringBuilder(configuration.getScheduledJobsPath(true)); sb.append(scheduleKey); final String path = sb.toString(); @@ -475,8 +456,6 @@ public class ScheduledJobHandler implements Runnable { } catch (final PersistenceException pe) { // we ignore the exception if removing fails ignoreException(pe); - } finally { - resolver.close(); } synchronized (this.scheduledJobs) { @@ -489,8 +468,7 @@ public class ScheduledJobHandler implements Runnable { public void updateSchedule(final String scheduleName, final Collection<ScheduleInfo> scheduleInfo) { - final ResourceResolver resolver = configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = configuration.createResourceResolver()) { final String scheduleKey = ResourceHelper.filterName(scheduleName); final StringBuilder sb = new StringBuilder(configuration.getScheduledJobsPath(true)); @@ -526,8 +504,6 @@ public class ScheduledJobHandler implements Runnable { logger.warn("Unable to update scheduled job " + scheduleName, pe); } } - } finally { - resolver.close(); } } diff --git a/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java b/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java index 70b5d50..d954983 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/tasks/CleanUpTask.java @@ -143,8 +143,7 @@ public class CleanUpTask { } private void historyCleanUpRemovedJobs(Calendar olderThan) { - ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { HistoryCleanUpTask.cleanup( olderThan, resolver, @@ -186,8 +185,6 @@ public class CleanUpTask { Arrays.asList(Job.JobState.DROPPED.name(), Job.JobState.ERROR.name())); } catch (PersistenceException e) { this.logger.warn("Exception during job resource tree cleanup.", e); - } finally { - resolver.close(); } } @@ -198,8 +195,7 @@ public class CleanUpTask { */ private void simpleEmptyFolderCleanup(final TopologyCapabilities caps, final String basePath) { this.logger.debug("Cleaning up job resource tree: looking for empty folders"); - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Calendar cleanUpDate = getCalendarInstance(); // go back five minutes cleanUpDate.add(Calendar.MINUTE, -5); @@ -252,8 +248,6 @@ public class CleanUpTask { } catch (final PersistenceException pe) { // in the case of an error, we just log this as a warning this.logger.warn("Exception during job resource tree cleanup.", pe); - } finally { - resolver.close(); } } @@ -262,11 +256,7 @@ public class CleanUpTask { */ private void fullEmptyFolderCleanup(final TopologyCapabilities caps, final String basePath) { this.logger.debug("Cleaning up job resource tree: removing ALL empty folders"); - final ResourceResolver resolver = this.configuration.createResourceResolver(); - if (resolver == null) { - return; - } - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Resource baseResource = resolver.getResource(basePath); // sanity check - should never be null if (baseResource != null) { @@ -376,8 +366,6 @@ public class CleanUpTask { } catch (final PersistenceException pe) { // in the case of an error, we just log this as a warning this.logger.warn("Exception during job resource tree cleanup.", pe); - } finally { - resolver.close(); } } @@ -386,11 +374,7 @@ public class CleanUpTask { * @param assginedJobsPath The root path for the assigned jobs */ private void cleanUpInstanceIdFolders(final TopologyCapabilities caps, final String assginedJobsPath) { - final ResourceResolver resolver = this.configuration.createResourceResolver(); - if (resolver == null) { - return; - } - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { final Resource baseResource = resolver.getResource(assginedJobsPath); // sanity check - should never be null if (baseResource != null) { @@ -445,8 +429,6 @@ public class CleanUpTask { } catch (final PersistenceException e) { // in the case of an error, we just log this as a warning this.logger.warn("Exception during job resource tree cleanup.", e); - } finally { - resolver.close(); } } diff --git a/src/main/java/org/apache/sling/event/impl/jobs/tasks/HistoryCleanUpTask.java b/src/main/java/org/apache/sling/event/impl/jobs/tasks/HistoryCleanUpTask.java index 9a94423..3be923f 100644 --- a/src/main/java/org/apache/sling/event/impl/jobs/tasks/HistoryCleanUpTask.java +++ b/src/main/java/org/apache/sling/event/impl/jobs/tasks/HistoryCleanUpTask.java @@ -98,8 +98,7 @@ public class HistoryCleanUpTask implements JobExecutor { } else { stateList = null; } - final ResourceResolver resolver = this.configuration.createResourceResolver(); - try { + try (ResourceResolver resolver = this.configuration.createResourceResolver()) { if (stateList == null || stateList.contains(Job.JobState.SUCCEEDED.name())) { this.cleanup(removeDate, resolver, context, configuration.getStoredSuccessfulJobsPath(), topics, null); } @@ -115,8 +114,6 @@ public class HistoryCleanUpTask implements JobExecutor { } catch (final PersistenceException pe) { // in the case of an error, we just log this as a warning this.logger.warn("Exception during job resource tree cleanup.", pe); - } finally { - resolver.close(); } return context.result().succeeded(); }
