You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by mb...@apache.org on 2007/02/23 18:34:40 UTC

svn commit: r511030 [1/3] - in /myfaces/core/branches/jsf12/impl/src: main/java/org/apache/myfaces/application/ main/java/org/apache/myfaces/config/ main/java/org/apache/myfaces/config/impl/digester/ main/java/org/apache/myfaces/config/impl/digester/el...

Author: mbr
Date: Fri Feb 23 09:34:38 2007
New Revision: 511030

URL: http://svn.apache.org/viewvc?view=rev&rev=511030
Log:
work in progress 
JSR-252 Issue #54: Added new extension elements to the Faces XML schema. 
https://issues.apache.org/jira/browse/MYFACES-1223
+support resource bundles
+generic types injected
+formatting
+tests

Added:
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/ResourceBundle.java   (with props)
    myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/impl/
    myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/impl/digister/
    myfaces/core/branches/jsf12/impl/src/test/java/org/apache/myfaces/config/impl/digister/DigesterFacesConfigUnmarshallerImplTest.java   (with props)
    myfaces/core/branches/jsf12/impl/src/test/resources/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/config/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/config/impl/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/config/impl/digister/
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/config/impl/digister/application-config.xml   (with props)
    myfaces/core/branches/jsf12/impl/src/test/resources/org/apache/myfaces/config/impl/digister/empty-config.xml   (with props)
Modified:
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigUnmarshaller.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigUnmarshallerImpl.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Application.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Converter.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/Factory.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/LocaleConfig.java
    myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/RenderKit.java

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java?view=diff&rev=511030&r1=511029&r2=511030
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/application/ApplicationImpl.java Fri Feb 23 09:34:38 2007
@@ -20,7 +20,9 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.myfaces.application.jsp.JspStateManagerImpl;
 import org.apache.myfaces.application.jsp.JspViewHandlerImpl;
+import org.apache.myfaces.config.RuntimeConfig;
 import org.apache.myfaces.config.impl.digester.elements.Property;
+import org.apache.myfaces.config.impl.digester.elements.ResourceBundle;
 import org.apache.myfaces.el.NullPropertyResolver;
 import org.apache.myfaces.el.NullVariableResolver;
 import org.apache.myfaces.el.convert.ELResolverToPropertyResolver;
@@ -46,6 +48,7 @@
 import javax.faces.application.ViewHandler;
 import javax.faces.component.UIComponent;
 import javax.faces.component.UIViewRoot;
+import javax.faces.context.ExternalContext;
 import javax.faces.context.FacesContext;
 import javax.faces.convert.Converter;
 import javax.faces.el.MethodBinding;
@@ -67,54 +70,60 @@
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
-import java.util.ResourceBundle;
+import java.util.MissingResourceException;
 
 /**
  * DOCUMENT ME!
+ * 
  * @author Manfred Geiler (latest modification by $Author$)
  * @author Anton Koinov
  * @author Thomas Spiegl
  * @author Stan Silvert
  * @version $Revision$ $Date$
  */
-public class ApplicationImpl
-        extends Application {
+public class ApplicationImpl extends Application
+{
     private static final Log log = LogFactory.getLog(ApplicationImpl.class);
-    
-    //~ Instance fields ----------------------------------------------------------------------------
-    
-    private Collection           _supportedLocales = Collections.EMPTY_SET;
-    private Locale               _defaultLocale;
-    private String               _messageBundle;
-    
-    private ViewHandler          _viewHandler;
-    private NavigationHandler    _navigationHandler;
-    private VariableResolver     _variableResolver;
-    private PropertyResolver     _propertyResolver;
-    private ActionListener       _actionListener;
-    private String               _defaultRenderKitId;
-    private StateManager         _stateManager;
-    
-    private ServletContext       _servletContext;
-    
-    private ResolverForFaces     _resolverForFaces;
-    private ResolverForJSP       _resolverForJSP;
-    
-    private ExpressionFactory    _expressionFactory;
-    
+
+    // ~ Instance fields
+    // ----------------------------------------------------------------------------
+
+    private Collection<Locale> _supportedLocales = Collections.emptySet();
+    private Locale _defaultLocale;
+    private String _messageBundle;
+
+    private ViewHandler _viewHandler;
+    private NavigationHandler _navigationHandler;
+    private VariableResolver _variableResolver;
+    private PropertyResolver _propertyResolver;
+    private ActionListener _actionListener;
+    private String _defaultRenderKitId;
+    private StateManager _stateManager;
+
+    private ServletContext _servletContext;
+
+    private ResolverForFaces _resolverForFaces;
+    private ResolverForJSP _resolverForJSP;
+
+    private ExpressionFactory _expressionFactory;
+
     private ArrayList<ELContextListener> _elContextListeners;
-    
-    // components, converters, and validators can be added at runtime--must synchronize
-    private final Map _converterIdToClassMap = Collections.synchronizedMap(new HashMap());
-    private final Map _converterClassNameToClassMap = Collections.synchronizedMap(new HashMap());
-    private final Map _converterClassNameToConfigurationMap = Collections.synchronizedMap(new HashMap());
-    private final Map _componentClassMap = Collections.synchronizedMap(new HashMap());
-    private final Map _validatorClassMap = Collections.synchronizedMap(new HashMap());
-    
-    
-    //~ Constructors -------------------------------------------------------------------------------
-    
-    public ApplicationImpl() {
+
+    // components, converters, and validators can be added at runtime--must
+    // synchronize
+    private final Map<String, Class> _converterIdToClassMap = Collections.synchronizedMap(new HashMap<String, Class>());
+    private final Map<Class, String> _converterClassNameToClassMap = Collections
+            .synchronizedMap(new HashMap<Class, String>());
+    private final Map<String, org.apache.myfaces.config.impl.digester.elements.Converter> _converterClassNameToConfigurationMap = Collections
+            .synchronizedMap(new HashMap<String, org.apache.myfaces.config.impl.digester.elements.Converter>());
+    private final Map<String, Class> _componentClassMap = Collections.synchronizedMap(new HashMap<String, Class>());
+    private final Map<String, Class> _validatorClassMap = Collections.synchronizedMap(new HashMap<String, Class>());
+
+    // ~ Constructors
+    // -------------------------------------------------------------------------------
+
+    public ApplicationImpl()
+    {
         // set default implementation in constructor
         // pragmatic approach, no syncronizing will be needed in get methods
         _viewHandler = new JspViewHandlerImpl();
@@ -124,77 +133,134 @@
         _actionListener = new ActionListenerImpl();
         _defaultRenderKitId = "HTML_BASIC";
         _stateManager = new JspStateManagerImpl();
-        _elContextListeners = new ArrayList();
-        _resolverForFaces =  new ResolverForFaces();
+        _elContextListeners = new ArrayList<ELContextListener>();
+        _resolverForFaces = new ResolverForFaces();
         _resolverForJSP = null;
-        
-        if (log.isTraceEnabled()) log.trace("New Application instance created");
+
+        if (log.isTraceEnabled())
+            log.trace("New Application instance created");
     }
-    
-    //~ Methods ------------------------------------------------------------------------------------
-    
-    // note: this method is not part of the javax.faces.application.Application interface
+
+    // ~ Methods
+    // ------------------------------------------------------------------------------------
+
+    // note: this method is not part of the javax.faces.application.Application
+    // interface
     // it must be called by FacesConfigurator or other init mechanism
-    public void setServletContext(ServletContext servletContext) {
-        
+    public void setServletContext(ServletContext servletContext)
+    {
+
         // this Class.forName will be removed when Tomcat fixes a bug
         // also, we should then be able to remove jasper.jar from the deployment
-        try {
+        try
+        {
             Class.forName("org.apache.jasper.compiler.JspRuntimeContext");
-        } catch (Exception e) {
+        }
+        catch (Exception e)
+        {
             e.printStackTrace();
         }
-        
+
         _servletContext = servletContext;
         ResolverForJSP _resolverForJSP = new ResolverForJSP();
-        
+
         log.debug("factory = " + JspFactory.getDefaultFactory());
         JspApplicationContext appCtx = JspFactory.getDefaultFactory().getJspApplicationContext(_servletContext);
-        
+
         appCtx.addELResolver(_resolverForJSP);
-        
+
         _expressionFactory = appCtx.getExpressionFactory();
     }
-    
 
-    public void addELResolver(ELResolver resolver) {
+    @Override
+    public void addELResolver(ELResolver resolver)
+    {
         _resolverForFaces.addResolverFromApplicationAddResolver(resolver);
         _resolverForJSP.addResolverFromApplicationAddResolver(resolver);
     }
 
-    public ELResolver getELResolver() {
+    @Override
+    public ELResolver getELResolver()
+    {
         return _resolverForFaces;
     }
-    
-    public ResourceBundle getResourceBundle(FacesContext facesContext, String name)
-        throws FacesException, NullPointerException {
-        
+
+    @Override
+    public java.util.ResourceBundle getResourceBundle(FacesContext facesContext, String name) throws FacesException,
+            NullPointerException
+    {
+
         checkNull(facesContext, "facesContext");
         checkNull(name, "name");
 
+        String bundleName = getBundleName(name);
+
+        if (bundleName == null)
+        {
+            return null;
+        }
+
         Locale locale = Locale.getDefault();
-        
+
         UIViewRoot viewRoot = facesContext.getViewRoot();
         if (viewRoot != null && viewRoot.getLocale() != null)
         {
-           locale = viewRoot.getLocale();
+            locale = viewRoot.getLocale();
         }
 
-        ResourceBundle bundle = ResourceBundle.getBundle(name, locale, Thread.currentThread().getContextClassLoader());
-        return bundle;
+        try
+        {
+            return getResourceBundle(bundleName, locale, getClassLoader());
+        }
+        catch (MissingResourceException e)
+        {
+            throw new FacesException("Could not load resource bundle for name '" + name + "': " + e.getMessage(), e);
+        }
+    }
+
+    ClassLoader getClassLoader()
+    {
+        return Thread.currentThread().getContextClassLoader();
+    }
+
+    String getBundleName(String name)
+    {
+        ResourceBundle bundle = getRuntimeConfig().getResourceBundle(name);
+        return bundle != null ? bundle.getBaseName() : null;
+    }
+
+    java.util.ResourceBundle getResourceBundle(String name, Locale locale, ClassLoader loader)
+            throws MissingResourceException
+    {
+        return java.util.ResourceBundle.getBundle(name, locale, loader);
+    }
+
+    RuntimeConfig getRuntimeConfig()
+    {
+        return RuntimeConfig.getCurrentInstance(getExternalContext());
+    }
+
+    ExternalContext getExternalContext()
+    {
+        return getFaceContext().getExternalContext();
     }
-    
-    public UIComponent createComponent(ValueExpression componentExpression,
-            FacesContext facesContext,
-            String componentType)
-            throws FacesException, NullPointerException {
-        
+
+    FacesContext getFaceContext()
+    {
+        return FacesContext.getCurrentInstance();
+    }
+
+    @Override
+    public UIComponent createComponent(ValueExpression componentExpression, FacesContext facesContext,
+            String componentType) throws FacesException, NullPointerException
+    {
+
         checkNull(componentExpression, "componentExpression");
         checkNull(facesContext, "facesContext");
         checkNull(componentType, "componentType");
 
         ELContext elContext = facesContext.getELContext();
-        
+
         Object retVal = componentExpression.getValue(elContext);
 
         UIComponent createdComponent;
@@ -203,7 +269,7 @@
         {
             if (retVal instanceof UIComponent)
             {
-                createdComponent = (UIComponent)retVal;
+                createdComponent = (UIComponent) retVal;
             }
             else
             {
@@ -218,498 +284,660 @@
 
         return createdComponent;
     }
-    
-    public ExpressionFactory getExpressionFactory() {
+
+    @Override
+    public ExpressionFactory getExpressionFactory()
+    {
         return _expressionFactory;
     }
-    
-    public Object evaluateExpressionGet(FacesContext context, String expression, Class expectedType) throws ELException {
+
+    @Override
+    public Object evaluateExpressionGet(FacesContext context, String expression, Class expectedType) throws ELException
+    {
         ELContext elContext = context.getELContext();
-        return getExpressionFactory()
-               .createValueExpression(elContext, expression, expectedType)
-               .getValue(elContext);
-    }
-    
-    public void addELContextListener(ELContextListener listener) {
-        
-        synchronized (_elContextListeners) {
+        return getExpressionFactory().createValueExpression(elContext, expression, expectedType).getValue(elContext);
+    }
+
+    @Override
+    public void addELContextListener(ELContextListener listener)
+    {
+
+        synchronized (_elContextListeners)
+        {
             _elContextListeners.add(listener);
         }
     }
-    
-    public void removeELContextListener(ELContextListener listener) {
-        synchronized (_elContextListeners) {
+
+    @Override
+    public void removeELContextListener(ELContextListener listener)
+    {
+        synchronized (_elContextListeners)
+        {
             _elContextListeners.remove(listener);
         }
     }
-    
-    public ELContextListener[] getELContextListeners() {
+
+    @Override
+    public ELContextListener[] getELContextListeners()
+    {
         // this gets called on every request, so I can't afford to synchronize
         // I just have to trust that toArray() with do the right thing if the
         // list is changing (not likely)
         return _elContextListeners.toArray(new ELContextListener[0]);
     }
-    
-    public void setActionListener(ActionListener actionListener) {
+
+    @Override
+    public void setActionListener(ActionListener actionListener)
+    {
         checkNull(actionListener, "actionListener");
-        
+
         _actionListener = actionListener;
-        if (log.isTraceEnabled()) log.trace("set actionListener = " + actionListener.getClass().getName());
+        if (log.isTraceEnabled())
+            log.trace("set actionListener = " + actionListener.getClass().getName());
     }
-    
-    public ActionListener getActionListener() {
+
+    @Override
+    public ActionListener getActionListener()
+    {
         return _actionListener;
     }
-    
-    public Iterator getComponentTypes() {
+
+    @Override
+    public Iterator<String> getComponentTypes()
+    {
         return _componentClassMap.keySet().iterator();
     }
-    
-    public Iterator getConverterIds() {
+
+    @Override
+    public Iterator<String> getConverterIds()
+    {
         return _converterIdToClassMap.keySet().iterator();
     }
-    
-    public Iterator getConverterTypes() {
+
+    @Override
+    public Iterator<Class> getConverterTypes()
+    {
         return _converterClassNameToClassMap.keySet().iterator();
     }
-    
-    public void setDefaultLocale(Locale locale) {
+
+    @Override
+    public void setDefaultLocale(Locale locale)
+    {
         checkNull(locale, "locale");
-        
+
         _defaultLocale = locale;
-        if (log.isTraceEnabled()) log.trace("set defaultLocale = " + locale.getCountry() + " " + locale.getLanguage());
+        if (log.isTraceEnabled())
+            log.trace("set defaultLocale = " + locale.getCountry() + " " + locale.getLanguage());
     }
-    
-    public Locale getDefaultLocale() {
+
+    @Override
+    public Locale getDefaultLocale()
+    {
         return _defaultLocale;
     }
-    
-    public void setMessageBundle(String messageBundle) {
+
+    @Override
+    public void setMessageBundle(String messageBundle)
+    {
         checkNull(messageBundle, "messageBundle");
-        
+
         _messageBundle = messageBundle;
-        if (log.isTraceEnabled()) log.trace("set MessageBundle = " + messageBundle);
+        if (log.isTraceEnabled())
+            log.trace("set MessageBundle = " + messageBundle);
     }
-    
-    public String getMessageBundle() {
+
+    @Override
+    public String getMessageBundle()
+    {
         return _messageBundle;
     }
-    
-    public void setNavigationHandler(NavigationHandler navigationHandler) {
+
+    @Override
+    public void setNavigationHandler(NavigationHandler navigationHandler)
+    {
         checkNull(navigationHandler, "navigationHandler");
-        
+
         _navigationHandler = navigationHandler;
-        if (log.isTraceEnabled()) log.trace("set NavigationHandler = " + navigationHandler.getClass().getName());
+        if (log.isTraceEnabled())
+            log.trace("set NavigationHandler = " + navigationHandler.getClass().getName());
     }
-    
-    public NavigationHandler getNavigationHandler() {
+
+    @Override
+    public NavigationHandler getNavigationHandler()
+    {
         return _navigationHandler;
     }
-    
+
     /**
      * @deprecated
      */
-    public void setPropertyResolver(PropertyResolver propertyResolver) {
+    @Deprecated
+    @Override
+    public void setPropertyResolver(PropertyResolver propertyResolver)
+    {
         checkNull(propertyResolver, "propertyResolver");
-        
-        if(FacesContext.getCurrentInstance() != null) {
-            throw new IllegalStateException("propertyResolver must be defined before request processing");   
-        }           
-        
+
+        if (getFaceContext() != null)
+        {
+            throw new IllegalStateException("propertyResolver must be defined before request processing");
+        }
+
         _resolverForFaces.addResolverFromLegacyPropertyResolver(propertyResolver);
-        
+
         // TODO: fix FacesConfigurator so this won't happen
-        if (_resolverForJSP != null) {
+        if (_resolverForJSP != null)
+        {
             _resolverForJSP.addResolverFromLegacyPropertyResolver(propertyResolver);
         }
-        
+
         _propertyResolver = new ELResolverToPropertyResolver(getELResolver());
-        
-        if (log.isTraceEnabled()) log.trace("set PropertyResolver = " + propertyResolver.getClass().getName());
+
+        if (log.isTraceEnabled())
+            log.trace("set PropertyResolver = " + propertyResolver.getClass().getName());
     }
-    
+
     /**
      * @deprecated
      */
-    public PropertyResolver getPropertyResolver() {
+    @Deprecated
+    @Override
+    public PropertyResolver getPropertyResolver()
+    {
         return _propertyResolver;
     }
-    
-    public void setSupportedLocales(Collection locales) {
+
+    @Override
+    public void setSupportedLocales(Collection<Locale> locales)
+    {
         checkNull(locales, "locales");
-        
+
         _supportedLocales = locales;
-        if (log.isTraceEnabled()) log.trace("set SupportedLocales");
+        if (log.isTraceEnabled())
+            log.trace("set SupportedLocales");
     }
-    
-    public Iterator getSupportedLocales() {
+
+    @Override
+    public Iterator<Locale> getSupportedLocales()
+    {
         return _supportedLocales.iterator();
     }
-    
-    public Iterator getValidatorIds() {
+
+    @Override
+    public Iterator<String> getValidatorIds()
+    {
         return _validatorClassMap.keySet().iterator();
     }
-    
+
     /**
      * @deprecated
      */
-    public void setVariableResolver(VariableResolver variableResolver) {
+    @Deprecated
+    @Override
+    public void setVariableResolver(VariableResolver variableResolver)
+    {
         checkNull(variableResolver, "variableResolver");
-        
-        if(FacesContext.getCurrentInstance() != null) {
-            throw new IllegalStateException("variableResolver must be defined before request processing");   
-        }           
-        
+
+        if (getFaceContext() != null)
+        {
+            throw new IllegalStateException("variableResolver must be defined before request processing");
+        }
+
         _resolverForFaces.addResolverFromLegacyVariableResolver(variableResolver);
-        
+
         // TODO: fix FacesConfigurator so this won't happen
-        if (_resolverForJSP != null) {
+        if (_resolverForJSP != null)
+        {
             _resolverForJSP.addResolverFromLegacyVariableResolver(variableResolver);
         }
-        
+
         _variableResolver = new ELResolverToVariableResolver(getELResolver());
     }
-    
+
     /**
      * @deprecated
      */
-    public VariableResolver getVariableResolver() {
+    @Deprecated
+    @Override
+    public VariableResolver getVariableResolver()
+    {
         return _variableResolver;
     }
-    
-    public void setViewHandler(ViewHandler viewHandler) {
+
+    @Override
+    public void setViewHandler(ViewHandler viewHandler)
+    {
         checkNull(viewHandler, "viewHandler");
-        
+
         _viewHandler = viewHandler;
-        if (log.isTraceEnabled()) log.trace("set ViewHandler = " + viewHandler.getClass().getName());
+        if (log.isTraceEnabled())
+            log.trace("set ViewHandler = " + viewHandler.getClass().getName());
     }
-    
-    public ViewHandler getViewHandler() {
+
+    @Override
+    public ViewHandler getViewHandler()
+    {
         return _viewHandler;
     }
-    
-    public void addComponent(String componentType, String componentClassName) {
+
+    @Override
+    public void addComponent(String componentType, String componentClassName)
+    {
         checkNull(componentType, "componentType");
         checkEmpty(componentType, "componentType");
         checkNull(componentClassName, "componentClassName");
         checkEmpty(componentClassName, "componentClassName");
-        
-        try {
+
+        try
+        {
             _componentClassMap.put(componentType, ClassUtils.simpleClassForName(componentClassName));
-            if (log.isTraceEnabled()) log.trace("add Component class = " + componentClassName +
-                    " for type = " + componentType);
-        } catch (Exception e) {
+            if (log.isTraceEnabled())
+                log.trace("add Component class = " + componentClassName + " for type = " + componentType);
+        }
+        catch (Exception e)
+        {
             log.error("Component class " + componentClassName + " not found", e);
         }
     }
-    
-    public void addConverter(String converterId, String converterClass) {
+
+    @Override
+    public void addConverter(String converterId, String converterClass)
+    {
         checkNull(converterId, "converterId");
         checkEmpty(converterId, "converterId");
         checkNull(converterClass, "converterClass");
         checkEmpty(converterClass, "converterClass");
-        
-        try {
+
+        try
+        {
             _converterIdToClassMap.put(converterId, ClassUtils.simpleClassForName(converterClass));
-            if (log.isTraceEnabled()) log.trace("add Converter id = " + converterId +
-                    " converterClass = " + converterClass);
-        } catch (Exception e) {
+            if (log.isTraceEnabled())
+                log.trace("add Converter id = " + converterId + " converterClass = " + converterClass);
+        }
+        catch (Exception e)
+        {
             log.error("Converter class " + converterClass + " not found", e);
         }
     }
-    
-    public void addConverter(Class targetClass, String converterClass) {
+
+    @Override
+    public void addConverter(Class targetClass, String converterClass)
+    {
         checkNull(targetClass, "targetClass");
         checkNull(converterClass, "converterClass");
         checkEmpty(converterClass, "converterClass");
-        
-        try {
+
+        try
+        {
             _converterClassNameToClassMap.put(targetClass, converterClass);
-            if (log.isTraceEnabled()) log.trace("add Converter for class = " + targetClass +
-                    " converterClass = " + converterClass);
-        } catch (Exception e) {
+            if (log.isTraceEnabled())
+                log.trace("add Converter for class = " + targetClass + " converterClass = " + converterClass);
+        }
+        catch (Exception e)
+        {
             log.error("Converter class " + converterClass + " not found", e);
         }
     }
-    
+
     public void addConverterConfiguration(String converterClassName,
-            org.apache.myfaces.config.impl.digester.elements.Converter configuration) {
+            org.apache.myfaces.config.impl.digester.elements.Converter configuration)
+    {
         checkNull(converterClassName, "converterClassName");
         checkEmpty(converterClassName, "converterClassName");
         checkNull(configuration, "configuration");
-        
+
         _converterClassNameToConfigurationMap.put(converterClassName, configuration);
     }
-    
-    public void addValidator(String validatorId, String validatorClass) {
+
+    @Override
+    public void addValidator(String validatorId, String validatorClass)
+    {
         checkNull(validatorId, "validatorId");
         checkEmpty(validatorId, "validatorId");
         checkNull(validatorClass, "validatorClass");
         checkEmpty(validatorClass, "validatorClass");
-        
-        try {
+
+        try
+        {
             _validatorClassMap.put(validatorId, ClassUtils.simpleClassForName(validatorClass));
-            if (log.isTraceEnabled()) log.trace("add Validator id = " + validatorId +
-                    " class = " + validatorClass);
-        } catch (Exception e) {
+            if (log.isTraceEnabled())
+                log.trace("add Validator id = " + validatorId + " class = " + validatorClass);
+        }
+        catch (Exception e)
+        {
             log.error("Validator class " + validatorClass + " not found", e);
         }
     }
-    
-    public UIComponent createComponent(String componentType)
-    throws FacesException {
+
+    @Override
+    public UIComponent createComponent(String componentType) throws FacesException
+    {
         checkNull(componentType, "componentType");
         checkEmpty(componentType, "componentType");
-        
+
         Class componentClass;
-        synchronized (_componentClassMap) {
-            componentClass = (Class) _componentClassMap.get(componentType);
+        synchronized (_componentClassMap)
+        {
+            componentClass = _componentClassMap.get(componentType);
         }
-        if (componentClass == null) {
+        if (componentClass == null)
+        {
             log.error("Undefined component type " + componentType);
             throw new FacesException("Undefined component type " + componentType);
         }
-        
-        try {
+
+        try
+        {
             return (UIComponent) componentClass.newInstance();
-        } catch (Exception e) {
+        }
+        catch (Exception e)
+        {
             log.error("Could not instantiate component componentType = " + componentType, e);
             throw new FacesException("Could not instantiate component componentType = " + componentType, e);
         }
     }
-    
+
     /**
      * @deprecated Use createComponent(ValueExpression, FacesContext, String) instead.
      */
-    public UIComponent createComponent(ValueBinding valueBinding,
-                                       FacesContext facesContext,
-                                       String componentType)
-            throws FacesException {
-        
+    @Deprecated
+    @Override
+    public UIComponent createComponent(ValueBinding valueBinding, FacesContext facesContext, String componentType)
+            throws FacesException
+    {
+
         checkNull(valueBinding, "valueBinding");
         checkNull(facesContext, "facesContext");
         checkNull(componentType, "componentType");
         checkEmpty(componentType, "componentType");
-        
+
         ValueExpression valExpression = new ValueBindingToValueExpression(valueBinding);
-        
+
         return createComponent(valExpression, facesContext, componentType);
     }
-    
-    public Converter createConverter(String converterId) {
+
+    @Override
+    public Converter createConverter(String converterId)
+    {
         checkNull(converterId, "converterId");
         checkEmpty(converterId, "converterId");
-        
-        Class converterClass = (Class) _converterIdToClassMap.get(converterId);
-        
-        try {
-            Converter converter= (Converter) converterClass.newInstance();
-            
+
+        Class converterClass = _converterIdToClassMap.get(converterId);
+
+        try
+        {
+            Converter converter = (Converter) converterClass.newInstance();
+
             setConverterProperties(converterClass, converter);
-            
+
             return converter;
-        } catch (Exception e) {
+        }
+        catch (Exception e)
+        {
             log.error("Could not instantiate converter " + converterClass, e);
             throw new FacesException("Could not instantiate converter: " + converterClass, e);
         }
     }
-    
-    
-    public Converter createConverter(Class targetClass) {
+
+    @Override
+    public Converter createConverter(Class targetClass)
+    {
         checkNull(targetClass, "targetClass");
-        
+
         return internalCreateConverter(targetClass);
     }
-    
-    
-    private Converter internalCreateConverter(Class targetClass) {
+
+    private Converter internalCreateConverter(Class targetClass)
+    {
         // Locate a Converter registered for the target class itself.
-        String converterClassName = (String)_converterClassNameToClassMap.get(targetClass);
-        
-        //Locate a Converter registered for interfaces that are
+        String converterClassName = _converterClassNameToClassMap.get(targetClass);
+
+        // Locate a Converter registered for interfaces that are
         // implemented by the target class (directly or indirectly).
-        if (converterClassName == null) {
+        if (converterClassName == null)
+        {
             Class interfaces[] = targetClass.getInterfaces();
-            if (interfaces != null) {
-                for (int i = 0, len = interfaces.length; i < len; i++) {
-                    // search all superinterfaces for a matching converter, create it
+            if (interfaces != null)
+            {
+                for (int i = 0, len = interfaces.length; i < len; i++)
+                {
+                    // search all superinterfaces for a matching converter,
+                    // create it
                     Converter converter = internalCreateConverter(interfaces[i]);
-                    if (converter != null) {
+                    if (converter != null)
+                    {
                         return converter;
                     }
                 }
             }
         }
-        
-        if (converterClassName != null) {
-            try {
+
+        if (converterClassName != null)
+        {
+            try
+            {
                 Class converterClass = ClassUtils.simpleClassForName(converterClassName);
-                
+
                 Converter converter = null;
-                try {
+                try
+                {
                     // look for a constructor that takes a single Class object
                     // See JSF 1.2 javadoc for Converter
-                    Constructor constructor = converterClass.getConstructor(new Class[]{Class.class});
-                    converter = (Converter)constructor.newInstance(new Object[]{targetClass});
-                } catch (Exception e) {
-                    // if there is no matching constructor use no-arg constructor
+                    Constructor constructor = converterClass.getConstructor(new Class[] { Class.class });
+                    converter = (Converter) constructor.newInstance(new Object[] { targetClass });
+                }
+                catch (Exception e)
+                {
+                    // if there is no matching constructor use no-arg
+                    // constructor
                     converter = (Converter) converterClass.newInstance();
                 }
-                
+
                 setConverterProperties(converterClass, converter);
-                
+
                 return converter;
-            } catch (Exception e) {
+            }
+            catch (Exception e)
+            {
                 log.error("Could not instantiate converter " + converterClassName, e);
                 throw new FacesException("Could not instantiate converter: " + converterClassName, e);
             }
         }
-        
-        //   locate converter for primitive types
-        if (targetClass == Long.TYPE) {
+
+        // locate converter for primitive types
+        if (targetClass == Long.TYPE)
+        {
             return internalCreateConverter(Long.class);
-        } else if (targetClass == Boolean.TYPE) {
+        }
+        else if (targetClass == Boolean.TYPE)
+        {
             return internalCreateConverter(Boolean.class);
-        } else if (targetClass == Double.TYPE) {
+        }
+        else if (targetClass == Double.TYPE)
+        {
             return internalCreateConverter(Double.class);
-        } else if (targetClass == Byte.TYPE) {
+        }
+        else if (targetClass == Byte.TYPE)
+        {
             return internalCreateConverter(Byte.class);
-        } else if (targetClass == Short.TYPE) {
+        }
+        else if (targetClass == Short.TYPE)
+        {
             return internalCreateConverter(Short.class);
-        } else if (targetClass == Integer.TYPE) {
+        }
+        else if (targetClass == Integer.TYPE)
+        {
             return internalCreateConverter(Integer.class);
-        } else if (targetClass == Float.TYPE) {
+        }
+        else if (targetClass == Float.TYPE)
+        {
             return internalCreateConverter(Float.class);
-        } else if (targetClass == Character.TYPE) {
+        }
+        else if (targetClass == Character.TYPE)
+        {
             return internalCreateConverter(Character.class);
         }
-        
-        
-        //Locate a Converter registered for the superclass (if any) of the target class,
+
+        // Locate a Converter registered for the superclass (if any) of the
+        // target class,
         // recursively working up the inheritance hierarchy.
         Class superClazz = targetClass.getSuperclass();
-        if (superClazz != null) {
+        if (superClazz != null)
+        {
             return internalCreateConverter(superClazz);
-        } else {
+        }
+        else
+        {
             return null;
         }
-        
+
     }
-    
-    private void setConverterProperties(Class converterClass, Converter converter) {
-        org.apache.myfaces.config.impl.digester.elements.Converter converterConfig =
-                (org.apache.myfaces.config.impl.digester.elements.Converter)
-                _converterClassNameToConfigurationMap.get(converterClass.getName());
-        
-        if(converterConfig != null) {
-            
+
+    private void setConverterProperties(Class converterClass, Converter converter)
+    {
+        org.apache.myfaces.config.impl.digester.elements.Converter converterConfig = _converterClassNameToConfigurationMap
+                .get(converterClass.getName());
+
+        if (converterConfig != null)
+        {
+
             Iterator it = converterConfig.getProperties();
-            
-            while (it.hasNext()) {
+
+            while (it.hasNext())
+            {
                 Property property = (Property) it.next();
-                
-                try {
-                    BeanUtils.setProperty(converter,property.getPropertyName(),property.getDefaultValue());
-                } catch(Throwable th) {
-                    log.error("Initializing converter : "+converterClass.getName()+" with property : "+
-                            property.getPropertyName()+" and value : "+property.getDefaultValue()+" failed.");
+
+                try
+                {
+                    BeanUtils.setProperty(converter, property.getPropertyName(), property.getDefaultValue());
+                }
+                catch (Throwable th)
+                {
+                    log.error("Initializing converter : " + converterClass.getName() + " with property : "
+                            + property.getPropertyName() + " and value : " + property.getDefaultValue() + " failed.");
                 }
             }
         }
     }
-    
-    
-    // Note: this method used to be synchronized in the JSF 1.1 version.  Why?
+
+    // Note: this method used to be synchronized in the JSF 1.1 version. Why?
     /**
      * @deprecated
      */
-    public MethodBinding createMethodBinding(String reference, Class[] params)
-    throws ReferenceSyntaxException {
+    @Deprecated
+    @Override
+    public MethodBinding createMethodBinding(String reference, Class[] params) throws ReferenceSyntaxException
+    {
         checkNull(reference, "reference");
         checkEmpty(reference, "reference");
-        
-        if (params == null) params = new Class[0];
-        
+
+        if (params == null)
+            params = new Class[0];
+
         MethodExpression methodExpression;
-        
-        try {
-            methodExpression = getExpressionFactory()
-            .createMethodExpression(threadELContext(), reference, Object.class, params);
-        } catch (ELException e) {
+
+        try
+        {
+            methodExpression = getExpressionFactory().createMethodExpression(threadELContext(), reference,
+                    Object.class, params);
+        }
+        catch (ELException e)
+        {
             throw new ReferenceSyntaxException(e);
         }
-        
+
         return new MethodExpressionToMethodBinding(methodExpression);
     }
-    
-    public Validator createValidator(String validatorId) throws FacesException {
+
+    @Override
+    public Validator createValidator(String validatorId) throws FacesException
+    {
         checkNull(validatorId, "validatorId");
         checkEmpty(validatorId, "validatorId");
-        
-        Class validatorClass = (Class) _validatorClassMap.get(validatorId);
-        if (validatorClass == null) {
+
+        Class validatorClass = _validatorClassMap.get(validatorId);
+        if (validatorClass == null)
+        {
             String message = "Unknown validator id '" + validatorId + "'.";
             log.error(message);
             throw new FacesException(message);
         }
-        
-        try {
+
+        try
+        {
             return (Validator) validatorClass.newInstance();
-        } catch (Exception e) {
+        }
+        catch (Exception e)
+        {
             log.error("Could not instantiate validator " + validatorClass, e);
             throw new FacesException("Could not instantiate validator: " + validatorClass, e);
         }
     }
-    
+
     /**
      * @deprecated
      */
-    public ValueBinding createValueBinding(String reference) throws ReferenceSyntaxException {
+    @Override
+    public ValueBinding createValueBinding(String reference) throws ReferenceSyntaxException
+    {
         checkNull(reference, "reference");
         checkEmpty(reference, "reference");
-        
+
         ValueExpression valueExpression;
-        
-        try {
-            valueExpression = getExpressionFactory()
-            .createValueExpression(threadELContext(), reference, Object.class);
-        } catch (ELException e) {
+
+        try
+        {
+            valueExpression = getExpressionFactory().createValueExpression(threadELContext(), reference, Object.class);
+        }
+        catch (ELException e)
+        {
             throw new ReferenceSyntaxException(e);
         }
-        
+
         return new ValueExpressionToValueBinding(valueExpression);
     }
-    
+
     // gets the elContext from the current FacesContext()
-    private ELContext threadELContext() {
-        return FacesContext.getCurrentInstance().getELContext();
+    private ELContext threadELContext()
+    {
+        return getFaceContext().getELContext();
     }
-    
-    
-    public String getDefaultRenderKitId() {
+
+    @Override
+    public String getDefaultRenderKitId()
+    {
         return _defaultRenderKitId;
     }
-    
-    public void setDefaultRenderKitId(String defaultRenderKitId) {
+
+    @Override
+    public void setDefaultRenderKitId(String defaultRenderKitId)
+    {
         _defaultRenderKitId = defaultRenderKitId;
     }
-    
-    public StateManager getStateManager() {
+
+    @Override
+    public StateManager getStateManager()
+    {
         return _stateManager;
     }
-    
-    public void setStateManager(StateManager stateManager) {
+
+    @Override
+    public void setStateManager(StateManager stateManager)
+    {
         _stateManager = stateManager;
     }
-    
-    private void checkNull(Object param, String paramName) {
-        if (param == null) {
+
+    private void checkNull(Object param, String paramName)
+    {
+        if (param == null)
+        {
             throw new NullPointerException(paramName + " can not be null.");
         }
     }
-    
-    private void checkEmpty(String param, String paramName) {
-        if (param.length() == 0) {
+
+    private void checkEmpty(String param, String paramName)
+    {
+        if (param.length() == 0)
+        {
             throw new NullPointerException("String " + paramName + " can not be empty.");
         }
     }

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java?view=diff&rev=511030&r1=511029&r2=511030
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigDispenser.java Fri Feb 23 09:34:38 2007
@@ -15,7 +15,13 @@
  */
 package org.apache.myfaces.config;
 
+import org.apache.myfaces.config.element.ManagedBean;
+import org.apache.myfaces.config.element.NavigationRule;
+import org.apache.myfaces.config.element.Renderer;
 import org.apache.myfaces.config.impl.digester.elements.Converter;
+import org.apache.myfaces.config.impl.digester.elements.ResourceBundle;
+
+import javax.faces.event.PhaseListener;
 
 import java.util.Iterator;
 
@@ -26,13 +32,13 @@
  * @author Manfred Geiler (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-public interface FacesConfigDispenser
+public interface FacesConfigDispenser<C>
 {
     /**
      * Add another unmarshalled faces config object.
      * @param facesConfig unmarshalled faces config object
      */
-    public void feed(Object facesConfig);
+    public void feed(C facesConfig);
 
     /**
      * Add another ApplicationFactory class name
@@ -61,20 +67,20 @@
 
 
     /** @return Iterator over ApplicationFactory class names */
-    public Iterator getApplicationFactoryIterator();
+    public Iterator<String> getApplicationFactoryIterator();
 
     /** @return Iterator over FacesContextFactory class names */
-    public Iterator getFacesContextFactoryIterator();
+    public Iterator<String> getFacesContextFactoryIterator();
 
     /** @return Iterator over LifecycleFactory class names */
-    public Iterator getLifecycleFactoryIterator();
+    public Iterator<String> getLifecycleFactoryIterator();
 
     /** @return Iterator over RenderKit factory class names */
-    public Iterator getRenderKitFactoryIterator();
+    public Iterator<String> getRenderKitFactoryIterator();
 
 
     /** @return Iterator over ActionListener class names (in reverse order!) */
-    public Iterator getActionListenerIterator();
+    public Iterator<String> getActionListenerIterator();
 
     /** @return the default render kit id */
     public String getDefaultRenderKitId();
@@ -83,42 +89,42 @@
     public String getMessageBundle();
 
     /** @return Iterator over NavigationHandler class names */
-    public Iterator getNavigationHandlerIterator();
+    public Iterator<String> getNavigationHandlerIterator();
 
     /** @return Iterator over ViewHandler class names */
-    public Iterator getViewHandlerIterator();
+    public Iterator<String> getViewHandlerIterator();
 
     /** @return Iterator over StateManager class names*/
     public Iterator getStateManagerIterator();
 
     /** @return Iterator over PropertyResolver class names */
-    public Iterator getPropertyResolverIterator();
+    public Iterator<String> getPropertyResolverIterator();
 
     /** @return Iterator over VariableResolver class names  */
-    public Iterator getVariableResolverIterator();
+    public Iterator<String> getVariableResolverIterator();
 
     /** @return the default locale name */
     public String getDefaultLocale();
 
     /** @return Iterator over supported locale names */
-    public Iterator getSupportedLocalesIterator();
+    public Iterator<String> getSupportedLocalesIterator();
 
 
     /** @return Iterator over all defined component types */
-    public Iterator getComponentTypes();
+    public Iterator<String> getComponentTypes();
 
     /** @return component class that belongs to the given component type */
     public String getComponentClass(String componentType);
 
 
     /** @return Iterator over all defined converter ids */
-    public Iterator getConverterIds();
+    public Iterator<String> getConverterIds();
 
     /** @return Iterator over all classes with an associated converter  */
-    public Iterator getConverterClasses();
+    public Iterator<String> getConverterClasses();
 
     /** @return Iterator over the config classes for the converters  */
-    Iterator getConverterConfigurationByClassName();
+    Iterator<String> getConverterConfigurationByClassName();
 
     /** delivers a converter-configuration for one class-name */
     Converter getConverterConfiguration(String converterClassName);
@@ -131,7 +137,7 @@
 
 
     /** @return Iterator over all defined validator ids */
-    public Iterator getValidatorIds();
+    public Iterator<String> getValidatorIds();
 
     /** @return validator class name that belongs to the given validator id */
     public String getValidatorClass(String validatorId);
@@ -140,17 +146,17 @@
     /**
      * @return Iterator over {@link org.apache.myfaces.config.element.ManagedBean ManagedBean}s
      */
-    public Iterator getManagedBeans();
+    public Iterator<ManagedBean> getManagedBeans();
 
     /**
      * @return Iterator over {@link org.apache.myfaces.config.element.NavigationRule NavigationRule}s
      */
-    public Iterator getNavigationRules();
+    public Iterator<NavigationRule> getNavigationRules();
 
 
 
     /** @return Iterator over all defined renderkit ids */
-    public Iterator getRenderKitIds();
+    public Iterator<String> getRenderKitIds();
 
     /** @return renderkit class name for given renderkit id */
     public String getRenderKitClass(String renderKitId);
@@ -158,11 +164,16 @@
     /**
      * @return Iterator over {@link org.apache.myfaces.config.element.Renderer Renderer}s for the given renderKitId
      */
-    public Iterator getRenderers(String renderKitId);
+    public Iterator<Renderer> getRenderers(String renderKitId);
 
 
     /**
      * @return Iterator over {@link javax.faces.event.PhaseListener} implementation class names
      */
-    public Iterator getLifecyclePhaseListeners();
+    public Iterator<String> getLifecyclePhaseListeners();
+
+    /**
+     * @return
+     */
+    public Iterator<ResourceBundle> getResourceBundles();
 }

Modified: myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigUnmarshaller.java
URL: http://svn.apache.org/viewvc/myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigUnmarshaller.java?view=diff&rev=511030&r1=511029&r2=511030
==============================================================================
--- myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigUnmarshaller.java (original)
+++ myfaces/core/branches/jsf12/impl/src/main/java/org/apache/myfaces/config/FacesConfigUnmarshaller.java Fri Feb 23 09:34:38 2007
@@ -28,7 +28,7 @@
  * @author Manfred Geiler (latest modification by $Author$)
  * @version $Revision$ $Date$
  */
-public interface FacesConfigUnmarshaller
+public interface FacesConfigUnmarshaller<T>
 {
-    public Object getFacesConfig(InputStream in, String systemId) throws IOException, SAXException;
+    public T getFacesConfig(InputStream in, String systemId) throws IOException, SAXException;
 }