You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lu...@apache.org on 2013/08/29 02:50:13 UTC

svn commit: r1518435 - in /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config: ./ annotation/ element/ impl/digester/ impl/digester/elements/

Author: lu4242
Date: Thu Aug 29 00:50:13 2013
New Revision: 1518435

URL: http://svn.apache.org/r1518435
Log:
MYFACES-3759 Implement @FaceletsResourceResolver annotation and MYFACES-3760 ClientBehaviorRenderer is added multiple times in FacesConfigurator 

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfig.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfigData.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/FacesConfigurator.java Thu Aug 29 00:50:13 2013
@@ -974,6 +974,11 @@ public class FacesConfigurator
                 new String[runtimeConfig.getResourceLibraryContracts().size()]);
             runtimeConfig.addContractMapping("*", contracts);
         }
+        
+        for (String resourceResolver : dispenser.getResourceResolvers())
+        {
+            runtimeConfig.addResourceResolver(resourceResolver);
+        }
     }
 
     private void removePurgedBeansFromSessionAndApplication(RuntimeConfig runtimeConfig)
@@ -1023,8 +1028,6 @@ public class FacesConfigurator
             for (Renderer element : dispenser.getRenderers(renderKitId))
             {
                 javax.faces.render.Renderer renderer;
-                Collection<ClientBehaviorRenderer> clientBehaviorRenderers
-                        = dispenser.getClientBehaviorRenderers(renderKitId);
                 
                 if (element.getRendererClass() != null)
                 {    
@@ -1055,28 +1058,32 @@ public class FacesConfigurator
                                 element.getRendererClass());
                 }
 
-                // Add in client behavior renderers.
+            }
+            
+            Collection<ClientBehaviorRenderer> clientBehaviorRenderers
+                    = dispenser.getClientBehaviorRenderers(renderKitId);
+
+            // Add in client behavior renderers.
 
-                for (ClientBehaviorRenderer clientBehaviorRenderer : clientBehaviorRenderers)
+            for (ClientBehaviorRenderer clientBehaviorRenderer : clientBehaviorRenderers)
+            {
+                try
                 {
-                    try
-                    {
-                        javax.faces.render.ClientBehaviorRenderer behaviorRenderer
-                                = (javax.faces.render.ClientBehaviorRenderer)
-                                ClassUtils.newInstance(clientBehaviorRenderer.getRendererClass());
+                    javax.faces.render.ClientBehaviorRenderer behaviorRenderer
+                            = (javax.faces.render.ClientBehaviorRenderer)
+                            ClassUtils.newInstance(clientBehaviorRenderer.getRendererClass());
 
-                        renderKit.addClientBehaviorRenderer(clientBehaviorRenderer.getRendererType(), behaviorRenderer);
-                    }
+                    renderKit.addClientBehaviorRenderer(clientBehaviorRenderer.getRendererType(), behaviorRenderer);
+                }
 
-                    catch (Throwable e)
-                    {
-                        // Ignore.
+                catch (Throwable e)
+                {
+                    // Ignore.
 
-                        if (log.isLoggable(Level.SEVERE))
-                        {
-                            log.log(Level.SEVERE, "failed to configure client behavior renderer class " +
-                                    clientBehaviorRenderer.getRendererClass(), e);
-                        }
+                    if (log.isLoggable(Level.SEVERE))
+                    {
+                        log.log(Level.SEVERE, "failed to configure client behavior renderer class " +
+                                clientBehaviorRenderer.getRendererClass(), e);
                     }
                 }
             }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/RuntimeConfig.java Thu Aug 29 00:50:13 2013
@@ -108,6 +108,8 @@ public class RuntimeConfig
     
     private List<ComponentTagDeclaration> _componentTagDeclarations = 
             new ArrayList<ComponentTagDeclaration>();
+    
+    private List<String> _resourceResolvers = new ArrayList<String>();
 
     public static RuntimeConfig getCurrentInstance(ExternalContext externalContext)
     {
@@ -489,5 +491,15 @@ public class RuntimeConfig
         }
         contractsList.add(contract);
     }    
+    
+    public List<String> getResourceResolvers()
+    {
+        return _resourceResolvers;
+    }
+    
+    public void addResourceResolver(String resourceResolver)
+    {
+        _resourceResolvers.add(resourceResolver);
+    }
 
 }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/AnnotationConfigurator.java Thu Aug 29 00:50:13 2013
@@ -44,6 +44,7 @@ import javax.faces.render.FacesBehaviorR
 import javax.faces.render.FacesRenderer;
 import javax.faces.render.RenderKitFactory;
 import javax.faces.validator.FacesValidator;
+import javax.faces.view.facelets.FaceletsResourceResolver;
 
 import org.apache.myfaces.config.impl.digester.elements.Application;
 import org.apache.myfaces.config.impl.digester.elements.Behavior;
@@ -283,6 +284,13 @@ public class AnnotationConfigurator
         {
             handleFacesBehaviorRenderer(facesConfig, classes);
         }
+        
+        classes = map.get(FaceletsResourceResolver.class);
+        if (classes != null && !classes.isEmpty())
+        {
+            handleFaceletsResourceResolver(facesConfig, classes);
+        }
+        
         return facesConfig;
     }
     
@@ -526,6 +534,20 @@ public class AnnotationConfigurator
             }
         }
     }
+    
+    private void handleFaceletsResourceResolver(FacesConfig facesConfig, Set<Class<?>> classes)
+    {
+        for (Class<?> clazz : classes)
+        {
+            FaceletsResourceResolver faceletsResourceResolver = 
+                (FaceletsResourceResolver) clazz.getAnnotation(FaceletsResourceResolver.class);
+            
+            if (faceletsResourceResolver != null)
+            {
+                facesConfig.addResourceResolver(clazz.getName());
+            }
+        }
+    }
 
     /**
      * <p>Return an array of all <code>Field</code>s reflecting declared

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/annotation/DefaultAnnotationProvider.java Thu Aug 29 00:50:13 2013
@@ -48,6 +48,7 @@ import javax.faces.event.NamedEvent;
 import javax.faces.render.FacesBehaviorRenderer;
 import javax.faces.render.FacesRenderer;
 import javax.faces.validator.FacesValidator;
+import javax.faces.view.facelets.FaceletsResourceResolver;
 
 import org.apache.myfaces.buildtools.maven2.plugin.builder.annotation.JSFWebConfigParam;
 import org.apache.myfaces.shared.config.MyfacesConfig;
@@ -121,6 +122,7 @@ public class DefaultAnnotationProvider e
         //bcan.add("Ljavax/faces/event/ListenerFor;");
         //bcan.add("Ljavax/faces/event/ListenersFor;");
         bcan.add("Ljavax/faces/render/FacesBehaviorRenderer;");
+        bcan.add("Ljavax/faces/view/facelets/FaceletsResourceResolver;");
 
         byteCodeAnnotationsNames = Collections.unmodifiableSet(bcan);
     }
@@ -138,6 +140,7 @@ public class DefaultAnnotationProvider e
         bcan.add(ManagedBean.class);
         bcan.add(NamedEvent.class);
         bcan.add(FacesBehaviorRenderer.class);
+        bcan.add(FaceletsResourceResolver.class);
         JSF_ANNOTATION_CLASSES = Collections.unmodifiableSet(bcan);
     }
     

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfig.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfig.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfig.java Thu Aug 29 00:50:13 2013
@@ -98,4 +98,13 @@ public abstract class FacesConfig implem
     {
         return Collections.emptyMap();
     }
+    
+    /**
+     * @since 2.2.0
+     * @return 
+     */
+    public List<String> getResourceResolversList()
+    {
+        return Collections.emptyList();
+    }
 }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfigData.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfigData.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfigData.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/element/FacesConfigData.java Thu Aug 29 00:50:13 2013
@@ -274,4 +274,9 @@ public abstract class FacesConfigData im
     {
         return Collections.emptyList();
     }
+    
+    public Collection<String> getResourceResolvers()
+    {
+        return Collections.emptyList();
+    }
 }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/DigesterFacesConfigDispenserImpl.java Thu Aug 29 00:50:13 2013
@@ -123,6 +123,8 @@ public class DigesterFacesConfigDispense
     
     private List<ComponentTagDeclaration> componentTagDeclarations = new ArrayList<ComponentTagDeclaration>();
     
+    private List <String> resourceResolvers = new ArrayList<String>();
+    
     /**
      * Add another unmarshalled faces config object.
      * 
@@ -276,6 +278,7 @@ public class DigesterFacesConfigDispense
         namedEvents.addAll(config.getNamedEvents());
         facesFlowDefinitions.addAll(config.getFacesFlowDefinitions());
         protectedViewUrlPatterns.addAll(config.getProtectedViewsUrlPatternList());
+        resourceResolvers.addAll(config.getResourceResolversList());
     }
 
     /**
@@ -774,4 +777,9 @@ public class DigesterFacesConfigDispense
         return componentTagDeclarations;
     }
 
+    @Override
+    public Collection<String> getResourceResolvers()
+    {
+        return resourceResolvers;
+    }
 }

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java?rev=1518435&r1=1518434&r2=1518435&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/config/impl/digester/elements/FacesConfig.java Thu Aug 29 00:50:13 2013
@@ -62,6 +62,7 @@ public class FacesConfig extends org.apa
         = new ArrayList<FacesFlowDefinition>();
     private List <String> protectedViewsUrlPatternList
         = new ArrayList<String>();
+    private List <String> resourceResolvers = new ArrayList<String>();
     
     private String metadataComplete;
     private String version;
@@ -290,5 +291,15 @@ public class FacesConfig extends org.apa
     {
         protectedViewsUrlPatternList.add(urlPattern);
     }
+    
+    public List<String> getResourceResolversList()
+    {
+        return resourceResolvers;
+    }
+    
+    public void addResourceResolver(String resourceResolverClass)
+    {
+        resourceResolvers.add(resourceResolverClass);
+    }
 
 }