diff --git a/.classpath b/.classpath
index 47e53ff2e..81a5936bb 100644
--- a/.classpath
+++ b/.classpath
@@ -21,10 +21,10 @@
-
-
-
-
+
+
+
+
diff --git a/app/.classpath b/app/.classpath
index 4c6032c5f..64ac39ae3 100644
--- a/app/.classpath
+++ b/app/.classpath
@@ -12,10 +12,10 @@
-
-
-
-
+
+
+
+
diff --git a/app/lib/jackson-annotations-2.2.3.jar b/app/lib/jackson-annotations-2.2.3.jar
deleted file mode 100644
index b62c87d7e..000000000
Binary files a/app/lib/jackson-annotations-2.2.3.jar and /dev/null differ
diff --git a/app/lib/jackson-annotations-2.6.3.jar b/app/lib/jackson-annotations-2.6.3.jar
new file mode 100644
index 000000000..9bb53e875
Binary files /dev/null and b/app/lib/jackson-annotations-2.6.3.jar differ
diff --git a/app/lib/jackson-core-2.2.3.jar b/app/lib/jackson-core-2.2.3.jar
deleted file mode 100644
index 24318a464..000000000
Binary files a/app/lib/jackson-core-2.2.3.jar and /dev/null differ
diff --git a/app/lib/jackson-core-2.6.3.jar b/app/lib/jackson-core-2.6.3.jar
new file mode 100644
index 000000000..e1ec916dd
Binary files /dev/null and b/app/lib/jackson-core-2.6.3.jar differ
diff --git a/app/lib/jackson-databind-2.2.3.jar b/app/lib/jackson-databind-2.2.3.jar
deleted file mode 100644
index 854508478..000000000
Binary files a/app/lib/jackson-databind-2.2.3.jar and /dev/null differ
diff --git a/app/lib/jackson-databind-2.6.3.jar b/app/lib/jackson-databind-2.6.3.jar
new file mode 100644
index 000000000..e60f9fe1a
Binary files /dev/null and b/app/lib/jackson-databind-2.6.3.jar differ
diff --git a/app/lib/jackson-module-mrbean-2.2.3.jar b/app/lib/jackson-module-mrbean-2.2.3.jar
deleted file mode 100644
index a4a3b738e..000000000
Binary files a/app/lib/jackson-module-mrbean-2.2.3.jar and /dev/null differ
diff --git a/app/lib/jackson-module-mrbean-2.6.3.jar b/app/lib/jackson-module-mrbean-2.6.3.jar
new file mode 100644
index 000000000..69cc60a58
Binary files /dev/null and b/app/lib/jackson-module-mrbean-2.6.3.jar differ
diff --git a/arduino-core/.classpath b/arduino-core/.classpath
index 755346253..cf3a2da06 100644
--- a/arduino-core/.classpath
+++ b/arduino-core/.classpath
@@ -13,10 +13,10 @@
-
-
-
-
+
+
+
+
@@ -24,10 +24,10 @@
-
-
-
-
+
+
+
+
diff --git a/arduino-core/lib/jackson-annotations-2.2.3.jar b/arduino-core/lib/jackson-annotations-2.2.3.jar
deleted file mode 100644
index b62c87d7e..000000000
Binary files a/arduino-core/lib/jackson-annotations-2.2.3.jar and /dev/null differ
diff --git a/arduino-core/lib/jackson-annotations-2.6.3.jar b/arduino-core/lib/jackson-annotations-2.6.3.jar
new file mode 100644
index 000000000..9bb53e875
Binary files /dev/null and b/arduino-core/lib/jackson-annotations-2.6.3.jar differ
diff --git a/arduino-core/lib/jackson-core-2.2.3.jar b/arduino-core/lib/jackson-core-2.2.3.jar
deleted file mode 100644
index 24318a464..000000000
Binary files a/arduino-core/lib/jackson-core-2.2.3.jar and /dev/null differ
diff --git a/arduino-core/lib/jackson-core-2.6.3.jar b/arduino-core/lib/jackson-core-2.6.3.jar
new file mode 100644
index 000000000..e1ec916dd
Binary files /dev/null and b/arduino-core/lib/jackson-core-2.6.3.jar differ
diff --git a/arduino-core/lib/jackson-databind-2.2.3.jar b/arduino-core/lib/jackson-databind-2.2.3.jar
deleted file mode 100644
index 854508478..000000000
Binary files a/arduino-core/lib/jackson-databind-2.2.3.jar and /dev/null differ
diff --git a/arduino-core/lib/jackson-databind-2.6.3.jar b/arduino-core/lib/jackson-databind-2.6.3.jar
new file mode 100644
index 000000000..e60f9fe1a
Binary files /dev/null and b/arduino-core/lib/jackson-databind-2.6.3.jar differ
diff --git a/arduino-core/lib/jackson-module-mrbean-2.2.3.jar b/arduino-core/lib/jackson-module-mrbean-2.2.3.jar
deleted file mode 100644
index a4a3b738e..000000000
Binary files a/arduino-core/lib/jackson-module-mrbean-2.2.3.jar and /dev/null differ
diff --git a/arduino-core/lib/jackson-module-mrbean-2.6.3.jar b/arduino-core/lib/jackson-module-mrbean-2.6.3.jar
new file mode 100644
index 000000000..69cc60a58
Binary files /dev/null and b/arduino-core/lib/jackson-module-mrbean-2.6.3.jar differ
diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java
index 464650bba..5e5e321b2 100644
--- a/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java
+++ b/arduino-core/src/cc/arduino/contributions/packages/ContributedPlatform.java
@@ -30,11 +30,9 @@
package cc.arduino.contributions.packages;
import cc.arduino.contributions.DownloadableContribution;
+import com.fasterxml.jackson.annotation.JsonIgnore;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
+import java.util.*;
public abstract class ContributedPlatform extends DownloadableContribution {
@@ -54,18 +52,21 @@ public abstract class ContributedPlatform extends DownloadableContribution {
public abstract ContributedHelp getHelp();
- private List resolvedTools;
+ private Map resolvedToolReferences;
+
private ContributedPackage parentPackage;
public List getResolvedTools() {
- if (resolvedTools == null) {
- return null;
- }
- return new LinkedList<>(resolvedTools);
+ return new LinkedList<>(resolvedToolReferences.values());
+ }
+
+ @JsonIgnore
+ public Map getResolvedToolReferences() {
+ return resolvedToolReferences;
}
public void resolveToolsDependencies(Collection packages) {
- resolvedTools = new ArrayList<>();
+ resolvedToolReferences = new HashMap<>();
// If there are no dependencies return empty list
if (getToolsDependencies() == null) {
@@ -79,7 +80,7 @@ public abstract class ContributedPlatform extends DownloadableContribution {
if (tool == null) {
System.err.println("Index error: could not find referenced tool " + dep);
} else {
- resolvedTools.add(tool);
+ resolvedToolReferences.put(dep, tool);
}
}
}
diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java
index 194029f49..8d7e8c1f0 100644
--- a/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java
+++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionInstaller.java
@@ -52,6 +52,8 @@ import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.*;
import java.util.stream.Collectors;
@@ -122,26 +124,31 @@ public class ContributionInstaller {
// once everything is successfully unpacked. If the operation fails remove
// all the temporary folders and abort installation.
- // Unzip tools on the correct location
- File toolsFolder = new File(packageFolder, "tools");
+ List> resolvedToolReferences = contributedPlatform.getResolvedToolReferences().entrySet()
+ .stream()
+ .filter((entry) -> !entry.getValue().getDownloadableContribution(platform).isInstalled())
+ .collect(Collectors.toList());
+
+
int i = 1;
- for (ContributedTool tool : tools) {
- progress.setStatus(format(tr("Installing tools ({0}/{1})..."), i, tools.size()));
+ for (Map.Entry entry : resolvedToolReferences) {
+ progress.setStatus(format(tr("Installing tools ({0}/{1})..."), i, resolvedToolReferences.size()));
progressListener.onProgress(progress);
i++;
+ ContributedTool tool = entry.getValue();
DownloadableContribution toolContrib = tool.getDownloadableContribution(platform);
- File destFolder = new File(toolsFolder, tool.getName() + File.separator + tool.getVersion());
+ Path destFolder = Paths.get(indexer.getPackagesFolder().getAbsolutePath(), entry.getKey().getPackager(), "tools", tool.getName(), tool.getVersion());
- Files.createDirectories(destFolder.toPath());
+ Files.createDirectories(destFolder);
assert toolContrib.getDownloadedFile() != null;
- new ArchiveExtractor(platform).extract(toolContrib.getDownloadedFile(), destFolder, 1);
+ new ArchiveExtractor(platform).extract(toolContrib.getDownloadedFile(), destFolder.toFile(), 1);
try {
- findAndExecutePostInstallScriptIfAny(destFolder, contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL));
+ findAndExecutePostInstallScriptIfAny(destFolder.toFile(), contributedPlatform.getParentPackage().isTrusted(), PreferencesData.getBoolean(Constants.PREF_CONTRIBUTIONS_TRUST_ALL));
} catch (IOException e) {
errors.add(tr("Error running post install script"));
}
toolContrib.setInstalled(true);
- toolContrib.setInstalledFolder(destFolder);
+ toolContrib.setInstalledFolder(destFolder.toFile());
progress.stepDone();
}
diff --git a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java
index c449e6631..d52ef0ecb 100644
--- a/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java
+++ b/arduino-core/src/cc/arduino/contributions/packages/ContributionsIndexer.java
@@ -92,7 +92,9 @@ public class ContributionsIndexer {
}
List packages = index.getPackages();
- Collection packagesWithTools = packages.stream().filter(input -> input.getTools() != null).collect(Collectors.toList());
+ Collection packagesWithTools = packages.stream()
+ .filter(input -> input.getTools() != null && !input.getTools().isEmpty())
+ .collect(Collectors.toList());
for (ContributedPackage pack : packages) {
for (ContributedPlatform platform : pack.getPlatforms()) {
diff --git a/build/windows/launcher/config.xml b/build/windows/launcher/config.xml
index 6c0c20865..7217c383e 100644
--- a/build/windows/launcher/config.xml
+++ b/build/windows/launcher/config.xml
@@ -19,10 +19,10 @@
%EXEDIR%/lib/commons-logging-1.0.4.jar
%EXEDIR%/lib/commons-net-3.3.jar
%EXEDIR%/lib/ecj.jar
- %EXEDIR%/lib/jackson-annotations-2.2.3.jar
- %EXEDIR%/lib/jackson-core-2.2.3.jar
- %EXEDIR%/lib/jackson-databind-2.2.3.jar
- %EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar
+ %EXEDIR%/lib/jackson-annotations-2.6.3.jar
+ %EXEDIR%/lib/jackson-core-2.6.3.jar
+ %EXEDIR%/lib/jackson-databind-2.6.3.jar
+ %EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar
%EXEDIR%/lib/java-semver-0.8.0.jar
%EXEDIR%/lib/jmdns-3.4.1.jar
%EXEDIR%/lib/jna-4.1.0.jar
diff --git a/build/windows/launcher/config_debug.xml b/build/windows/launcher/config_debug.xml
index dc4caac47..48a1ec73f 100644
--- a/build/windows/launcher/config_debug.xml
+++ b/build/windows/launcher/config_debug.xml
@@ -19,10 +19,10 @@
%EXEDIR%/lib/commons-logging-1.0.4.jar
%EXEDIR%/lib/commons-net-3.3.jar
%EXEDIR%/lib/ecj.jar
- %EXEDIR%/lib/jackson-annotations-2.2.3.jar
- %EXEDIR%/lib/jackson-core-2.2.3.jar
- %EXEDIR%/lib/jackson-databind-2.2.3.jar
- %EXEDIR%/lib/jackson-module-mrbean-2.2.3.jar
+ %EXEDIR%/lib/jackson-annotations-2.6.3.jar
+ %EXEDIR%/lib/jackson-core-2.6.3.jar
+ %EXEDIR%/lib/jackson-databind-2.6.3.jar
+ %EXEDIR%/lib/jackson-module-mrbean-2.6.3.jar
%EXEDIR%/lib/java-semver-0.8.0.jar
%EXEDIR%/lib/jmdns-3.4.1.jar
%EXEDIR%/lib/jna-4.1.0.jar