| package org.eclipse.jst.jsf.facelet.core.internal.registry.taglib; |
| |
| import java.util.List; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.jst.jsf.common.internal.pde.AbstractSimpleClassExtensionRegistryReader; |
| import org.eclipse.jst.jsf.common.internal.strategy.ISimpleStrategy; |
| import org.eclipse.jst.jsf.core.jsfappconfig.internal.IJSFAppConfigManager; |
| import org.eclipse.jst.jsf.facelet.core.internal.FaceletCorePlugin; |
| |
| /** |
| * Extension-based strategy for returning {@link IJSFAppConfigManager}s |
| * |
| */ |
| public class ExtensionBasedTagDescriptorFactoryProviderStrategy implements |
| ISimpleStrategy<IProject, IProjectTaglibDescriptorFactory> |
| { |
| private static IProjectTaglibDescriptorFactory EXT_PT_BASED_FACTORY; |
| static |
| { |
| final ProjectTaglibDescriptorFactoryExtensionPointReader reader = new ProjectTaglibDescriptorFactoryExtensionPointReader(); |
| final List<IProjectTaglibDescriptorFactory> res = reader |
| .getExtensions(); |
| if (res != null && res.size() > 0) |
| {// return first |
| EXT_PT_BASED_FACTORY = res.get(0); |
| } |
| } |
| |
| public IProjectTaglibDescriptorFactory perform(final IProject input) |
| throws Exception |
| { |
| return EXT_PT_BASED_FACTORY != null ? EXT_PT_BASED_FACTORY |
| : getNoResult(); |
| } |
| |
| private static class ProjectTaglibDescriptorFactoryExtensionPointReader |
| extends |
| AbstractSimpleClassExtensionRegistryReader<IProjectTaglibDescriptorFactory> |
| { |
| private static final String EXT_PT_ID = "projectTaglibDescriptorFactory"; //$NON-NLS-1$ |
| private static final String EXT_PT_ELEMENT = "factory"; //$NON-NLS-1$ |
| private static final String EXT_PT_ATTR = "class"; //$NON-NLS-1$ |
| |
| protected ProjectTaglibDescriptorFactoryExtensionPointReader() |
| { |
| super( |
| FaceletCorePlugin.PLUGIN_ID, |
| EXT_PT_ID, |
| EXT_PT_ELEMENT, |
| EXT_PT_ATTR, |
| new CompareOrgEclipseJstContributorsLastComparator<IProjectTaglibDescriptorFactory>()); |
| } |
| |
| @Override |
| protected void handleLoadFailure(final CoreException ce) |
| { |
| org.eclipse.jst.jsf.core.internal.JSFCorePlugin |
| .log(ce, |
| "Error loading ProjectTaglibDescriptorFactory from extension"); //$NON-NLS-1$ |
| } |
| } |
| |
| public IProjectTaglibDescriptorFactory getNoResult() |
| { |
| return null; |
| } |
| } |