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();
     }

Reply via email to