Fixed java.lang.IllegalStateException: stream has already been operated upon or closed

This commit is contained in:
huangyuhui 2018-06-08 13:40:12 +08:00
parent 475e6e5511
commit e9070a77c3

View File

@ -37,9 +37,11 @@ import org.jackhuang.hmcl.util.Logging;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.stream.Collectors;
import java.util.stream.Stream; import java.util.stream.Stream;
public final class ModController { public final class ModController {
@ -68,21 +70,22 @@ public final class ModController {
}); });
rootPane.setOnDragDropped(event -> { rootPane.setOnDragDropped(event -> {
List<File> mods = event.getDragboard().getFiles(); List<File> files = event.getDragboard().getFiles();
Stream<File> stream = null; if (files != null) {
if (mods != null) Collection<File> mods = files.stream()
stream = mods.stream() .filter(it -> Arrays.asList("jar", "zip", "litemod").contains(FileUtils.getExtension(it)))
.filter(it -> Arrays.asList("jar", "zip", "litemod").contains(FileUtils.getExtension(it))); .collect(Collectors.toList());
if (stream != null && stream.findAny().isPresent()) { if (!mods.isEmpty()) {
stream.forEach(it -> { mods.forEach(it -> {
try { try {
modManager.addMod(versionId, it); modManager.addMod(versionId, it);
} catch (IOException | IllegalArgumentException e) { } catch (IOException | IllegalArgumentException e) {
Logging.LOG.log(Level.WARNING, "Unable to parse mod file " + it, e); Logging.LOG.log(Level.WARNING, "Unable to parse mod file " + it, e);
} }
}); });
loadMods(modManager, versionId); loadMods(modManager, versionId);
event.setDropCompleted(true); event.setDropCompleted(true);
}
} }
event.consume(); event.consume();
}); });