blob: 9cba9dc3e6e4fad27c4c21d87992d613b4423d30 [file] [log] [blame]
package org.eclipse.jst.jsf.core.jsfappconfig;
import java.util.List;
import java.util.Set;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jst.jsf.common.internal.managedobject.ObjectManager.ManagedObjectException;
import org.eclipse.jst.jsf.common.internal.resource.ResourceSingletonObjectManager;
import org.eclipse.jst.jsf.core.internal.JSFCorePlugin;
import org.eclipse.jst.jsf.core.jsfappconfig.internal.AbstractJSFAppConfigManager;
import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigType;
/**
* Default JSF AppConfig Manager
* <p>
* Mostly represents a merged representation of the Faces Configuration that the runtime would see
* <p>
* @deprecated - Helios
*/
public class JSFAppConfigManager
extends AbstractJSFAppConfigManager{
/**
* UNUSED - here only for compatibility with original
*/
public static final QualifiedName KEY_SESSIONPROPERTY =
new QualifiedName(JSFCorePlugin.PLUGIN_ID, "JSFAppConfigManager"); //$NON-NLS-1$
/**
* Constructor
* @param project
*
*/
private JSFAppConfigManager(final IProject project) {
super(project);
}
private static JSFAppConfigManagerFactory FACTORY = new JSFAppConfigManagerFactory();
/**
* @param project
* @return JSFAppConfigManager
* @deprecated
*/
public static JSFAppConfigManager getInstance(final IProject project) {
try {
return FACTORY.getInstance(project);
} catch (ManagedObjectException e) {
JSFCorePlugin.log(e, "Failed to get JSFAppConfigManager instance for "+project.getName()); //$NON-NLS-1$
}
return null;
}
/**
* @return Set of {@link IJSFAppConfigProvider}s
* @deprecated - SHOULD NOT USE
*/
public Set getJSFAppConfigProviders() {
return super.getJSFAppConfigProviders();
}
/**
* Gets all {@link FacesConfigType} instances from all
* {@link IJSFAppConfigProvider} instances.
*
* @return List of all {@link FacesConfigType} instances.
* @deprecated - SHOULD NOT USE
*/
public List getFacesConfigModels() {
return super.getFacesConfigModels();
}
public List getManagedBeans() {
return super.getManagedBeans();
}
public List getValidators() {
return super.getValidators();
}
public List getConverters() {
return super.getConverters();
}
public List getNavigationRules() {
return super.getNavigationRules();
}
public List getNavigationRulesForPage(final IFile pageFile) {
return super.getNavigationRulesForPage(pageFile);
}
public List getApplications() {
return super.getApplications();
}
public List getFactories() {
return super.getFactories();
}
public List getComponents() {
return super.getComponents();
}
public List getReferencedBeans() {
return super.getReferencedBeans();
}
public List getRenderKits() {
return super.getRenderKits();
}
public List getLifecycles() {
return super.getLifecycles();
}
public List getResourceBundles() {
return super.getResourceBundles();
}
public List getFacesConfigExtensions() {
return super.getFacesConfigExtensions();
}
private static class JSFAppConfigManagerFactory
extends ResourceSingletonObjectManager<JSFAppConfigManager, IProject> {
@Override
protected IAdaptable unsafeRunBeforeGetInstance(IProject project) {
super.unsafeRunBeforeGetInstance(project);
if (!isInstance(project) && Job.getJobManager().currentRule() == null) {
//Acquire a scheduling rule on the project so creation of a JSFAppConfigManager
//does not attempt to acquire a rule which may be unavailable while still
//synchronized on the ResourceSingletonObjectManager (JSFAppConfigManagerFactory)
Job.getJobManager().beginRule(project, null);
return new AdaptableBoolean(true);
}
return null;
}
@Override
protected void unsafeRunAfterGetInstance(IProject project, IAdaptable stateObject) {
super.unsafeRunAfterGetInstance(project, stateObject);
if (stateObject instanceof AdaptableBoolean && ((AdaptableBoolean)stateObject).acquiredRule) {
Job.getJobManager().endRule(project);
}
}
protected JSFAppConfigManagerFactory() {
super(ResourcesPlugin.getWorkspace());
}
@Override
protected JSFAppConfigManager createNewInstance(final IProject project) {
return new JSFAppConfigManager(project);
}
private static class AdaptableBoolean implements IAdaptable {
private final boolean acquiredRule;
public AdaptableBoolean(boolean acquiredRule) {
this.acquiredRule = acquiredRule;
}
public Object getAdapter(Class adapter) {
return null;
}
}
}
}