diff options
author | crogers | 2010-04-23 15:30:01 +0000 |
---|---|---|
committer | crogers | 2010-04-23 15:30:01 +0000 |
commit | 5baab7801db557095768c216f12695d143361bff (patch) | |
tree | 6ab5e1be9fcc38a353260c326cf00ec50b1993de | |
parent | 7e95d318c35fbc148354460261461260a0cb6421 (diff) | |
download | webtools.jsf-5baab7801db557095768c216f12695d143361bff.tar.gz webtools.jsf-5baab7801db557095768c216f12695d143361bff.tar.xz webtools.jsf-5baab7801db557095768c216f12695d143361bff.zip |
[Bug 310169] - Null JSFAppConfigManager instance causes validating EL failure
-rw-r--r-- | jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/internal/JSFAppConfigManagerFactory.java | 60 |
1 files changed, 7 insertions, 53 deletions
diff --git a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/internal/JSFAppConfigManagerFactory.java b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/internal/JSFAppConfigManagerFactory.java index 447bde1cb..401dc484a 100644 --- a/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/internal/JSFAppConfigManagerFactory.java +++ b/jsf/plugins/org.eclipse.jst.jsf.core/src/org/eclipse/jst/jsf/core/jsfappconfig/internal/JSFAppConfigManagerFactory.java @@ -1,15 +1,7 @@ package org.eclipse.jst.jsf.core.jsfappconfig.internal; import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.IWorkspace; -import org.eclipse.core.resources.IWorkspaceRunnable; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.QualifiedName; -import org.eclipse.core.runtime.jobs.ISchedulingRule; -import org.eclipse.core.runtime.jobs.Job; import org.eclipse.jst.jsf.common.internal.resource.ResourceSingletonObjectManager; import org.eclipse.jst.jsf.common.internal.strategy.AbstractTestableExtensibleDefaultProviderSelectionStrategy; import org.eclipse.jst.jsf.core.internal.JSFCorePlugin; @@ -25,7 +17,6 @@ public class JSFAppConfigManagerFactory ResourceSingletonObjectManager<IJSFAppConfigManager, IProject>{ private static JSFAppConfigManagerFactory INSTANCE; - private static final Object LOCK = new Object(); //private constructor private JSFAppConfigManagerFactory(final IProject project) { @@ -40,53 +31,16 @@ public class JSFAppConfigManagerFactory public static final QualifiedName TESTABLE_FACTORY_SESSION_KEY = new QualifiedName(JSFCorePlugin.PLUGIN_ID, "JSFAppConfigManagerFactoryInstance"); //$NON-NLS-1$ /** - * Note: to avoid possible deadlocks during the construction and - * initialization of an instance, this method runs with a project - * scheduling rule before trying to synchronize. - * * @param project * @return IJSFAppConfigManager */ - public static IJSFAppConfigManager getJSFAppConfigManagerInstance(final IProject project) { - final IJSFAppConfigManager jsfAppConfigMgr[] = {null}; - IProgressMonitor monitor = new NullProgressMonitor(); - - try { - // to avoid a possible deadlock issue, ensure there's a - // scheduling rule (at least for the project) applied - // before synchronizing to create and initialize the - // actual IJSFAppConfigManager instance. - IWorkspaceRunnable runnable= new IWorkspaceRunnable() { - public void run(IProgressMonitor pm) throws CoreException { - synchronized (LOCK) { - try { - jsfAppConfigMgr[0] = getJSFAppConfigManagerFactoryInstance(project).getInstance(project); - } catch (ManagedObjectException e) { - JSFCorePlugin.log(e, "Cannot create IJSFAppConfigManager for " + project.getName() + " (1)"); //$NON-NLS-1$ //$NON-NLS-2$ - } - } - } - }; - - ISchedulingRule currentRule = Job.getJobManager().currentRule(); - if (currentRule != null) { - if (currentRule.contains(project)) { - runnable.run(monitor); - return jsfAppConfigMgr[0]; - } else if (currentRule.isConflicting(project)) { - // we can't expand an existing rule, return null - return null; - } - } - - IWorkspace workspace = ResourcesPlugin.getWorkspace(); - workspace.run(runnable, project, IWorkspace.AVOID_UPDATE, monitor); - } catch(CoreException ce) { - //log error - JSFCorePlugin.log(ce, "Cannot create IJSFAppConfigManager for " + project.getName() + " (1)"); //$NON-NLS-1$ //$NON-NLS-2$ - } - - return jsfAppConfigMgr[0]; + public synchronized static IJSFAppConfigManager getJSFAppConfigManagerInstance(final IProject project) { + try { + return getJSFAppConfigManagerFactoryInstance(project).getInstance(project); + } catch (ManagedObjectException e) { + JSFCorePlugin.log(e, "Cannot create IJSFAppConfigManager for "+project.getName()+ " (1)"); //$NON-NLS-1$ //$NON-NLS-2$ + } + return null; } private static JSFAppConfigManagerFactory getJSFAppConfigManagerFactoryInstance(final IProject project) { |