From ad8a866dc30be32eb41bc0a1911102b90ee1ff1a Mon Sep 17 00:00:00 2001 From: Geert Bevin Date: Mon, 22 Jul 2024 22:13:39 -0400 Subject: [PATCH] Cleanups --- src/main/java/rife/bld/BaseProject.java | 2 +- src/main/java/rife/bld/BldCache.java | 212 +++++++++--------- .../operations/DependencyTreeOperation.java | 4 +- .../bld/wrapper/WrapperExtensionResolver.java | 5 +- 4 files changed, 116 insertions(+), 107 deletions(-) diff --git a/src/main/java/rife/bld/BaseProject.java b/src/main/java/rife/bld/BaseProject.java index 688c137..e6c24fd 100644 --- a/src/main/java/rife/bld/BaseProject.java +++ b/src/main/java/rife/bld/BaseProject.java @@ -1593,7 +1593,7 @@ public class BaseProject extends BuildExecutor { private void performAutoDownloadPurge() { var resolution = new VersionResolution(properties()); var cache = new BldCache(libBldDirectory(), resolution); - cache.fingerprintDependencies(repositories(), dependencies()); + cache.cacheDependenciesHash(repositories(), dependencies()); if (cache.isDependenciesCacheValid(downloadSources(), downloadJavadoc())) { return; } diff --git a/src/main/java/rife/bld/BldCache.java b/src/main/java/rife/bld/BldCache.java index 1b312ae..fda5f72 100644 --- a/src/main/java/rife/bld/BldCache.java +++ b/src/main/java/rife/bld/BldCache.java @@ -61,6 +61,7 @@ public class BldCache { private String extensionsHash_; private Boolean extensionsDownloadSources_; private Boolean extensionsDownloadJavadocs_; + private List extensionsLocalArtifacts_; private String extensionsDependencyTree_; private String dependenciesHash_; private Boolean dependenciesDownloadSources_; @@ -70,6 +71,13 @@ public class BldCache { private String dependenciesRuntimeDependencyTree_; private String dependenciesTestDependencyTree_; + /** + * Creates a new {@code BldCache} instance. + * + * @param bldLibDir the library directory where the bld cache file is stored + * @param resolution the version resolution that should be used when needed during the cache operations + * @since 2.0 + */ public BldCache(File bldLibDir, VersionResolution resolution) { bldLibDir_ = bldLibDir; resolution_ = resolution; @@ -78,7 +86,7 @@ public class BldCache { new File(bldLibDir, BLD_BUILD_HASH).delete(); } - public void fingerprintExtensions(Collection repositories, Collection extensions) { + public void cacheExtensionsHash(Collection repositories, Collection extensions) { try { var overrides_fp = String.join("\n", resolution_.versionOverrides().entrySet().stream().map(e -> e.getKey() + ":" + e.getValue()).toList()); var repositories_fp = String.join("\n", repositories); @@ -94,84 +102,6 @@ public class BldCache { } } - public void cacheExtensionsDownloads(boolean downloadSources, boolean downloadJavadoc) { - extensionsDownloadSources_ = downloadSources; - extensionsDownloadJavadocs_ = downloadJavadoc; - } - - public void cacheExtensionsDependencyTree(String dependencyTree) { - extensionsDependencyTree_ = dependencyTree; - } - - public String getCachedExtensionsDependencyTree() { - return hashProperties().getProperty(PROPERTY_EXTENSIONS_DEPENDENCY_TREE); - } - - public void fingerprintDependencies(List repositories, DependencyScopes dependencies) { - var finger_print = new StringBuilder(); - finger_print.append(String.join("\n", resolution_.versionOverrides().entrySet().stream().map(e -> e.getKey() + ":" + e.getValue()).toList())); - for (var repository : repositories) { - finger_print.append(repository.toString()); - finger_print.append('\n'); - } - for (var entry : dependencies.entrySet()) { - finger_print.append(entry.getKey()); - finger_print.append('\n'); - if (entry.getValue() != null) { - for (var dependency : entry.getValue()) { - finger_print.append(dependency.toString()); - finger_print.append('\n'); - } - } - } - - try { - var digest = MessageDigest.getInstance("SHA-1"); - digest.update(finger_print.toString().getBytes(StandardCharsets.UTF_8)); - dependenciesHash_ = StringUtils.encodeHexLower(digest.digest()); - } catch (NoSuchAlgorithmException e) { - // should not happen - throw new RuntimeException(e); - } - } - - public void cacheDependenciesDownloads(boolean downloadSources, boolean downloadJavadoc) { - dependenciesDownloadSources_ = downloadSources; - dependenciesDownloadJavadocs_ = downloadJavadoc; - } - - public void cacheDependenciesCompileDependencyTree(String compileTree) { - dependenciesCompileDependencyTree_ = compileTree; - } - - public String getCachedDependenciesCompileDependencyTree() { - return hashProperties().getProperty(PROPERTY_DEPENDENCIES_COMPILE_DEPENDENCY_TREE); - } - - public void cacheDependenciesProvidedDependencyTree(String providedTree) { - dependenciesProvidedDependencyTree_ = providedTree; - } - - public String getCachedDependenciesProvidedDependencyTree() { - return hashProperties().getProperty(PROPERTY_DEPENDENCIES_PROVIDED_DEPENDENCY_TREE); - } - - public void cacheDependenciesRuntimeDependencyTree(String runtimeTree) { - dependenciesRuntimeDependencyTree_ = runtimeTree; - } - - public String getCachedDependenciesRuntimeDependencyTree() { - return hashProperties().getProperty(PROPERTY_DEPENDENCIES_RUNTIME_DEPENDENCY_TREE); - } - - public void cacheDependenciesTestDependencyTree(String testTree) { - dependenciesTestDependencyTree_ = testTree; - } - - public String getCachedDependenciesTestDependencyTree() { - return hashProperties().getProperty(PROPERTY_DEPENDENCIES_TEST_DEPENDENCY_TREE); - } - public boolean isExtensionHashValid() { return validateExtensionsHash(extensionsHash_); } @@ -193,24 +123,6 @@ public class BldCache { return validateExtensionsHash(extensionsHash_); } - private File getCacheFile() { - return new File(bldLibDir_, BLD_CACHE); - } - - private Properties hashProperties() { - var properties = new Properties(); - if (getCacheFile().exists()) { - try { - try (var reader = new BufferedReader(new FileReader(getCacheFile()))) { - properties.load(reader); - } - } catch (IOException e) { - // no-op, we'll store a new properties file when we're writing the cache - } - } - return properties; - } - private boolean validateExtensionsHash(String hash) { var properties = hashProperties(); if (properties.isEmpty()) { @@ -250,6 +162,51 @@ public class BldCache { return true; } + public void cacheExtensionsDownloads(boolean downloadSources, boolean downloadJavadoc) { + extensionsDownloadSources_ = downloadSources; + extensionsDownloadJavadocs_ = downloadJavadoc; + } + + public void cacheExtensionsDependencyTree(String dependencyTree) { + extensionsDependencyTree_ = dependencyTree; + } + + public String getCachedExtensionsDependencyTree() { + return hashProperties().getProperty(PROPERTY_EXTENSIONS_DEPENDENCY_TREE); + } + + public void cacheExtensionsLocalArtifacts(List extensionsLocalArtifacts) { + extensionsLocalArtifacts_ = extensionsLocalArtifacts; + } + + public void cacheDependenciesHash(List repositories, DependencyScopes dependencies) { + var finger_print = new StringBuilder(); + finger_print.append(String.join("\n", resolution_.versionOverrides().entrySet().stream().map(e -> e.getKey() + ":" + e.getValue()).toList())); + for (var repository : repositories) { + finger_print.append(repository.toString()); + finger_print.append('\n'); + } + for (var entry : dependencies.entrySet()) { + finger_print.append(entry.getKey()); + finger_print.append('\n'); + if (entry.getValue() != null) { + for (var dependency : entry.getValue()) { + finger_print.append(dependency.toString()); + finger_print.append('\n'); + } + } + } + + try { + var digest = MessageDigest.getInstance("SHA-1"); + digest.update(finger_print.toString().getBytes(StandardCharsets.UTF_8)); + dependenciesHash_ = StringUtils.encodeHexLower(digest.digest()); + } catch (NoSuchAlgorithmException e) { + // should not happen + throw new RuntimeException(e); + } + } + public boolean isDependenciesHashValid() { return validateDependenciesHash(dependenciesHash_); } @@ -280,11 +237,62 @@ public class BldCache { return hash.equals(properties.getProperty(PROPERTY_DEPENDENCIES_HASH)); } - public void writeCache() { - writeCache(null); + public void cacheDependenciesDownloads(boolean downloadSources, boolean downloadJavadoc) { + dependenciesDownloadSources_ = downloadSources; + dependenciesDownloadJavadocs_ = downloadJavadoc; } - public void writeCache(List extensionsLocalArtifacts) { + public void cacheDependenciesCompileDependencyTree(String compileTree) { + dependenciesCompileDependencyTree_ = compileTree; + } + + public String getCachedDependenciesCompileDependencyTree() { + return hashProperties().getProperty(PROPERTY_DEPENDENCIES_COMPILE_DEPENDENCY_TREE); + } + + public void cacheDependenciesProvidedDependencyTree(String providedTree) { + dependenciesProvidedDependencyTree_ = providedTree; + } + + public String getCachedDependenciesProvidedDependencyTree() { + return hashProperties().getProperty(PROPERTY_DEPENDENCIES_PROVIDED_DEPENDENCY_TREE); + } + + public void cacheDependenciesRuntimeDependencyTree(String runtimeTree) { + dependenciesRuntimeDependencyTree_ = runtimeTree; + } + + public String getCachedDependenciesRuntimeDependencyTree() { + return hashProperties().getProperty(PROPERTY_DEPENDENCIES_RUNTIME_DEPENDENCY_TREE); + } + + public void cacheDependenciesTestDependencyTree(String testTree) { + dependenciesTestDependencyTree_ = testTree; + } + + public String getCachedDependenciesTestDependencyTree() { + return hashProperties().getProperty(PROPERTY_DEPENDENCIES_TEST_DEPENDENCY_TREE); + } + + private File getCacheFile() { + return new File(bldLibDir_, BLD_CACHE); + } + + private Properties hashProperties() { + var properties = new Properties(); + if (getCacheFile().exists()) { + try { + try (var reader = new BufferedReader(new FileReader(getCacheFile()))) { + properties.load(reader); + } + } catch (IOException e) { + // no-op, we'll store a new properties file when we're writing the cache + } + } + return properties; + } + + public void writeCache() { var properties = hashProperties(); try { @@ -307,9 +315,9 @@ public class BldCache { properties.put(PROPERTY_EXTENSIONS_DOWNLOAD_JAVADOC, String.valueOf(extensionsDownloadJavadocs_)); } - if (extensionsLocalArtifacts != null) { + if (extensionsLocalArtifacts_ != null) { var extensions_local = new StringBuilder(); - for (var file : extensionsLocalArtifacts) { + for (var file : extensionsLocalArtifacts_) { if (file.exists() && file.canRead()) { if (!extensions_local.isEmpty()) { extensions_local.append("\n"); diff --git a/src/main/java/rife/bld/operations/DependencyTreeOperation.java b/src/main/java/rife/bld/operations/DependencyTreeOperation.java index 4a535cc..38ab234 100644 --- a/src/main/java/rife/bld/operations/DependencyTreeOperation.java +++ b/src/main/java/rife/bld/operations/DependencyTreeOperation.java @@ -55,7 +55,7 @@ public class DependencyTreeOperation extends AbstractOperation