diff --git a/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java b/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java index e74937025..11052ae74 100644 --- a/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java +++ b/app/src/cc/arduino/contributions/libraries/LibraryByTypeComparator.java @@ -47,13 +47,17 @@ public class LibraryByTypeComparator implements Comparator { @Override public int compare(UserLibrary o1, UserLibrary o2) { - if (o1.getTypes() == null) { + if (o1.getTypes().isEmpty() && o2.getTypes().isEmpty()) { + return 0; + } + if (o1.getTypes().isEmpty()) { return 1; } - if (o2.getTypes() == null) { + if (o2.getTypes().isEmpty()) { return -1; } - return libraryTypeComparator.compare(o1.getTypes().get(0), o2.getTypes().get(0)); + return libraryTypeComparator.compare(o1.getTypes().get(0), + o2.getTypes().get(0)); } } diff --git a/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java b/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java index bf52efa6c..45a42b7b7 100644 --- a/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java +++ b/app/src/cc/arduino/contributions/libraries/LibraryOfSameTypeComparator.java @@ -37,10 +37,13 @@ public class LibraryOfSameTypeComparator implements Comparator { @Override public int compare(UserLibrary o1, UserLibrary o2) { - if (o1.getTypes() == null) { + if (o1.getTypes().isEmpty() && o2.getTypes().isEmpty()) { + return 0; + } + if (o1.getTypes().isEmpty()) { return 1; } - if (o2.getTypes() == null) { + if (o2.getTypes().isEmpty()) { return -1; } if (!o1.getTypes().get(0).equals(o2.getTypes().get(0))) { diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 2d54e26b9..62535c790 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -1193,10 +1193,7 @@ public class Base { if (location == Location.IDE_BUILTIN) { if (compatible) { // only compatible IDE libs are shown - boolean retired = false; - List types = lib.getTypes(); - if (types != null) retired = types.contains("Retired"); - if (retired) { + if (lib.getTypes().contains("Retired")) { retiredIdeLibs.add(lib); } else { ideLibs.add(lib); @@ -1214,7 +1211,7 @@ public class Base { } else if (location == Location.SKETCHBOOK) { if (compatible) { // libraries promoted from sketchbook (behave as builtin) - if (lib.getTypes() != null && lib.getTypes().contains("Arduino") + if (!lib.getTypes().isEmpty() && lib.getTypes().contains("Arduino") && lib.getArchitectures().contains("*")) { ideLibs.add(lib); } else { diff --git a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java index b1266e2b5..c21a8e91b 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/LibrariesIndexer.java @@ -204,11 +204,11 @@ public class LibrariesIndexer { } } - if (lib.getTypes() == null && folderDesc.location == Location.SKETCHBOOK) { + if (lib.getTypes().isEmpty() && loc == Location.SKETCHBOOK) { lib.setTypes(lib.getDeclaredTypes()); } - if (lib.getTypes() == null) { + if (lib.getTypes().isEmpty()) { lib.setTypes(Collections.singletonList("Contributed")); } } diff --git a/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java b/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java index 36b19a21a..330fc03b3 100644 --- a/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java +++ b/arduino-core/src/cc/arduino/contributions/libraries/filters/TypePredicate.java @@ -43,7 +43,7 @@ public class TypePredicate implements Predicate { @Override public boolean test(UserLibrary input) { - return input.getTypes() != null && input.getTypes().contains(type); + return input.getTypes().contains(type); } } diff --git a/arduino-core/src/processing/app/packages/UserLibrary.java b/arduino-core/src/processing/app/packages/UserLibrary.java index dceeeb41c..c6c2c2ffc 100644 --- a/arduino-core/src/processing/app/packages/UserLibrary.java +++ b/arduino-core/src/processing/app/packages/UserLibrary.java @@ -56,7 +56,7 @@ public class UserLibrary { private String category; private String license; private List architectures; - private List types; + private List types = new ArrayList<>(); private List declaredTypes; private boolean onGoingDevelopment; private List includes;