From f6711aeec9f880f2d7aafc1aae6516b3f3185f62 Mon Sep 17 00:00:00 2001 From: Glavo Date: Fri, 1 Aug 2025 19:30:36 +0800 Subject: [PATCH] cleanup --- .../hmcl/download/DefaultCacheRepository.java | 24 +++-- .../jackhuang/hmcl/util/CacheRepository.java | 90 ------------------- 2 files changed, 11 insertions(+), 103 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultCacheRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultCacheRepository.java index 1720d0721..67773459b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultCacheRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/DefaultCacheRepository.java @@ -212,19 +212,17 @@ public class DefaultCacheRepository extends CacheRepository { } } - /** - * { - * "libraries": { - * // allow a library has multiple hash code. - * [ - * "name": "net.minecraftforge:forge:1.11.2-13.20.0.2345", - * "hash": "blablabla", - * "type": "forge" - * ] - * } - * // assets and versions will not be included in index. - * } - */ + /// ```json + /// "libraries": { + /// // allow a library has multiple hash code. + /// [ + /// "name": "net.minecraftforge:forge:1.11.2-13.20.0.2345", + /// "hash": "blablabla", + /// "type": "forge" + /// ] + /// } + /// ``` + /// assets and versions will not be included in index. private static final class Index implements Validation { private final Set libraries; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CacheRepository.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CacheRepository.java index 017cd595b..ba3ad86c1 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CacheRepository.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/util/CacheRepository.java @@ -29,7 +29,6 @@ import java.io.*; import java.net.URI; import java.net.URISyntaxException; import java.net.URLConnection; -import java.nio.ByteBuffer; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; @@ -52,7 +51,6 @@ public class CacheRepository { private Path cacheDirectory; private Path indexFile; private Map index; - private final Map storages = new HashMap<>(); private final ReadWriteLock lock = new ReentrantReadWriteLock(); public void changeDirectory(Path commonDir) { @@ -62,10 +60,6 @@ public class CacheRepository { lock.writeLock().lock(); try { - for (Storage storage : storages.values()) { - storage.changeDirectory(cacheDirectory); - } - if (Files.isRegularFile(indexFile)) { ETagIndex raw = JsonUtils.fromJsonFile(indexFile, ETagIndex.class); if (raw == null) @@ -91,15 +85,6 @@ public class CacheRepository { return cacheDirectory; } - public Storage getStorage(String key) { - lock.readLock().lock(); - try { - return storages.computeIfAbsent(key, Storage::new); - } finally { - lock.readLock().unlock(); - } - } - protected Path getFile(String algorithm, String hash) { return getCacheDirectory().resolve(algorithm).resolve(hash.substring(0, 2)).resolve(hash); } @@ -396,81 +381,6 @@ public class CacheRepository { } } - /** - * Universal cache - */ - public static final class Storage { - private final String name; - private Map storage; - private final ReadWriteLock lock = new ReentrantReadWriteLock(); - private Path indexFile; - - public Storage(String name) { - this.name = name; - } - - public Object getEntry(String key) { - lock.readLock().lock(); - try { - return storage.get(key); - } finally { - lock.readLock().unlock(); - } - } - - public void putEntry(String key, Object value) { - lock.writeLock().lock(); - try { - storage.put(key, value); - saveToFile(); - } finally { - lock.writeLock().unlock(); - } - } - - private void joinEntries(Map storage) { - this.storage.putAll(storage); - } - - private void changeDirectory(Path cacheDirectory) { - lock.writeLock().lock(); - try { - indexFile = cacheDirectory.resolve(name + ".json"); - if (Files.isRegularFile(indexFile)) { - joinEntries(fromNonNullJson(Files.readString(indexFile), mapTypeOf(String.class, Object.class))); - } - } catch (IOException | JsonParseException e) { - LOG.warning("Unable to read storage {" + name + "} file"); - } finally { - lock.writeLock().unlock(); - } - } - - public void saveToFile() { - try (FileChannel channel = FileChannel.open(indexFile, StandardOpenOption.READ, StandardOpenOption.WRITE)) { - FileLock lock = channel.lock(); - try { - Map indexOnDisk = fromMaybeMalformedJson(new String(Channels.newInputStream(channel).readAllBytes(), UTF_8), mapTypeOf(String.class, Object.class)); - if (indexOnDisk == null) indexOnDisk = new HashMap<>(); - indexOnDisk.putAll(storage); - channel.truncate(0); - - ByteBuffer writeTo = ByteBuffer.wrap(JsonUtils.GSON.toJson(storage).getBytes(UTF_8)); - while (writeTo.hasRemaining()) { - if (channel.write(writeTo) == 0) { - throw new IOException("No value is written"); - } - } - this.storage = indexOnDisk; - } finally { - lock.release(); - } - } catch (IOException e) { - LOG.warning("Unable to write storage {" + name + "} file"); - } - } - } - private static CacheRepository instance = new CacheRepository(); public static CacheRepository getInstance() {