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/09/05 02:42:00 UTC

svn commit: r1520182 - in /myfaces/core/trunk: impl/src/test/java/org/apache/myfaces/renderkit/html/ impl/src/test/java/org/apache/myfaces/test/utils/ impl/src/test/resources/org/apache/myfaces/renderkit/ impl/src/test/resources/org/apache/myfaces/rend...

Author: lu4242
Date: Thu Sep  5 00:42:00 2013
New Revision: 1520182

URL: http://svn.apache.org/r1520182
Log:
MYFACES-3717 Implement "role" attribute in related components and renderers

Added:
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java   (with props)
    myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/
    myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/
    myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml   (with props)
Modified:
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormatRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java
    myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/test/utils/HtmlCheckAttributesUtil.java
    myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonPropertyUtils.java
    myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
    myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlButtonRendererTest.java Thu Sep  5 00:42:00 2013
@@ -91,6 +91,7 @@ public class HtmlButtonRendererTest exte
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
 
             /* If js is set to false, no need to bother over event attributes
             //_FocusBlurProperties
@@ -141,6 +142,7 @@ public class HtmlButtonRendererTest exte
                new HtmlRenderedAttr("dir"), 
                new HtmlRenderedAttr("lang"), 
                new HtmlRenderedAttr("title"),
+               new HtmlRenderedAttr("role"),
                //_FocusBlurProperties
                new HtmlRenderedAttr("onfocus"), 
                new HtmlRenderedAttr("onblur"),

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlCheckboxRendererTest.java Thu Sep  5 00:42:00 2013
@@ -93,6 +93,7 @@ public class HtmlCheckboxRendererTest ex
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_FocusBlurProperties
             new HtmlRenderedAttr("onfocus"), 
             new HtmlRenderedAttr("onblur"),

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormatRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormatRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormatRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlFormatRendererTest.java Thu Sep  5 00:42:00 2013
@@ -72,6 +72,7 @@ public class HtmlFormatRendererTest exte
                 new HtmlRenderedAttr("dir"), 
                 new HtmlRenderedAttr("lang"), 
                 new HtmlRenderedAttr("title"),
+                new HtmlRenderedAttr("role"),
                 //_StyleProperties
                 new HtmlRenderedAttr("style"), 
                 new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlLabelRendererTest.java Thu Sep  5 00:42:00 2013
@@ -76,6 +76,7 @@ public class HtmlLabelRendererTest exten
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_FocusBlurProperties
             new HtmlRenderedAttr("onfocus"), 
             new HtmlRenderedAttr("onblur"),

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessageRendererTest.java Thu Sep  5 00:42:00 2013
@@ -102,6 +102,7 @@ public class HtmlMessageRendererTest ext
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_EventProperties
             new HtmlRenderedAttr("onclick"), 
             new HtmlRenderedAttr("ondblclick"), 

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlMessagesRendererTest.java Thu Sep  5 00:42:00 2013
@@ -95,6 +95,7 @@ public class HtmlMessagesRendererTest ex
             //_StyleProperties
             new HtmlRenderedAttr("styleClass", "styleClass", "class=\"styleClass\""),
             new HtmlRenderedAttr("style"),
+            new HtmlRenderedAttr("role"),
             new HtmlRenderedAttr("warnClass", "warnClass", "class=\"warnClass\"",2),
             new HtmlRenderedAttr("warnStyle", "warnStyle", "style=\"warnStyle\"",2)
         };

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRadioRendererTest.java Thu Sep  5 00:42:00 2013
@@ -89,6 +89,7 @@ public class HtmlRadioRendererTest exten
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_FocusBlurProperties
             new HtmlRenderedAttr("onfocus"), 
             new HtmlRenderedAttr("onblur"),

Added: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java?rev=1520182&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java (added)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java Thu Sep  5 00:42:00 2013
@@ -0,0 +1,90 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.myfaces.renderkit.html;
+
+import java.io.StringWriter;
+
+import javax.el.ExpressionFactory;
+import javax.faces.application.ViewHandler;
+import javax.faces.component.UIViewRoot;
+
+import junit.framework.Assert;
+
+import org.apache.myfaces.test.mock.MockResponseWriter;
+import org.apache.myfaces.view.facelets.ELExpressionCacheMode;
+import org.apache.myfaces.view.facelets.FaceletTestCase;
+import org.apache.myfaces.view.facelets.impl.FaceletCompositionContextImpl;
+import org.junit.Test;
+
+public class HtmlRolePassedThroughTestCase extends FaceletTestCase
+{
+
+    @Override
+    protected void setUpServletObjects() throws Exception
+    {
+        super.setUpServletObjects();
+    }
+
+    @Override
+    protected ExpressionFactory createExpressionFactory()
+    {
+        return new org.apache.el.ExpressionFactoryImpl();
+    }
+
+    @Test
+    public void testRole() throws Exception
+    {
+        UIViewRoot root = facesContext.getViewRoot();
+        vdl.buildView(facesContext, root, "role.xhtml");
+
+        StringWriter sw = new StringWriter();
+        MockResponseWriter mrw = new MockResponseWriter(sw);
+        facesContext.setResponseWriter(mrw);
+
+        root.encodeAll(facesContext);
+        sw.flush();
+        //System.out.println("********************HTMLRolePassedThroughTest*****************");
+        //System.out.println(sw.toString());
+        //System.out.println("********************HTMLRolePassedThroughTest*****************");
+        Assert.assertTrue(sw.toString().contains("value=\"user name\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:link\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("<table role=\"new presentation\">"));
+        Assert.assertTrue(sw.toString().contains("value=\"one\" role=\"new presentation\""));
+
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:data\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:graphic\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("type=\"file\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:area\" role=\"new presentation\""));
+
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:outputFormat\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:outputLabel\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:outputLink\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("id=\"helloForm:outputText\" role=\"new presentation\""));
+
+        // Assert.assertTrue(sw.toString().contains("(?s).*<h:selectBooleanCheckbox\\s+role=\"new presentation\".*"));
+        // Assert.assertTrue(sw.toString().contains("(?s).*<h:selectManyCheckbox\\s+role=\"new presentation\".*"));
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:selectManyListbox\" multiple=\"multiple\" size=\"0\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:selectManyMenu\" multiple=\"multiple\" size=\"1\" role=\"new presentation\""));
+
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:selectOneListbox\" size=\"0\" role=\"new presentation\""));
+        Assert.assertTrue(sw.toString().contains("name=\"helloForm:selectOneMenu\" size=\"1\" role=\"new presentation\""));
+        // Assert.assertTrue(sw.toString().contains("(?s).*<h:selectOneRadio\\s+role=\"new presentation\".*"));
+
+    }
+}

Propchange: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/renderkit/html/HtmlRolePassedThroughTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/test/utils/HtmlCheckAttributesUtil.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/test/utils/HtmlCheckAttributesUtil.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/test/utils/HtmlCheckAttributesUtil.java (original)
+++ myfaces/core/trunk/impl/src/test/java/org/apache/myfaces/test/utils/HtmlCheckAttributesUtil.java Thu Sep  5 00:42:00 2013
@@ -176,6 +176,7 @@ public class HtmlCheckAttributesUtil 
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_FocusBlurProperties
             new HtmlRenderedAttr("onfocus"), 
             new HtmlRenderedAttr("onblur"),
@@ -226,6 +227,7 @@ public class HtmlCheckAttributesUtil 
             new HtmlRenderedAttr("dir"), 
             new HtmlRenderedAttr("lang"), 
             new HtmlRenderedAttr("title"),
+            new HtmlRenderedAttr("role"),
             //_EventProperties
             new HtmlRenderedAttr("onclick"), 
             new HtmlRenderedAttr("ondblclick"), 

Added: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml?rev=1520182&view=auto
==============================================================================
--- myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml (added)
+++ myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml Thu Sep  5 00:42:00 2013
@@ -0,0 +1,52 @@
+<!--
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+-->
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+      xmlns:ui="http://java.sun.com/jsf/facelets"
+      xmlns:h="http://java.sun.com/jsf/html">
+    <body>
+        <h:form role="new presentation" id="helloForm" >
+            <h:inputText type="text" id="userNo" value="1" />
+            <h:inputText role="new presentation" type="text" id="userName" value="user name" />
+            <br/>
+            <h:commandLink role="new presentation" id ="link"  />   
+            <h:panelGrid role="new presentation" columns="2" > 
+                <h:commandButton role="new presentation" id="one" value="one"  /> 
+                <h:dataTable role="new presentation" id="data"  />   
+                <h:graphicImage role="new presentation"  id="graphic"  />
+                <h:inputFile role="new presentation"  id="file"  />
+                <h:inputTextarea role="new presentation"  id="area"  />	  
+                <h:outputFormat role="new presentation" id="outputFormat"  />
+                <h:outputLabel role="new presentation" id="outputLabel"  />
+                <h:outputLink role="new presentation"  id="outputLink"  />
+                <h:outputText role="new presentation"  id="outputText"  />
+                <h:selectBooleanCheckbox role="new presentation"  id="selectBooleanCheckbox"  />
+                <h:selectManyCheckbox role="new presentation" id="selectManyCheckbox"  />
+                <h:selectManyListbox role="new presentation"  id="selectManyListbox"  />
+                <h:selectManyMenu role="new presentation" id="selectManyMenu"  />
+                <h:selectOneListbox role="new presentation" id="selectOneListbox"  />
+                <h:selectOneMenu role="new presentation" id="selectOneMenu"  />
+                <h:selectOneRadio role="new presentation"  id="selectOneRadio"  />
+            </h:panelGrid> 
+            <h:commandButton type="submit" id="submit" action="success" value="Submit" />
+            <br/>
+        </h:form>
+    </body>
+</html>

Propchange: myfaces/core/trunk/impl/src/test/resources/org/apache/myfaces/renderkit/html/role.xhtml
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonPropertyUtils.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonPropertyUtils.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonPropertyUtils.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/CommonPropertyUtils.java Thu Sep  5 00:42:00 2013
@@ -62,6 +62,11 @@ public final class CommonPropertyUtils
             HtmlRendererUtils.renderHTMLStringAttribute(writer, component,
                     HTML.TITLE_ATTR, HTML.TITLE_ATTR);
         }
+        if ((commonPropertiesMarked & CommonPropertyConstants.ROLE_PROP) != 0)
+        {
+            HtmlRendererUtils.renderHTMLStringAttribute(writer, component,
+                    HTML.ROLE_ATTR, HTML.ROLE_ATTR);
+        }
     }
     
     public static final void renderUniversalPropertiesWithoutTitle(ResponseWriter writer,
@@ -78,6 +83,11 @@ public final class CommonPropertyUtils
             HtmlRendererUtils.renderHTMLStringAttribute(writer, component,
                     HTML.LANG_ATTR, HTML.LANG_ATTR);
         }
+        if ((commonPropertiesMarked & CommonPropertyConstants.ROLE_PROP) != 0)
+        {
+            HtmlRendererUtils.renderHTMLStringAttribute(writer, component,
+                    HTML.ROLE_ATTR, HTML.ROLE_ATTR);
+        }
     }
 
     public static final void renderStyleProperties(ResponseWriter writer,

Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HTML.java Thu Sep  5 00:42:00 2013
@@ -113,19 +113,22 @@ public interface HTML
     String STYLE_ATTR = "style";
     String TITLE_ATTR = "title";
     String STYLE_CLASS_ATTR = "styleClass"; //"class" cannot be used as property name
-     
+    // Role attribute (applies for "every" html tag)
+    String ROLE_ATTR  = "role"; 
+    
     String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE =
     {
         DIR_ATTR,
         LANG_ATTR,
         TITLE_ATTR,
-
+        ROLE_ATTR,
         //NOTE: if changed, please verify universal attributes in HtmlMessageRenderer !
     };
     String[] UNIVERSAL_ATTRIBUTES_WITHOUT_STYLE_AND_TITLE =
     {
         DIR_ATTR,
         LANG_ATTR,
+        ROLE_ATTR,
     };
     String[] UNIVERSAL_ATTRIBUTES =
             (String[]) org.apache.myfaces.shared.util.ArrayUtils.concat(

Modified: myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java?rev=1520182&r1=1520181&r2=1520182&view=diff
==============================================================================
--- myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java (original)
+++ myfaces/core/trunk/shared/src/main/java/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java Thu Sep  5 00:42:00 2013
@@ -305,6 +305,12 @@ public abstract class HtmlMessageRendere
                     writer, message, HTML.SPAN_ELEM, HTML.STYLE_ATTR, style, span);
             span |= HtmlRendererUtils.renderHTMLAttributeWithOptionalStartElement(
                     writer, message, HTML.SPAN_ELEM, HTML.STYLE_CLASS_ATTR, styleClass, span);
+            // Remember if renderStyleAndStyleClass is true, it means style and styleClass
+            // are rendered on the outer tag, and in that sense, role attribute should
+            // be rendered there too.
+            span |= HtmlRendererUtils.renderHTMLAttributeWithOptionalStartElement(
+                    writer, message, HTML.ROLE_ATTR, HTML.ROLE_ATTR, 
+                    message.getAttributes().get(HTML.ROLE_ATTR), span);
         }
 
         if (showSummary && !(title == null && tooltip))