Fix: ConcurrentModificationException

This commit is contained in:
huanghongxun 2019-10-10 16:03:25 +08:00
parent e0ebb02530
commit 529c4ed420

View File

@ -56,23 +56,29 @@ public final class OptiFineBMCLVersionList extends VersionList<OptiFineRemoteVer
@Override
public void execute() {
versions.clear();
Set<String> duplicates = new HashSet<>();
List<OptiFineVersion> root = JsonUtils.GSON.fromJson(task.getResult(), new TypeToken<List<OptiFineVersion>>() {
}.getType());
for (OptiFineVersion element : root) {
String version = element.getType() + "_" + element.getPatch();
String mirror = "http://bmclapi2.bangbang93.com/optifine/" + element.getGameVersion() + "/" + element.getType() + "/" + element.getPatch();
if (!duplicates.add(mirror))
continue;
lock.writeLock().lock();
boolean isPre = element.getPatch() != null && (element.getPatch().startsWith("pre") || element.getPatch().startsWith("alpha"));
try {
versions.clear();
Set<String> duplicates = new HashSet<>();
List<OptiFineVersion> root = JsonUtils.GSON.fromJson(task.getResult(), new TypeToken<List<OptiFineVersion>>() {
}.getType());
for (OptiFineVersion element : root) {
String version = element.getType() + "_" + element.getPatch();
String mirror = "http://bmclapi2.bangbang93.com/optifine/" + element.getGameVersion() + "/" + element.getType() + "/" + element.getPatch();
if (!duplicates.add(mirror))
continue;
if (StringUtils.isBlank(element.getGameVersion()))
continue;
boolean isPre = element.getPatch() != null && (element.getPatch().startsWith("pre") || element.getPatch().startsWith("alpha"));
String gameVersion = VersionNumber.normalize(element.getGameVersion());
versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, mirror, isPre));
if (StringUtils.isBlank(element.getGameVersion()))
continue;
String gameVersion = VersionNumber.normalize(element.getGameVersion());
versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, mirror, isPre));
}
} finally {
lock.writeLock().unlock();
}
}
};