You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by aw...@apache.org on 2007/09/04 21:09:16 UTC

svn commit: r572772 - in /myfaces/trinidad/trunk/trinidad: trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/ trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/ trinidad-impl/src/main/java/org/apache/myfaces...

Author: awiner
Date: Tue Sep  4 12:09:16 2007
New Revision: 572772

URL: http://svn.apache.org/viewvc?rev=572772&view=rev
Log:
TRINIDAD-679: tr:messages fails to display EL labels correctly
- MessageBoxRenderer wasn't retrieving labels correctly
- ... mostly because LabeledFacesMessage was seriously obscure, so Javadoc'd it and
  added a convenience method for real label retrieval

Modified:
    myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/LabeledFacesMessage.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java
    myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/MessageWrapper.java

Modified: myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/LabeledFacesMessage.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/LabeledFacesMessage.java?rev=572772&r1=572771&r2=572772&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/LabeledFacesMessage.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-api/src/main/java/org/apache/myfaces/trinidad/util/LabeledFacesMessage.java Tue Sep  4 12:09:16 2007
@@ -19,6 +19,9 @@
 package org.apache.myfaces.trinidad.util;
 
 import javax.faces.application.FacesMessage;
+import javax.faces.context.FacesContext;
+import javax.faces.el.ValueBinding;
+
 /**
  * Extension to FacesMessage which keeps track of the label on the component
  * that generated the message.
@@ -30,6 +33,12 @@
   {
   }
 
+  /**
+   * Creates a LabeledFacesMessage without a pre-set label.
+   * @param severity the severity of the message
+   * @param summary the message summary
+   * @param detail the message detail
+   */
   public LabeledFacesMessage(
     FacesMessage.Severity severity,
     String summary,
@@ -38,6 +47,14 @@
     super(severity, summary, detail);
   }
 
+
+  /**
+   * Creates a LabeledFacesMessage with a label.
+   * @param severity the severity of the message
+   * @param summary the message summary
+   * @param detail the message detail
+   * @param label the message label - either a String or a ValueBinding
+   */
   public LabeledFacesMessage(
     FacesMessage.Severity severity,
     String summary,
@@ -48,15 +65,41 @@
     _label = label;
   }
 
+  /**
+   * Returns the label, which can be either a String or a ValueBinding.
+   */
   public Object getLabel()
   {
     return _label;
   }
 
+  /**
+   * Sets the label, which can be either a String or a ValueBinding.
+   */
   public void setLabel(Object label)
   {
     _label = label;
   }
+
+  /**
+   * Gets a string representation of the label.  If the label
+   * is a ValueBinding, the expression is evaluated and the string
+   * value returned.
+   */
+  public String getLabelAsString(FacesContext context)
+  {
+    Object label = getLabel();
+    if (label instanceof ValueBinding)
+    {
+      label = ((ValueBinding) label).getValue(context);
+    }
+
+    if (label == null)
+      return null;
+
+    return label.toString();
+  }
+
 
   private Object _label;
   private static final long serialVersionUID = 1L;

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java?rev=572772&r1=572771&r2=572772&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/renderkit/core/xhtml/MessageBoxRenderer.java Tue Sep  4 12:09:16 2007
@@ -297,7 +297,7 @@
         writer.startElement(XhtmlConstants.LINK_ELEMENT, null);
         renderStyleClass(context, arc, SkinSelectors.LINK_STYLE_CLASS);
         writer.writeAttribute(XhtmlConstants.HREF_ATTRIBUTE, "#" + anchor, null);
-        writer.write(labeledMsg.getLabel().toString());
+        writer.write(labeledMsg.getLabelAsString(context));
         writer.endElement(XhtmlConstants.LINK_ELEMENT);
       }
     }

Modified: myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/MessageWrapper.java
URL: http://svn.apache.org/viewvc/myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/MessageWrapper.java?rev=572772&r1=572771&r2=572772&view=diff
==============================================================================
--- myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/MessageWrapper.java (original)
+++ myfaces/trinidad/trunk/trinidad/trinidad-impl/src/main/java/org/apache/myfaces/trinidadinternal/ui/laf/base/desktop/MessageWrapper.java Tue Sep  4 12:09:16 2007
@@ -73,20 +73,11 @@
 
     if (_msg instanceof LabeledFacesMessage)
     {
-      Object label = ((LabeledFacesMessage) _msg).getLabel();
-      if (label != null)
-      {
-        // TODO: change to ValueExpression in JSF 1.2
-        if (label instanceof ValueBinding)
-        {
-          FacesContext context = FacesContext.getCurrentInstance();
-          label = ((ValueBinding) label).getValue(context);
-        }
-
-        _label = label.toString();
-        return _label;
-      }
+      FacesContext context = FacesContext.getCurrentInstance();
+      _label = ((LabeledFacesMessage) _msg).getLabelAsString(context);
+      return _label;
     }
+
     return dflt;
   }