Skip to content

Commit c7c6417

Browse files
committed
Add tests for json validation when creating genome list. Fixes igvteam#1022
1 parent 2397a2f commit c7c6417

File tree

1 file changed

+14
-11
lines changed

1 file changed

+14
-11
lines changed

src/main/java/org/broad/igv/ui/commandbar/GenomeListManager.java

+14-11
Original file line numberDiff line numberDiff line change
@@ -252,19 +252,22 @@ private static Map<String, GenomeListItem> getCachedGenomeList() {
252252
try {
253253
BufferedReader reader = new BufferedReader(new FileReader(file));
254254
JsonParser parser = new JsonParser();
255-
JsonObject json = parser.parse(reader).getAsJsonObject();
256-
JsonElement id = json.get("id");
257-
JsonElement name = json.get("name");
258-
JsonElement fastaURL = json.get("fastaURL");
259-
if (id != null && name != null && fastaURL != null) {
260-
if (cachedGenomes.containsKey(id.getAsString())) {
261-
File prevFile = new File(cachedGenomes.get(id.getAsString()).getPath());
262-
prevFile.delete();
255+
JsonElement rootElement = parser.parse(reader);
256+
if (rootElement.isJsonObject()) {
257+
JsonObject json = rootElement.getAsJsonObject();
258+
JsonElement id = json.get("id");
259+
JsonElement name = json.get("name");
260+
JsonElement fastaURL = json.get("fastaURL");
261+
if (id != null && name != null && fastaURL != null) {
262+
if (cachedGenomes.containsKey(id.getAsString())) {
263+
File prevFile = new File(cachedGenomes.get(id.getAsString()).getPath());
264+
prevFile.delete();
265+
}
266+
GenomeListItem item = new GenomeListItem(name.getAsString(), file.getAbsolutePath(), id.getAsString());
267+
cachedGenomes.put(item.getId(), item);
263268
}
264-
GenomeListItem item = new GenomeListItem(name.getAsString(), file.getAbsolutePath(), id.getAsString());
265-
cachedGenomes.put(item.getId(), item);
266269
}
267-
} catch (FileNotFoundException e) {
270+
} catch (Exception e) {
268271
log.error("Error parsing genome json: " + file.getAbsolutePath(), e);
269272
}
270273
}

0 commit comments

Comments
 (0)