package org.eclipse.jst.jsf.core.jsfappconfig.internal; import java.util.List; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; import org.eclipse.emf.common.notify.Notification; import org.eclipse.jst.jsf.common.internal.managedobject.IManagedObject; import org.eclipse.jst.jsf.core.jsfappconfig.IFacesConfigChangeListener; import org.eclipse.jst.jsf.core.jsfappconfig.IJSFAppConfigProvider; import org.eclipse.jst.jsf.core.jsfappconfig.IJSFAppConfigProvidersChangeListener; import org.eclipse.jst.jsf.facesconfig.emf.ApplicationType; import org.eclipse.jst.jsf.facesconfig.emf.BehaviorType; import org.eclipse.jst.jsf.facesconfig.emf.ComponentType; import org.eclipse.jst.jsf.facesconfig.emf.ConverterType; import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigExtensionType; import org.eclipse.jst.jsf.facesconfig.emf.FacesConfigType; import org.eclipse.jst.jsf.facesconfig.emf.FactoryType; import org.eclipse.jst.jsf.facesconfig.emf.LifecycleType; import org.eclipse.jst.jsf.facesconfig.emf.ManagedBeanType; import org.eclipse.jst.jsf.facesconfig.emf.NavigationRuleType; import org.eclipse.jst.jsf.facesconfig.emf.ReferencedBeanType; import org.eclipse.jst.jsf.facesconfig.emf.RenderKitType; import org.eclipse.jst.jsf.facesconfig.emf.ResourceBundleType; import org.eclipse.jst.jsf.facesconfig.emf.ValidatorType; /** * Mostly represents a web applications JSF configuration. * <p> * This is a merged view of all the faces-config elements. * * @noimplement - must extend {@link AbstractJSFAppConfigManager} */ public interface IJSFAppConfigManager extends IManagedObject{ /** * Gets this instance's IProject instance. * * @return This instance's IProject instance. */ public IProject getProject(); /** * Adds an instance of {@link IJSFAppConfigProvidersChangeListener}. * * @param listener An instance of {@link IJSFAppConfigProvidersChangeListener}. * @return true if added, else false. */ public boolean addJSFAppConfigProvidersChangeListener( IJSFAppConfigProvidersChangeListener listener); /** * Removes an instance of {@link IJSFAppConfigProvidersChangeListener}. * * @param listener an instance of {@link IJSFAppConfigProvidersChangeListener}. * @return true if removed, else false. */ public boolean removeJSFAppConfigProvidersChangeListener( IJSFAppConfigProvidersChangeListener listener); /** * Notifies all {@link IJSFAppConfigProvidersChangeListener} instances of * a change in the Set of {@link IJSFAppConfigProvider} instances. * * @param configProvider {@link IJSFAppConfigProvider} instance that has * changed. * @param eventType Event type. */ public void notifyJSFAppConfigProvidersChangeListeners( IJSFAppConfigProvider configProvider, int eventType); /** * Adds an instance of {@link IFacesConfigChangeListener}. <br> * <br> * <b>NOTE:</b> Calling this method should cause all application * configuration models to be loaded, to ensure that a * FacesConfigChangeAdapter has been added to each model * if the model is updateable. * * @param emfClass EMF class in which the listener is interested. * @param listener {@link IFacesConfigChangeListener} instance. * @return Previous {@link IFacesConfigChangeListener}, or null. */ public Object addFacesConfigChangeListener(Class emfClass, IFacesConfigChangeListener listener); /** * Removes an instance of {@link IFacesConfigChangeListener}. * * @param emfClass EMF class in which the listener was interested. * @return Removed {@link IFacesConfigChangeListener}, or null. */ public Object removeFacesConfigChangeListener(Class emfClass); /** * Notifies {@link IFacesConfigChangeListener} instances of model changes * in which they registered interest. * * @param notification EMF {@link Notification} instance that describes the * model change. */ public void notifyFacesConfigChangeListeners( Notification notification); // /** // * Gets all {@link IJSFAppConfigProvider} instances from all // * {@link IJSFAppConfigLocater} instances. // * // * @return Set of all {@link IJSFAppConfigProvider} instances. // */ // public Set<IJSFAppConfigProvider> getJSFAppConfigProviders(); // /** // * Gets all {@link FacesConfigType} instances from all // * {@link IJSFAppConfigProvider} instances. // * // * @return List of all {@link FacesConfigType} instances. // */ // public List<FacesConfigType> getFacesConfigModels(); /** * Gets list of all ManagedBeanType instances from all known faces-config * models; list may be empty. * * @return List of all ManagedBeanType instances from all known * faces-config models (list may be empty). */ public List<ManagedBeanType> getManagedBeans(); /** * @return List of all variable resolver class names registered. */ public List<String> getPropertyResolvers(); /** * Gets list of all ValidatorType instances from all known faces-config * models; list may be empty. * * @return List of all ValidatorType instances from all known faces-config * models (list may be empty). */ public List<ValidatorType> getValidators(); /** * @return List of all variable resolver class names registered. */ public List<String> getVariableResolvers(); /** * @return List of all EL resolver class names registered. */ public List<String> getELResolvers(); /** * Gets list of all ConverterType instances from all known faces-config * models; list may be empty. * * @return List of all ConverterType instances from all known faces-config * models (list may be empty). */ public List<ConverterType> getConverters(); /** * Gets list of all NavigationRuleType instances from all known * faces-config models; list may be empty. * * @return List of all NavigationRuleType instances from all known * faces-config models (list may be empty). */ public List<NavigationRuleType> getNavigationRules(); /** * Gets list of all NavigationRuleType instances from all known * faces-config models where the navigation-rule's from-view-id value * matches the web content folder-relative value of the passed IFile * instance; list may be empty. Matching is performed in the same manner * as for a JSF implementation's default NavigationHandler. * * @param pageFile IFile instance to match against the from-view-id value * of all NavigationRuleType instances. File is assumed to be relative to * the web content folder, but may be expressed in a more complete form; * its path will be calculated relative to the web content folder. * @return List of all NavigationRuleType instances from all known * faces-config models where the navigation-rule's from-view-id value * matches the web content folder-relative value of the passed IFile * instance (list may be empty). */ public List<NavigationRuleType> getNavigationRulesForPage(IFile pageFile); /** * Gets list of all ApplicationType instances from all known * faces-config models; list may be empty. * * @return List of all ApplicationType instances from all known * faces-config models (list may be empty). */ public List<ApplicationType> getApplications(); /** * Gets list of all FactoryType instances from all known faces-config * models; list may be empty. * * @return List of all FactoryType instances from all known faces-config * models (list may be empty). */ public List<FactoryType> getFactories(); /** * Gets list of all ComponentType instances from all known faces-config * models; list may be empty. * * @return List of all ComponentType instances from all known faces-config * models (list may be empty). */ public List<ComponentType> getComponents(); /** * Gets list of all ReferencedBeanType instances from all known * faces-config models; list may be empty. * * @return List of all ReferencedBeanType instances from all known * faces-config models (list may be empty). */ public List<ReferencedBeanType> getReferencedBeans(); /** * Gets list of all RenderKitType instances from all known faces-config * models; list may be empty. * * @return List of all RenderKitType instances from all known faces-config * models (list may be empty). */ public List<RenderKitType> getRenderKits(); /** * Gets list of all LifecycleType instances from all known faces-config * models; list may be empty. * * @return List of all LifecycleType instances from all known faces-config * models (list may be empty). */ public List<LifecycleType> getLifecycles(); /** * @return the list of all resource bundles declared in all the FacesConfig * configurations found. */ public List<ResourceBundleType> getResourceBundles(); /** * @return the list of faces config extensions declared in all FacesConfig * configurations found */ public List<FacesConfigExtensionType> getFacesConfigExtensions(); /* -------------------------- JSF 2.0 ---------------------------------------- */ /** * @return the list of behaviors declared in all FacesConfig configurations found */ public List<BehaviorType> getBehaviors(); //do we want ordering? /* ---------------------------------------------------------------------------- */ /** * Adds this instance's FacesConfigChangeAdapter instance to the * passed application configuration model's adapters collection. * * @param facesConfig Application configuration model's root object. */ public void addFacesConfigChangeAdapter(FacesConfigType facesConfig); /** * Removes this instance's FacesConfigChangeAdapter instance from * the passed application configuration model's adapters collection. * * @param facesConfig Application configuration model's root object. */ public void removeFacesConfigChangeAdapter( FacesConfigType facesConfig); }