Lines 25-30
Link Here
|
25 |
import org.eclipse.core.runtime.ISafeRunnable; |
25 |
import org.eclipse.core.runtime.ISafeRunnable; |
26 |
import org.eclipse.core.runtime.Path; |
26 |
import org.eclipse.core.runtime.Path; |
27 |
import org.eclipse.core.runtime.SafeRunner; |
27 |
import org.eclipse.core.runtime.SafeRunner; |
|
|
28 |
import org.eclipse.core.runtime.jobs.ILock; |
28 |
import org.eclipse.jem.util.RegistryReader; |
29 |
import org.eclipse.jem.util.RegistryReader; |
29 |
import org.eclipse.jem.util.emf.workbench.ISynchronizerExtender; |
30 |
import org.eclipse.jem.util.emf.workbench.ISynchronizerExtender; |
30 |
import org.eclipse.jem.util.emf.workbench.ProjectResourceSet; |
31 |
import org.eclipse.jem.util.emf.workbench.ProjectResourceSet; |
Lines 37-42
Link Here
|
37 |
import org.eclipse.wst.common.componentcore.internal.resources.VirtualFolder; |
38 |
import org.eclipse.wst.common.componentcore.internal.resources.VirtualFolder; |
38 |
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; |
39 |
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; |
39 |
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; |
40 |
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder; |
|
|
41 |
import org.eclipse.wst.common.internal.emfworkbench.edit.EMFWorkbenchEditContextFactory; |
40 |
import org.eclipse.wst.common.project.facet.core.IFacetedProject; |
42 |
import org.eclipse.wst.common.project.facet.core.IFacetedProject; |
41 |
import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
43 |
import org.eclipse.wst.common.project.facet.core.IProjectFacet; |
42 |
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
44 |
import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; |
Lines 211-223
Link Here
|
211 |
} |
213 |
} |
212 |
|
214 |
|
213 |
IComponentImplFactory factory = findFactoryForProject(project, descriptors); |
215 |
IComponentImplFactory factory = findFactoryForProject(project, descriptors); |
|
|
216 |
// acquire the lock that StructureEdit will need already, to prevent others from locking that before calling createComponent() - see bug 508685 |
214 |
if(null != factory){ |
217 |
if(null != factory){ |
215 |
component = factory.createComponent(project); |
218 |
ILock lock = EMFWorkbenchEditContextFactory.getProjectLockObject(project); |
216 |
if(component != null) { |
219 |
try{ |
217 |
ComponentCacheManager.instance().setComponent(project, component); |
220 |
if(null != lock){ |
218 |
registerListener(project); |
221 |
lock.acquire(); |
|
|
222 |
} |
223 |
component = factory.createComponent(project); |
224 |
if(component != null) { |
225 |
ComponentCacheManager.instance().setComponent(project, component); |
226 |
registerListener(project); |
227 |
} |
228 |
return component; |
229 |
} finally{ |
230 |
if(null != lock){ |
231 |
lock.release(); |
232 |
} |
219 |
} |
233 |
} |
220 |
return component; |
|
|
221 |
} |
234 |
} |
222 |
} catch (Exception e) { |
235 |
} catch (Exception e) { |
223 |
// Just return a default component |
236 |
// Just return a default component |