From 4c188c9374a197fdad42704952ae894ec04750a9 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 30 Nov 2018 12:03:15 +0100 Subject: [PATCH] PluggableDiscovery: Factored out method to umarshal BoardPort from JSON --- .../src/cc/arduino/packages/BoardPort.java | 2 +- .../discoverers/PluggableDiscovery.java | 39 ++++++++++--------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/arduino-core/src/cc/arduino/packages/BoardPort.java b/arduino-core/src/cc/arduino/packages/BoardPort.java index 3068f059c..1f5181b89 100644 --- a/arduino-core/src/cc/arduino/packages/BoardPort.java +++ b/arduino-core/src/cc/arduino/packages/BoardPort.java @@ -126,7 +126,7 @@ public class BoardPort { // If found, boardName is set to the name from boards.txt // and the board is returned. If not found, null is returned. public TargetBoard searchMatchingBoard() { - if (identificationPrefs.isEmpty()) return null; + if (identificationPrefs == null || identificationPrefs.isEmpty()) return null; for (TargetPackage targetPackage : BaseNoGui.packages.values()) { for (TargetPlatform targetPlatform : targetPackage.getPlatforms().values()) { for (TargetBoard board : targetPlatform.getBoards().values()) { diff --git a/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java index 7123b6d40..bbeabff20 100644 --- a/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java +++ b/arduino-core/src/cc/arduino/packages/discoverers/PluggableDiscovery.java @@ -141,13 +141,9 @@ public class PluggableDiscovery implements Discovery { portList.clear(); portsNode.forEach(portNode -> { - try { - BoardPort port = mapper.treeToValue(portNode, BoardPort.class); - port.searchMatchingBoard(); + BoardPort port = mapJsonNodeToBoardPort(mapper, node); + if (port != null) { addOrUpdate(port); - } catch (JsonProcessingException e) { - System.err.println(format("{0}: Invalid BoardPort message", discoveryName)); - e.printStackTrace(); } }); return; @@ -155,23 +151,16 @@ public class PluggableDiscovery implements Discovery { // Messages for SYNC updates case "add": - try { - BoardPort port = mapper.treeToValue(node.get("port"), BoardPort.class); - port.searchMatchingBoard(); - addOrUpdate(port); - } catch (JsonProcessingException e) { - System.err.println(format("{0}: Invalid BoardPort message", discoveryName)); - e.printStackTrace(); + BoardPort addedPort = mapJsonNodeToBoardPort(mapper, node); + if (addedPort != null) { + addOrUpdate(addedPort); } return; case "remove": - try { - BoardPort port = mapper.treeToValue(node.get("port"), BoardPort.class); - remove(port); - } catch (JsonProcessingException e) { - System.err.println(format("{0}: Invalid BoardPort message", discoveryName)); - e.printStackTrace(); + BoardPort removedPort = mapJsonNodeToBoardPort(mapper, node); + if (removedPort != null) { + remove(removedPort); } return; @@ -181,6 +170,18 @@ public class PluggableDiscovery implements Discovery { } } + private BoardPort mapJsonNodeToBoardPort(ObjectMapper mapper, JsonNode node) { + try { + BoardPort port = mapper.treeToValue(node.get("port"), BoardPort.class); + port.searchMatchingBoard(); + return port; + } catch (JsonProcessingException e) { + System.err.println(format("{0}: Invalid BoardPort message", discoveryName)); + e.printStackTrace(); + return null; + } + } + @Override public void start() throws Exception { try {