Skip to content

Commit 43b376d

Browse files
committed
Avoid potential crash due to race condition on session load.
1 parent e5fbfb0 commit 43b376d

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

EnrichmentMapPlugin/src/main/java/org/baderlab/csplugins/enrichmentmap/actions/EnrichmentMapSessionAction.java

Lines changed: 27 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ public void handleEvent(SessionLoadedEvent e) {
6868
return;
6969
}
7070

71+
Map<Long,EnrichmentMap> enrichmentMaps = new HashMap<>();
72+
7173
List<File> pStateFileList = e.getLoadedSession().getAppFileListMap().get(appName);
7274
try {
7375
//go through the prop files first to create the correct objects to be able
@@ -109,8 +111,8 @@ public void handleEvent(SessionLoadedEvent e) {
109111
em.addDataset(current_dataset, new DataSet(em,current_dataset,files.get(current_dataset)));
110112
}
111113

112-
//register network and parameters
113-
EnrichmentMapManager.getInstance().registerNetwork(getNetworkByName(name),em);
114+
CyNetwork network = getNetworkByName(name);
115+
enrichmentMaps.put(network.getSUID(), em);
114116
}
115117
}
116118
//go through the rest of the files
@@ -123,7 +125,7 @@ public void handleEvent(SessionLoadedEvent e) {
123125
continue;
124126

125127
CyNetwork net = getNetworkByName(parts.name);
126-
EnrichmentMap em = (net != null) ? EnrichmentMapManager.getInstance().getMap(net.getSUID()) : null;
128+
EnrichmentMap em = net == null ? null : enrichmentMaps.get(net.getSUID());
127129

128130
if(em == null)
129131
System.out.println("network for file" + prop_file.getName() + " does not exist.");
@@ -302,7 +304,7 @@ else if((file_name_tokens.length == 4) && (file_name_tokens[1].equals("Dataset 1
302304
if((parts_exp == null) || (parts_exp.name == null) )continue;
303305

304306
CyNetwork net = getNetworkByName(parts_exp.name);
305-
EnrichmentMap map = (net != null) ? EnrichmentMapManager.getInstance().getMap(net.getSUID()) : null;
307+
EnrichmentMap map = net == null ? null : enrichmentMaps.get(net.getSUID());
306308
Map<String,String> props = map.getParams().getProps();
307309

308310
if(parts_exp.type != null && parts_exp.type.equalsIgnoreCase("expression")){
@@ -349,18 +351,13 @@ else if((file_name_tokens.length == 4) && (file_name_tokens[1].equals("Dataset 1
349351
*/
350352

351353
//register the action listeners for all the networks.
352-
EnrichmentMapManager manager = EnrichmentMapManager.getInstance();
353-
manager.registerServices();
354-
HashMap<Long, EnrichmentMap> networks = manager.getCyNetworkList();
355354

356355
//iterate over the networks
357-
for(Iterator<Long> j = networks.keySet().iterator();j.hasNext();){
356+
for(Iterator<Long> j = enrichmentMaps.keySet().iterator(); j.hasNext();){
358357
Long id = j.next();
359-
CyNetwork currentNetwork = cyNetworkManager.getNetwork(id);
360-
EnrichmentMap map = manager.getMap(id);
358+
EnrichmentMap map = enrichmentMaps.get(id);
361359
//only initialize objects if there is a map for this network
362360
if(map != null){
363-
364361
if(map.getDatasets().size() > 1) {
365362
HashSet<Integer> dataset1_genes = map.getDatasets().get(EnrichmentMap.DATASET1).getDatasetGenes();
366363
HashSet<Integer> dataset2_genes = map.getDatasets().get(EnrichmentMap.DATASET2).getDatasetGenes();
@@ -383,20 +380,30 @@ else if((file_name_tokens.length == 4) && (file_name_tokens[1].equals("Dataset 1
383380
if (! map.getSignatureGenesets().isEmpty()){
384381
ComputeSimilarityTask sigSimilarities = new ComputeSimilarityTask(map, ComputeSimilarityTask.SIGNATURE);
385382
HashMap<String, GenesetSimilarity> sig_similarity_results = sigSimilarities.computeGenesetSimilarities(null);
386-
387383
map.getGenesetSimilarity().putAll(sig_similarity_results);
388384
}
389-
390-
//set the last network to be the one viewed and initialize the parameters panel
391-
if(!j.hasNext()){
392-
cyApplicationManager.setCurrentNetwork(currentNetwork);
393-
ParametersPanel paramPanel = manager.getParameterPanel();
394-
paramPanel.updatePanel(map);
395-
paramPanel.revalidate();
396-
}
397385
}//end of if(map != null)
398386
}
399387

388+
389+
// Register the enrichment maps
390+
EnrichmentMapManager manager = EnrichmentMapManager.getInstance();
391+
manager.registerServices();
392+
393+
for(Iterator<Long> j = enrichmentMaps.keySet().iterator(); j.hasNext();) {
394+
Long id = j.next();
395+
CyNetwork currentNetwork = cyNetworkManager.getNetwork(id);
396+
EnrichmentMap map = enrichmentMaps.get(id);
397+
manager.registerNetwork(currentNetwork, map);
398+
399+
if(!j.hasNext()) {
400+
//set the last network to be the one viewed and initialize the parameters panel
401+
cyApplicationManager.setCurrentNetwork(currentNetwork);
402+
ParametersPanel paramPanel = manager.getParameterPanel();
403+
paramPanel.updatePanel(map);
404+
paramPanel.revalidate();
405+
}
406+
}
400407
} catch (Exception ee) {
401408
ee.printStackTrace();
402409
}

0 commit comments

Comments
 (0)