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 <[email protected]> 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
