From 49823a0d8f512d68b837ddfdbbbe46bb8b794350 Mon Sep 17 00:00:00 2001 From: Jakub Valtar Date: Tue, 3 May 2016 12:16:58 +0200 Subject: [PATCH] ECS: make library lookup thread safe --- app/src/processing/app/Mode.java | 7 ++++++- .../src/processing/mode/java/pdex/ErrorCheckerService.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/src/processing/app/Mode.java b/app/src/processing/app/Mode.java index 06b7bb057a..71d31db9bd 100644 --- a/app/src/processing/app/Mode.java +++ b/app/src/processing/app/Mode.java @@ -282,7 +282,7 @@ public File getReferenceFolder() { public void rebuildLibraryList() { //new Exception("Rebuilding library list").printStackTrace(System.out); // reset the table mapping imports to libraries - importToLibraryTable = new HashMap>(); + HashMap> importToLibraryTable = new HashMap<>(); Library core = getCoreLibrary(); if (core != null) { @@ -323,6 +323,11 @@ public void rebuildLibraryList() { for (Library lib : contribLibraries) { lib.addPackageList(importToLibraryTable); } + + // Make this Map thread-safe + this.importToLibraryTable = Collections.unmodifiableMap(importToLibraryTable); + + base.getEditors().forEach(Editor::librariesChanged); } diff --git a/java/src/processing/mode/java/pdex/ErrorCheckerService.java b/java/src/processing/mode/java/pdex/ErrorCheckerService.java index ec5d2d4c30..6fa7c6b307 100644 --- a/java/src/processing/mode/java/pdex/ErrorCheckerService.java +++ b/java/src/processing/mode/java/pdex/ErrorCheckerService.java @@ -703,7 +703,7 @@ private List buildSketchLibraryClassPath(JavaMode mode, .filter(pckg -> !ignorableImport(pckg)) .map(pckg -> { try { - return mode.getLibrary(pckg); // TODO: this may not be thread-safe + return mode.getLibrary(pckg); } catch (SketchException e) { return null; }