You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/06/04 09:13:22 UTC

[sling-org-apache-sling-feature] 01/01: SLING-10451 cleanup cache directory

This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch bugfix/cleanup-cache-directory
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git

commit f95ddb7fae6bd6f429bb5b14b880007a486e8abe
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Jun 4 11:13:07 2021 +0200

    SLING-10451 cleanup cache directory
    
    also create it only lazily
---
 .../sling/feature/io/artifacts/ArtifactManager.java    | 12 ++++++++++++
 .../feature/io/artifacts/ArtifactManagerConfig.java    | 18 +++++++++++++-----
 2 files changed, 25 insertions(+), 5 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManager.java b/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManager.java
index 021be9a..ed6cafb 100644
--- a/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManager.java
+++ b/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManager.java
@@ -361,9 +361,21 @@ public class ArtifactManager
         @Override
         public void shutdown() {
             this.config = null;
+            deleteDir(cacheDir);
             this.cacheDir = null;
         }
 
+        /** recursively delete directory */
+        private static void deleteDir(File dir) {
+            File[] files = dir.listFiles();
+            if(files != null) {
+                for (final File file : files) {
+                    deleteDir(file);
+                }
+            }
+            dir.delete();
+        }
+
         @Override
         public URL getArtifact(final String url, final String relativeCachePath) {
             logger.debug("Checking url to be local file {}", url);
diff --git a/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManagerConfig.java b/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManagerConfig.java
index 876d895..eb1b969 100644
--- a/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManagerConfig.java
+++ b/src/main/java/org/apache/sling/feature/io/artifacts/ArtifactManagerConfig.java
@@ -62,11 +62,6 @@ public class ArtifactManagerConfig implements ArtifactProviderContext {
                 "https://repo.maven.apache.org/maven2",
                 "https://repository.apache.org/content/groups/snapshots"
                 };
-        try {
-            this.cacheDirectory = Files.createTempDirectory("slingfeature").toFile();
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
         this.repoHome = System.getProperty("user.home") + "/.m2/repository/";
     }
 
@@ -103,9 +98,22 @@ public class ArtifactManagerConfig implements ArtifactProviderContext {
      */
     @Override
     public File getCacheDirectory() {
+        if (cacheDirectory == null) {
+            initCacheDirectory();
+        }
         return cacheDirectory;
     }
 
+    private synchronized void initCacheDirectory() {
+        if (cacheDirectory == null) {
+            try {
+                this.cacheDirectory = Files.createTempDirectory("slingfeature").toFile();
+            } catch (IOException e) {
+                throw new RuntimeException(e);
+            }
+        }
+    }
+
     /**
      * Set the cache directory
      * @param dir The cache directory