This commit is contained in:
huanghongxun
2019-09-12 16:38:28 +08:00
parent bc96afd0cd
commit ba699c4ed5
3 changed files with 17 additions and 14 deletions

View File

@@ -63,7 +63,7 @@ public class DefaultCacheRepository extends CacheRepository {
lock.writeLock().lock();
try {
if (Files.isRegularFile(indexFile))
index = JsonUtils.GSON.fromJson(FileUtils.readText(indexFile.toFile()), Index.class);
index = JsonUtils.fromNonNullJson(FileUtils.readText(indexFile.toFile()), Index.class);
else
index = new Index();
} catch (IOException | JsonParseException e) {
@@ -240,13 +240,13 @@ public class DefaultCacheRepository extends CacheRepository {
}
}
private class LibraryIndex {
private class LibraryIndex implements Validation {
private final String name;
private final String hash;
private final String type;
public LibraryIndex() {
this(null, null, null);
this("", "", "");
}
public LibraryIndex(String name, String hash, String type) {
@@ -255,18 +255,27 @@ public class DefaultCacheRepository extends CacheRepository {
this.type = type;
}
@NotNull
public String getName() {
return name;
}
@NotNull
public String getHash() {
return hash;
}
@NotNull
public String getType() {
return type;
}
@Override
public void validate() throws JsonParseException, TolerableValidationException {
if (name == null || hash == null || type == null)
throw new JsonParseException("Index.LibraryIndex.* cannot be null");
}
@Override
public boolean equals(Object o) {
if (this == o) return true;

View File

@@ -23,11 +23,7 @@ import org.jackhuang.hmcl.util.Lang;
import org.jackhuang.hmcl.util.platform.OperatingSystem;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -99,7 +95,7 @@ public final class Arguments {
}
public static List<String> parseStringArguments(List<String> arguments, Map<String, String> keys) {
return arguments.stream().flatMap(str -> new StringArgument(str).toString(keys, Collections.emptyMap()).stream()).collect(Collectors.toList());
return arguments.stream().filter(Objects::nonNull).flatMap(str -> new StringArgument(str).toString(keys, Collections.emptyMap()).stream()).collect(Collectors.toList());
}
public static List<String> parseArguments(List<Argument> arguments, Map<String, String> keys) {
@@ -107,7 +103,7 @@ public final class Arguments {
}
public static List<String> parseArguments(List<Argument> arguments, Map<String, String> keys, Map<String, Boolean> features) {
return arguments.stream().flatMap(arg -> arg.toString(keys, features).stream()).collect(Collectors.toList());
return arguments.stream().filter(Objects::nonNull).flatMap(arg -> arg.toString(keys, features).stream()).collect(Collectors.toList());
}
public static final List<Argument> DEFAULT_JVM_ARGUMENTS;

View File

@@ -23,10 +23,7 @@ import com.google.gson.reflect.TypeToken;
import org.jackhuang.hmcl.util.Immutable;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
@@ -69,6 +66,7 @@ public class RuledArgument implements Argument {
public List<String> toString(Map<String, String> keys, Map<String, Boolean> features) {
if (CompatibilityRule.appliesToCurrentEnvironment(rules, features) && value != null)
return value.stream()
.filter(Objects::nonNull)
.map(StringArgument::new)
.map(str -> str.toString(keys, features).get(0))
.collect(Collectors.toList());