You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ds...@apache.org on 2010/03/26 14:17:34 UTC

svn commit: r927834 - /felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java

Author: dsavage
Date: Fri Mar 26 13:17:34 2010
New Revision: 927834

URL: http://svn.apache.org/viewvc?rev=927834&view=rev
Log:
run project setup outside of synchronized block to avoid potential deadlock

Modified:
    felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java

Modified: felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java
URL: http://svn.apache.org/viewvc/felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java?rev=927834&r1=927833&r2=927834&view=diff
==============================================================================
--- felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java (original)
+++ felix/trunk/sigil/eclipse/core/src/org/apache/felix/sigil/eclipse/internal/model/project/SigilProject.java Fri Mar 26 13:17:34 2010
@@ -392,11 +392,13 @@ public class SigilProject extends Abstra
     {
         ISigilBundle b = null;
         
-        synchronized ( bldProjectFile )
+        try
         {
-            if ( bundle == null )
+            boolean newProject = false;
+            
+            synchronized ( bldProjectFile )
             {
-                try
+                if ( bundle == null )
                 {
                     if ( bldProjectFile.getLocation().toFile().exists() )
                     {
@@ -405,18 +407,22 @@ public class SigilProject extends Abstra
                     else
                     {
                         bundle = setupDefaults();
-                        NullProgressMonitor npm = new NullProgressMonitor();
-                        bldProjectFile.create( buildContents(), true /* force */, npm );
-                        project.refreshLocal( IResource.DEPTH_INFINITE, npm );
+                        newProject = true;
                     }
                 }
-                catch ( CoreException e )
-                {
-                    SigilCore.error( "Failed to build bundle", e );
-                }
+
+                b = bundle;
+            }
+
+            if ( newProject ) {
+                NullProgressMonitor npm = new NullProgressMonitor();
+                bldProjectFile.create( buildContents(), true /* force */, npm );
+                project.refreshLocal( IResource.DEPTH_ONE, npm );
             }
-            
-            b = bundle;
+        }
+        catch ( CoreException e )
+        {
+            SigilCore.error( "Failed to build bundle", e );
         }
         
         return b;
@@ -633,10 +639,6 @@ public class SigilProject extends Abstra
 
     private ISigilBundle parseContents( IFile projectFile ) throws CoreException
     {
-        /*if ( !projectFile.isSynchronized(IResource.DEPTH_ONE) ) {
-        	projectFile.refreshLocal(IResource.DEPTH_ONE, new NullProgressMonitor());
-        }*/
-
         if ( projectFile.getName().equals( SigilCore.SIGIL_PROJECT_FILE ) )
         {
             return parseBldContents( projectFile.getLocationURI() );