mirror of
https://github.com/arduino/Arduino.git
synced 2025-01-31 20:52:13 +01:00
Fixed NPE when setting Types field in core-libraries
The core libraries may come from platforms installed inside the "sketchbook/hardware" directory. Those platforms are not indexed and doesn't have a category field to propagate in the core-libraries.
This commit is contained in:
parent
3bce82092e
commit
77ec25de61
@ -52,6 +52,7 @@ import java.io.InputStream;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import static processing.app.I18n.tr;
|
import static processing.app.I18n.tr;
|
||||||
|
|
||||||
@ -151,8 +152,11 @@ public class LibrariesIndexer {
|
|||||||
.filter(l -> l.getTypes().contains("Contributed")) //
|
.filter(l -> l.getTypes().contains("Contributed")) //
|
||||||
.filter(l -> l.getLocation() == Location.CORE || l.getLocation() == Location.REFERENCED_CORE) //
|
.filter(l -> l.getLocation() == Location.CORE || l.getLocation() == Location.REFERENCED_CORE) //
|
||||||
.forEach(l -> {
|
.forEach(l -> {
|
||||||
ContributedPlatform platform = BaseNoGui.indexer.getPlatformByFolder(l.getInstalledFolder());
|
File libFolder = l.getInstalledFolder();
|
||||||
l.setTypes(Collections.singletonList(platform.getCategory()));
|
Optional<ContributedPlatform> platform = BaseNoGui.indexer.getPlatformByFolder(libFolder);
|
||||||
|
if (platform.isPresent()) {
|
||||||
|
l.setTypes(Collections.singletonList(platform.get().getCategory()));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -461,13 +461,11 @@ public class ContributionsIndexer {
|
|||||||
return index.getInstalledPlatforms();
|
return index.getInstalledPlatforms();
|
||||||
}
|
}
|
||||||
|
|
||||||
public ContributedPlatform getPlatformByFolder(final File folder) {
|
public Optional<ContributedPlatform> getPlatformByFolder(final File folder) {
|
||||||
Optional<ContributedPlatform> platformOptional = getInstalledPlatforms().stream().filter(contributedPlatform -> {
|
return getInstalledPlatforms().stream().filter(contributedPlatform -> {
|
||||||
assert contributedPlatform.getInstalledFolder() != null;
|
assert contributedPlatform.getInstalledFolder() != null;
|
||||||
return FileUtils.isSubDirectory(contributedPlatform.getInstalledFolder(), folder);
|
return FileUtils.isSubDirectory(contributedPlatform.getInstalledFolder(), folder);
|
||||||
}).findFirst();
|
}).findFirst();
|
||||||
|
|
||||||
return platformOptional.orElse(null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public ContributedPlatform getContributedPlaform(TargetPlatform targetPlatform) {
|
public ContributedPlatform getContributedPlaform(TargetPlatform targetPlatform) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user