diff --git a/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java b/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java
index 255338bb1..d5daf22b1 100644
--- a/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java
+++ b/arduino-core/src/cc/arduino/libraries/contributions/ContributedLibrary.java
@@ -47,6 +47,8 @@ public abstract class ContributedLibrary extends DownloadableContribution {
public abstract String getCategory();
+ public abstract void setCategory(String category);
+
public abstract String getLicense();
public abstract String getParagraph();
@@ -79,7 +81,7 @@ public abstract class ContributedLibrary extends DownloadableContribution {
/**
* Returns true if the library declares to support the specified
* architecture (through the "architectures" property field).
- *
+ *
* @param reqArch
* @return
*/
@@ -91,7 +93,7 @@ public abstract class ContributedLibrary extends DownloadableContribution {
/**
* Returns true if the library declares to support at least one of the
* specified architectures.
- *
+ *
* @param reqArchs
* A List of architectures to check
* @return
diff --git a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java
index 10fd5bbe9..349d6088d 100644
--- a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java
+++ b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndex.java
@@ -28,9 +28,7 @@
*/
package cc.arduino.libraries.contributions;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
+import java.util.*;
public abstract class LibrariesIndex {
@@ -46,24 +44,22 @@ public abstract class LibrariesIndex {
@Override
public String toString() {
- String res = "";
- for (ContributedLibrary l : getLibraries())
- res += l.toString();
- return res;
+ StringBuilder sb = new StringBuilder();
+ for (ContributedLibrary library : getLibraries()) {
+ sb.append(library.toString());
+ }
+ return sb.toString();
}
- private List categories = new ArrayList();
-
public List getCategories() {
- return categories;
- }
-
- public void fillCategories() {
- categories.clear();
+ List categories = new LinkedList();
for (ContributedLibrary lib : getLibraries()) {
- if (!categories.contains(lib.getCategory()))
+ if (lib.getCategory() != null && !categories.contains(lib.getCategory())) {
categories.add(lib.getCategory());
+ }
}
Collections.sort(categories);
+
+ return categories;
}
}
diff --git a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java
index 96cc38c15..109bd332d 100644
--- a/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java
+++ b/arduino-core/src/cc/arduino/libraries/contributions/LibrariesIndexer.java
@@ -64,15 +64,12 @@ public class LibrariesIndexer {
"libraries");
}
- public void parseIndex() throws JsonParseException, IOException {
+ public void parseIndex() throws IOException {
parseIndex(indexFile);
-
- index.fillCategories();
// TODO: resolve libraries inner references
}
- private void parseIndex(File indexFile) throws JsonParseException,
- IOException {
+ private void parseIndex(File indexFile) throws IOException {
InputStream indexIn = new FileInputStream(indexFile);
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new MrBeanModule());
@@ -80,6 +77,12 @@ public class LibrariesIndexer {
mapper.configure(DeserializationFeature.EAGER_DESERIALIZER_FETCH, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true);
index = mapper.readValue(indexIn, LibrariesIndex.class);
+
+ for (ContributedLibrary library : index.getLibraries()) {
+ if (library.getCategory() == null || "".equals(library.getCategory())) {
+ library.setCategory("Uncategorized");
+ }
+ }
}
public void setLibrariesFolders(List _librariesFolders)
@@ -172,7 +175,7 @@ public class LibrariesIndexer {
* Set the sketchbook library folder.
* New libraries will be installed here.
* Libraries not found on this folder will be marked as read-only.
- *
+ *
* @param folder
*/
public void setSketchbookLibrariesFolder(File folder) {
diff --git a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java
index 34f09ef9c..0bed82589 100644
--- a/arduino-core/src/processing/app/packages/LegacyUserLibrary.java
+++ b/arduino-core/src/processing/app/packages/LegacyUserLibrary.java
@@ -80,7 +80,7 @@ public class LegacyUserLibrary extends UserLibrary {
@Override
public String getCategory() {
- return null;
+ return "Uncategorized";
}
@Override
diff --git a/arduino-core/src/processing/app/packages/UserLibrary.java b/arduino-core/src/processing/app/packages/UserLibrary.java
index f92cd0087..10bffe047 100644
--- a/arduino-core/src/processing/app/packages/UserLibrary.java
+++ b/arduino-core/src/processing/app/packages/UserLibrary.java
@@ -199,6 +199,11 @@ public class UserLibrary extends ContributedLibrary {
return CATEGORIES;
}
+ @Override
+ public void setCategory(String category) {
+ this.category = category;
+ }
+
@Override
public String getVersion() {
return version;