View | Details | Raw Unified | Return to bug 508685 | Differences between
and this patch

Collapse All | Expand All

(-)modulecore-src/org/eclipse/wst/common/componentcore/internal/util/ComponentImplManager.java (-5 / +18 lines)
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

Return to bug 508685