Author: kono
Date: 2011-05-10 11:16:01 -0700 (Tue, 10 May 2011)
New Revision: 24997

Modified:
   
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
Log:
Fixed infinite loop problem.

Modified: 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
===================================================================
--- 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
  2011-05-10 18:10:08 UTC (rev 24996)
+++ 
core3/io-impl/trunk/src/main/java/org/cytoscape/io/internal/read/sif/SIFNetworkReader.java
  2011-05-10 18:16:01 UTC (rev 24997)
@@ -48,6 +48,8 @@
 import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.TaskMonitor;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -66,6 +68,8 @@
 
        private final CyEventHelper eventHelper;
        private final CyLayoutAlgorithmManager layouts;
+       
+       private TaskMonitor parentTaskMonitor;
 
        public SIFNetworkReader(InputStream is, CyLayoutAlgorithmManager 
layouts,
                        CyNetworkViewFactory cyNetworkViewFactory, 
CyNetworkFactory cyNetworkFactory,
@@ -88,6 +92,7 @@
        }
 
        private void readInput(TaskMonitor tm) throws IOException {
+               this.parentTaskMonitor = tm;
                tm.setProgress(0.0);
 
                String line;
@@ -175,8 +180,14 @@
                final CyLayoutAlgorithm layout = layouts.getDefaultLayout();
                layout.setNetworkView(view);
                
-               // FIXME: this causes infinite loop...Why?
-               //insertTasksAfterCurrentTask(layout.getTaskIterator());
+               // Force to run this task here to avoid concurrency problem.
+               TaskIterator itr = layout.getTaskIterator();
+               Task nextTask = itr.next();
+               try {
+                       nextTask.run(parentTaskMonitor);
+               } catch (Exception e) {
+                       throw new RuntimeException("Could not finish layout", 
e);
+               }
 
                return view;
        }

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to