From 77ec25de61a8ada9f6a8c35bf4f1611916568178 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 17 May 2018 12:46:03 +0200 Subject: [PATCH] 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. --- .../arduino/contributions/libraries/LibrariesIndexer.java | 8 ++++++-- .../contributions/packages/ContributionsIndexer.java | 6 ++---- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java index 12d7f1bb8..fe0776e68 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java @@ -52,6 +52,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Optional; import static processing.app.I18n.tr; @@ -151,8 +152,11 @@ public class LibrariesIndexer { .filter(l -> l.getTypes().contains("Contributed")) // .filter(l -> l.getLocation() == Location.CORE || l.getLocation() == Location.REFERENCED_CORE) // .forEach(l -> { - ContributedPlatform platform = BaseNoGui.indexer.getPlatformByFolder(l.getInstalledFolder()); - l.setTypes(Collections.singletonList(platform.getCategory())); + File libFolder = l.getInstalledFolder(); + Optional platform = BaseNoGui.indexer.getPlatformByFolder(libFolder); + if (platform.isPresent()) { + l.setTypes(Collections.singletonList(platform.get().getCategory())); + } }); } diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java index 607d2bfde..1ec4c365f 100644 --- a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java @@ -461,13 +461,11 @@ public class ContributionsIndexer { return index.getInstalledPlatforms(); } - public ContributedPlatform getPlatformByFolder(final File folder) { - Optional platformOptional = getInstalledPlatforms().stream().filter(contributedPlatform -> { + public Optional getPlatformByFolder(final File folder) { + return getInstalledPlatforms().stream().filter(contributedPlatform -> { assert contributedPlatform.getInstalledFolder() != null; return FileUtils.isSubDirectory(contributedPlatform.getInstalledFolder(), folder); }).findFirst(); - - return platformOptional.orElse(null); } public ContributedPlatform getContributedPlaform(TargetPlatform targetPlatform) {