| package org.eclipse.jst.jsf.core.jsfappconfig.internal; |
| |
| 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; |
| |
| /** |
| * Extension-based strategy for returning {@link IJSFAppConfigManager}s |
| * |
| */ |
| public class ExtensionBasedJSFAppConfigManagerProviderStrategy extends |
| AbstractJSFAppConfigManagerProviderStrategy { |
| |
| private static IJSFAppConfigManagerFactory EXT_PT_BASED_FACTORY; |
| static { |
| final JSFAppConfigManagerFactoryExtensionPointReader reader = new JSFAppConfigManagerFactoryExtensionPointReader(); |
| final List<IJSFAppConfigManagerFactory> res = reader.getExtensions(); |
| if (res != null && res.size() > 0) {//return first |
| EXT_PT_BASED_FACTORY = res.get(0); |
| } |
| } |
| |
| public IJSFAppConfigManagerFactory perform(final IProject input) throws Exception { |
| return EXT_PT_BASED_FACTORY != null ? EXT_PT_BASED_FACTORY : getNoResult(); |
| } |
| |
| private static class JSFAppConfigManagerFactoryExtensionPointReader extends |
| AbstractSimpleClassExtensionRegistryReader<IJSFAppConfigManagerFactory> { |
| |
| private static final String EXT_PT_ID = "jsfAppConfigManagerFactory"; //$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 JSFAppConfigManagerFactoryExtensionPointReader() { |
| super( |
| org.eclipse.jst.jsf.core.internal.JSFCorePlugin.PLUGIN_ID, |
| EXT_PT_ID, EXT_PT_ELEMENT, EXT_PT_ATTR, |
| new CompareOrgEclipseJstContributorsLastComparator<IJSFAppConfigManagerFactory>() |
| ); |
| } |
| |
| @Override |
| protected void handleLoadFailure(final CoreException ce) { |
| org.eclipse.jst.jsf.core.internal.JSFCorePlugin.log(ce, |
| "Error loading JSFAppConfigLocatorProvider from extension"); //$NON-NLS-1$ |
| |
| } |
| |
| } |
| |
| } |