You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2010/04/01 23:09:44 UTC

svn commit: r930098 - /myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java

Author: jakobk
Date: Thu Apr  1 21:09:43 2010
New Revision: 930098

URL: http://svn.apache.org/viewvc?rev=930098&view=rev
Log:
MYFACES-2624 Automatically add h:messages if ProjectStage is Development (additionally log all unhandled FacesMessages when not in Development mode)

Modified:
    myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java

Modified: myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java?rev=930098&r1=930097&r2=930098&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java (original)
+++ myfaces/core/trunk/impl/src/main/java/org/apache/myfaces/lifecycle/RenderResponseExecutor.java Thu Apr  1 21:09:43 2010
@@ -19,9 +19,12 @@
 package org.apache.myfaces.lifecycle;
 
 import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 import javax.faces.FacesException;
 import javax.faces.application.Application;
+import javax.faces.application.FacesMessage;
 import javax.faces.application.ViewHandler;
 import javax.faces.component.UIViewRoot;
 import javax.faces.context.FacesContext;
@@ -41,6 +44,9 @@ import org.apache.myfaces.util.ExternalC
  */
 class RenderResponseExecutor implements PhaseExecutor
 {
+    
+    private static final Logger log = Logger.getLogger(RenderResponseExecutor.class.getName());
+    
     public boolean execute(FacesContext facesContext)
     {
         Application application = facesContext.getApplication();
@@ -105,6 +111,29 @@ class RenderResponseExecutor implements 
                     || (newViewId != null && !newViewId.equals(viewId)));
             
             viewHandler.renderView(facesContext, root);
+            
+            // log all unhandled FacesMessages, don't swallow them
+            if (!facesContext.getMessageList().isEmpty())
+            {
+                StringBuilder builder = new StringBuilder();
+                boolean shouldLog = false;
+                for (FacesMessage message : facesContext.getMessageList())
+                {
+                    if (!message.isRendered())
+                    {
+                        builder.append("\n- ");
+                        builder.append(message.getDetail());
+                        
+                        shouldLog = true;
+                    }
+                }
+                if (shouldLog)
+                {
+                    log.log(Level.WARNING, "There are some unhandled FacesMessages, " +
+                            "this means not every FacesMessage had a chance to be rendered.\n" +
+                            "These unhandled FacesMessages are: " + builder.toString());
+                }
+            }
         }
         catch (IOException e)
         {