You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by pa...@apache.org on 2020/07/10 13:38:04 UTC

svn commit: r1879765 [27/41] - in /myfaces/site/publish/core22/myfaces-impl-shared: ./ apidocs/ apidocs/org/apache/myfaces/shared/application/ apidocs/org/apache/myfaces/shared/application/class-use/ apidocs/org/apache/myfaces/shared/component/ apidocs...

Modified: myfaces/site/publish/core22/myfaces-impl-shared/cpd.html
URL: http://svn.apache.org/viewvc/myfaces/site/publish/core22/myfaces-impl-shared/cpd.html?rev=1879765&r1=1879764&r2=1879765&view=diff
==============================================================================
--- myfaces/site/publish/core22/myfaces-impl-shared/cpd.html (original)
+++ myfaces/site/publish/core22/myfaces-impl-shared/cpd.html Fri Jul 10 13:37:56 2020
@@ -29,7 +29,7 @@
   
   
   <div class="date">
-    Last Published: 06 Feb 2017
+    Last Published: 10 Jul 2020
   </div>
             <ul>
       <li>
@@ -803,18 +803,112 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#583">583</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/util/SelectItemsUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/SelectItemsUtils.html#144">144</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>                writer.startElement(HTML.OPTION_ELEM, selectItemInfo.getComponent()); // component);
+                if (itemStrValue != null)
+                {
+                    writer.writeAttribute(HTML.VALUE_ATTR, itemStrValue, null);
+                }
+                else
+                {
+                    writer.writeAttribute(HTML.VALUE_ATTR, &quot;&quot;, null);
+                }
+
+                if (selected)
+                {
+                    writer.writeAttribute(HTML.SELECTED_ATTR, HTML.SELECTED_ATTR, null);
+                }
+
+                boolean disabled = selectItem.isDisabled();
+                if (disabled)
+                {
+                    writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null);
+                }
+
+                String labelClass = null;
+
+                if (componentDisabled || disabled)
+                {
+                    labelClass = (String) component.getAttributes().get(
+                            JSFAttr.DISABLED_CLASS_ATTR);
+                }
+                else
+                {
+                    labelClass = (String) component.getAttributes().get(
+                            JSFAttr.ENABLED_CLASS_ATTR);
+                }
+                if (labelClass != null)
+                {
+                    writer.writeAttribute(&quot;class&quot;, labelClass, &quot;labelClass&quot;);
+                }
+
+                boolean escape;
+                if (component instanceof EscapeCapable)
+                {
+                    escape = ((EscapeCapable) component).isEscape();
+
+                    // Preserve tomahawk semantic. If escape=false
+                    // all items should be non escaped. If escape
+                    // is true check if selectItem.isEscape() is
+                    // true and do it.
+                    // This is done for remain compatibility.
+                    if (escape &amp;&amp; selectItem.isEscape())
+                    {
+                        writer.writeText(selectItem.getLabel(), null);
+                    }
+                    else
+                    {
+                        writer.write(selectItem.getLabel());
+                    }
+                }
+                else
+                {
+                    escape = RendererUtils.getBooleanAttribute(component,
+                            JSFAttr.ESCAPE_ATTR, false);
+                    //default is to escape
+                    //In JSF 1.2, when a SelectItem is created by default 
+                    //selectItem.isEscape() returns true (this property
+                    //is not available on JSF 1.1).
+                    //so, if we found a escape property on the component
+                    //set to true, escape every item, but if not
+                    //check if isEscape() = true first.
+                    if (escape || selectItem.isEscape())
+                    {
+                        writer.writeText(selectItem.getLabel(), null);
+                    }
+                    else
+                    {
+                        writer.write(selectItem.getLabel());
+                    }
+                }
+
+                writer.endElement(HTML.OPTION_ELEM);</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#73">73</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#204">204</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#207">207</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
 <pre>        String app;
-        char c;
-        for (int i = 0; i &lt; string.length (); ++i)
+        char c = ' ';
+        char prevC;
+        int length = string.length();
+        for (int i = 0; i &lt; length; ++i)
         {
             app = null;
+            prevC = c;
             c = string.charAt(i);
             
             // All characters before letters
@@ -828,7 +922,7 @@
                     case '&gt;': app = &quot;&amp;gt;&quot;; break;      //&gt;
                     case ' ':
                         if (encodeSubsequentBlanksToNbsp &amp;&amp;
-                                (i == 0 || (i - 1 &gt;= 0 &amp;&amp; string.charAt(i - 1) == ' ')))
+                                prevC == ' ')
                         {
                             //Space at beginning or after another space
                             app = &quot;&amp;#160;&quot;;
@@ -891,92 +985,107 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#583">583</a></td></tr>
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#218">218</a></td></tr>
 <tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/util/SelectItemsUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/SelectItemsUtils.html#144">144</a></td></tr>
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#379">379</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
-<pre>                writer.startElement(HTML.OPTION_ELEM, selectItemInfo.getComponent()); // component);
-                if (itemStrValue != null)
-                {
-                    writer.writeAttribute(HTML.VALUE_ATTR, itemStrValue, null);
-                }
-                else
-                {
-                    writer.writeAttribute(HTML.VALUE_ATTR, &quot;&quot;, null);
-                }
-
-                if (selected)
+<pre>            if ((int)c &lt; 0x41)
+            {
+                switch (c)
                 {
-                    writer.writeAttribute(HTML.SELECTED_ATTR, HTML.SELECTED_ATTR, null);
+                    case '&quot;': app = &quot;&amp;quot;&quot;; break;    //&quot;
+                    case '&amp;': app = &quot;&amp;amp;&quot;; break;     //&amp;
+                    case '&lt;': app = &quot;&amp;lt;&quot;; break;      //&lt;
+                    case '&gt;': app = &quot;&amp;gt;&quot;; break;      //&gt;
+                    case ' ':
+                        if (encodeSubsequentBlanksToNbsp &amp;&amp;
+                                prevC == ' ')
+                        {
+                            //Space at beginning or after another space
+                            app = &quot;&amp;#160;&quot;;
+                        }
+                        break;
+                    case '\n':
+                        if (encodeNewline)
+                        {
+                            app = &quot;&lt;br/&gt;&quot;;
+                        }
+                        break;
+                    default:
+                        break;
                 }
-
-                boolean disabled = selectItem.isDisabled();
-                if (disabled)
+                // http://www.w3.org/MarkUp/html3/specialchars.html
+                // From C0 extension U+0000-U+001F only U+0009, U+000A and
+                // U+000D are valid control characters
+                if (c &lt;= 0x1F &amp;&amp; c != 0x09 &amp;&amp; c != 0x0A &amp;&amp; c != 0x0D)
                 {
-                    writer.writeAttribute(HTML.DISABLED_ATTR, HTML.DISABLED_ATTR, null);
+                    // Ignore escape character
+                    app = &quot;&quot;;
                 }
+            }
+            else if (encodeNonLatin &amp;&amp; (int)c &gt; 0x80)
+            {
+                 switch(c)
+                 {
+                    //german umlauts
+                    case '\u00E4' : app = &quot;&amp;auml;&quot;;  break;
+                    case '\u00C4' : app = &quot;&amp;Auml;&quot;;  break;
+                    case '\u00F6' : app = &quot;&amp;ouml;&quot;;  break;
+                    case '\u00D6' : app = &quot;&amp;Ouml;&quot;;  break;
+                    case '\u00FC' : app = &quot;&amp;uuml;&quot;;  break;
+                    case '\u00DC' : app = &quot;&amp;Uuml;&quot;;  break;
+                    case '\u00DF' : app = &quot;&amp;szlig;&quot;; break;
 
-                String labelClass = null;
+                    //misc
+                    //case 0x80: app = &quot;&amp;euro;&quot;; break;  sometimes euro symbol is ascii 128, should we suport it?
+                    case '\u20AC': app = &quot;&amp;euro;&quot;;  break;
+                    case '\u00AB': app = &quot;&amp;laquo;&quot;; break;
+                    case '\u00BB': app = &quot;&amp;raquo;&quot;; break;
+                    case '\u00A0': app = &quot;&amp;#160;&quot;; break;
 
-                if (componentDisabled || disabled)
-                {
-                    labelClass = (String) component.getAttributes().get(
-                            JSFAttr.DISABLED_CLASS_ATTR);
-                }
-                else
-                {
-                    labelClass = (String) component.getAttributes().get(
-                            JSFAttr.ENABLED_CLASS_ATTR);
-                }
-                if (labelClass != null)
-                {
-                    writer.writeAttribute(&quot;class&quot;, labelClass, &quot;labelClass&quot;);
+                    default :
+                        //encode all non basic latin characters
+                        app = &quot;&amp;#&quot; + ((int)c) + &quot;;&quot;;
+                    break;
                 }
-
-                boolean escape;
-                if (component instanceof EscapeCapable)
+            }
+            if (app != null)
+            {
+                //if (sb == null)
+                //{
+                //    sb = new StringBuilder(realLength*2);
+                //    sb.append(string, offset, i - offset);
+                //}
+                //sb.append(app);
+                if (start &lt; i)
                 {
-                    escape = ((EscapeCapable) component).isEscape();
-
-                    // Preserve tomahawk semantic. If escape=false
-                    // all items should be non escaped. If escape
-                    // is true check if selectItem.isEscape() is
-                    // true and do it.
-                    // This is done for remain compatibility.
-                    if (escape &amp;&amp; selectItem.isEscape())
-                    {
-                        writer.writeText(selectItem.getLabel(), null);
-                    }
-                    else
-                    {
-                        writer.write(selectItem.getLabel());
-                    }
+                    writer.write(string, start, i-start);
                 }
-                else
+                start = i+1;
+                writer.write(app);
+            }
+            /*
+            else
+            {
+                if (sb != null)
                 {
-                    escape = RendererUtils.getBooleanAttribute(component,
-                            JSFAttr.ESCAPE_ATTR, false);
-                    //default is to escape
-                    //In JSF 1.2, when a SelectItem is created by default 
-                    //selectItem.isEscape() returns true (this property
-                    //is not available on JSF 1.1).
-                    //so, if we found a escape property on the component
-                    //set to true, escape every item, but if not
-                    //check if isEscape() = true first.
-                    if (escape || selectItem.isEscape())
-                    {
-                        writer.writeText(selectItem.getLabel(), null);
-                    }
-                    else
-                    {
-                        writer.write(selectItem.getLabel());
-                    }
+                    sb.append(c);
                 }
+            }*/
+        }
 
-                writer.endElement(HTML.OPTION_ELEM);</pre></div></td></tr></table>
+        //if (sb == null)
+        //{
+        //    writer.write(string, offset, realLength);
+        //}
+        //else
+        //{
+        //    writer.write(sb.toString());
+        //}
+        if (start == offset)</pre></div></td></tr></table>
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>File</th>
@@ -1206,6 +1315,87 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#84">84</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#379">379</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>            if ((int)c &lt; 0x41)
+            {
+                switch (c)
+                {
+                    case '&quot;': app = &quot;&amp;quot;&quot;; break;    //&quot;
+                    case '&amp;': app = &quot;&amp;amp;&quot;; break;     //&amp;
+                    case '&lt;': app = &quot;&amp;lt;&quot;; break;      //&lt;
+                    case '&gt;': app = &quot;&amp;gt;&quot;; break;      //&gt;
+                    case ' ':
+                        if (encodeSubsequentBlanksToNbsp &amp;&amp;
+                                prevC == ' ')
+                        {
+                            //Space at beginning or after another space
+                            app = &quot;&amp;#160;&quot;;
+                        }
+                        break;
+                    case '\n':
+                        if (encodeNewline)
+                        {
+                            app = &quot;&lt;br/&gt;&quot;;
+                        }
+                        break;
+                    default:
+                        break;
+                }
+                // http://www.w3.org/MarkUp/html3/specialchars.html
+                // From C0 extension U+0000-U+001F only U+0009, U+000A and
+                // U+000D are valid control characters
+                if (c &lt;= 0x1F &amp;&amp; c != 0x09 &amp;&amp; c != 0x0A &amp;&amp; c != 0x0D)
+                {
+                    // Ignore escape character
+                    app = &quot;&quot;;
+                }
+            }
+            else if (encodeNonLatin &amp;&amp; (int)c &gt; 0x80)
+            {
+                 switch(c)
+                 {
+                    //german umlauts
+                    case '\u00E4' : app = &quot;&amp;auml;&quot;;  break;
+                    case '\u00C4' : app = &quot;&amp;Auml;&quot;;  break;
+                    case '\u00F6' : app = &quot;&amp;ouml;&quot;;  break;
+                    case '\u00D6' : app = &quot;&amp;Ouml;&quot;;  break;
+                    case '\u00FC' : app = &quot;&amp;uuml;&quot;;  break;
+                    case '\u00DC' : app = &quot;&amp;Uuml;&quot;;  break;
+                    case '\u00DF' : app = &quot;&amp;szlig;&quot;; break;
+
+                    //misc
+                    //case 0x80: app = &quot;&amp;euro;&quot;; break;  sometimes euro symbol is ascii 128, should we suport it?
+                    case '\u20AC': app = &quot;&amp;euro;&quot;;  break;
+                    case '\u00AB': app = &quot;&amp;laquo;&quot;; break;
+                    case '\u00BB': app = &quot;&amp;raquo;&quot;; break;
+                    case '\u00A0': app = &quot;&amp;#160;&quot;; break;
+
+                    default :
+                        //encode all non basic latin characters
+                        app = &quot;&amp;#&quot; + ((int)c) + &quot;;&quot;;
+                    break;
+                }
+            }
+            if (app != null)
+            {
+                //if (sb == null)
+                //{
+                //    sb = new StringBuilder(realLength*2);
+                //    sb.append(string, offset, i - offset);
+                //}
+                //sb.append(app);
+                if (start &lt; i)</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlMessageRendererBase.html#372">372</a></td></tr>
 <tr class="a">
@@ -1247,13 +1437,14 @@
 <div>
 <pre>    private static boolean validateResourceName(String expression, boolean allowSlash)
     {
-        if (expression.length() == 2 &amp;&amp; 
+        int length = expression.length();
+        if (length == 2 &amp;&amp; 
             expression.charAt(0) == '.' &amp;&amp;
             expression.charAt(1) == '.')
         {
             return false;
         }
-        for (int i = 0; i &lt; expression.length(); i++)
+        for (int i = 0; i &lt; length; i++)
         {
             char c = expression.charAt(i);
 
@@ -1358,102 +1549,6 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#222">222</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#381">381</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>                                (i == 0 || (i - 1 &gt;= 0 &amp;&amp; string[i - 1] == ' ')))
-                        {
-                            //Space at beginning or after another space
-                            app = &quot;&amp;#160;&quot;;
-                        }
-                        break;
-                    case '\n':
-                        if (encodeNewline)
-                        {
-                            app = &quot;&lt;br/&gt;&quot;;
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                // http://www.w3.org/MarkUp/html3/specialchars.html
-                // From C0 extension U+0000-U+001F only U+0009, U+000A and
-                // U+000D are valid control characters
-                if (c &lt;= 0x1F &amp;&amp; c != 0x09 &amp;&amp; c != 0x0A &amp;&amp; c != 0x0D)
-                {
-                    // Ignore escape character
-                    app = &quot;&quot;;
-                }
-            }
-            else if (encodeNonLatin &amp;&amp; (int)c &gt; 0x80)
-            {
-                 switch(c)
-                 {
-                    //german umlauts
-                    case '\u00E4' : app = &quot;&amp;auml;&quot;;  break;
-                    case '\u00C4' : app = &quot;&amp;Auml;&quot;;  break;
-                    case '\u00F6' : app = &quot;&amp;ouml;&quot;;  break;
-                    case '\u00D6' : app = &quot;&amp;Ouml;&quot;;  break;
-                    case '\u00FC' : app = &quot;&amp;uuml;&quot;;  break;
-                    case '\u00DC' : app = &quot;&amp;Uuml;&quot;;  break;
-                    case '\u00DF' : app = &quot;&amp;szlig;&quot;; break;
-
-                    //misc
-                    //case 0x80: app = &quot;&amp;euro;&quot;; break;  sometimes euro symbol is ascii 128, should we suport it?
-                    case '\u20AC': app = &quot;&amp;euro;&quot;;  break;
-                    case '\u00AB': app = &quot;&amp;laquo;&quot;; break;
-                    case '\u00BB': app = &quot;&amp;raquo;&quot;; break;
-                    case '\u00A0': app = &quot;&amp;#160;&quot;; break;
-
-                    default :
-                        //encode all non basic latin characters
-                        app = &quot;&amp;#&quot; + ((int)c) + &quot;;&quot;;
-                    break;
-                }
-            }
-            if (app != null)
-            {
-                //if (sb == null)
-                //{
-                //    sb = new StringBuilder(realLength*2);
-                //    sb.append(string, offset, i - offset);
-                //}
-                //sb.append(app);
-                if (start &lt; i)
-                {
-                    writer.write(string, start, i-start);
-                }
-                start = i+1;
-                writer.write(app);
-            }
-            /*
-            else
-            {
-                if (sb != null)
-                {
-                    sb.append(c);
-                }
-            }*/
-        }
-
-        //if (sb == null)
-        //{
-        //    writer.write(string, offset, realLength);
-        //}
-        //else
-        //{
-        //    writer.write(sb.toString());
-        //}
-        if (start == offset)</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.html#105">105</a></td></tr>
 <tr class="a">
@@ -1730,77 +1825,6 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#91">91</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#381">381</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>                                (i == 0 || (i - 1 &gt;= 0 &amp;&amp; string[i - 1] == ' ')))
-                        {
-                            //Space at beginning or after another space
-                            app = &quot;&amp;#160;&quot;;
-                        }
-                        break;
-                    case '\n':
-                        if (encodeNewline)
-                        {
-                            app = &quot;&lt;br/&gt;&quot;;
-                        }
-                        break;
-                    default:
-                        break;
-                }
-                // http://www.w3.org/MarkUp/html3/specialchars.html
-                // From C0 extension U+0000-U+001F only U+0009, U+000A and
-                // U+000D are valid control characters
-                if (c &lt;= 0x1F &amp;&amp; c != 0x09 &amp;&amp; c != 0x0A &amp;&amp; c != 0x0D)
-                {
-                    // Ignore escape character
-                    app = &quot;&quot;;
-                }
-            }
-            else if (encodeNonLatin &amp;&amp; (int)c &gt; 0x80)
-            {
-                 switch(c)
-                 {
-                    //german umlauts
-                    case '\u00E4' : app = &quot;&amp;auml;&quot;;  break;
-                    case '\u00C4' : app = &quot;&amp;Auml;&quot;;  break;
-                    case '\u00F6' : app = &quot;&amp;ouml;&quot;;  break;
-                    case '\u00D6' : app = &quot;&amp;Ouml;&quot;;  break;
-                    case '\u00FC' : app = &quot;&amp;uuml;&quot;;  break;
-                    case '\u00DC' : app = &quot;&amp;Uuml;&quot;;  break;
-                    case '\u00DF' : app = &quot;&amp;szlig;&quot;; break;
-
-                    //misc
-                    //case 0x80: app = &quot;&amp;euro;&quot;; break;  sometimes euro symbol is ascii 128, should we suport it?
-                    case '\u20AC': app = &quot;&amp;euro;&quot;;  break;
-                    case '\u00AB': app = &quot;&amp;laquo;&quot;; break;
-                    case '\u00BB': app = &quot;&amp;raquo;&quot;; break;
-                    case '\u00A0': app = &quot;&amp;#160;&quot;; break;
-
-                    default :
-                        //encode all non basic latin characters
-                        app = &quot;&amp;#&quot; + ((int)c) + &quot;;&quot;;
-                    break;
-                }
-            }
-            if (app != null)
-            {
-                //if (sb == null)
-                //{
-                //    sb = new StringBuilder(realLength*2);
-                //    sb.append(string, offset, i - offset);
-                //}
-                //sb.append(app);
-                if (start &lt; i)</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlSecretRendererBase.html#113">113</a></td></tr>
 <tr class="a">
@@ -2148,52 +2172,6 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/resource/ResourceValidationUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/resource/ResourceValidationUtils.html#104">104</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/resource/ResourceValidationUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/resource/ResourceValidationUtils.html#185">185</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>                 (c == '@') || (c == '[') || (c == ']' ) || (c == '{') || (c == '}'))
-            {
-                continue;
-            }
-            else if (c == '.')
-            {
-                if (i+2 &lt; expression.length())
-                {
-                    char c1 = expression.charAt(i+1);
-                    char c2 = expression.charAt(i+2);
-                    if (c == c1 &amp;&amp; (c2 == '/' || c2 == '\\' ) )
-                    {
-                        return false;
-                    }
-                }
-                continue;
-            }
-            else
-            {
-                return false;
-            }
-        }
-        if (expression.length() &gt;= 3)
-        {
-            int length = expression.length();
-            if ( (expression.charAt(length-3) == '/' || expression.charAt(length-3) == '\\' ) &amp;&amp; 
-                  expression.charAt(length-2) == '.' &amp;&amp;
-                  expression.charAt(length-1) == '.' )
-            {
-                return false;
-            }
-        }
-        return true;
-    }</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/CommonEventUtils.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/CommonEventUtils.html#406">406</a></td></tr>
 <tr class="a">
@@ -2230,40 +2208,6 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1029">1029</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1240">1240</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>                percentEncode(writer, c, characterEncoding);
-            }
-            else if (c == '%')
-            {
-                if (i + 2 &lt; string.length())
-                {
-                    char c1 = string.charAt(i+1);
-                    char c2 = string.charAt(i+2);
-                    if ((( c1 &gt;= '0' &amp;&amp; c1 &lt;='9') || (c1 &gt;='A' &amp;&amp; c1 &lt;='Z') || (c1 &gt;='a' &amp;&amp; c1 &lt;='z')) &amp;&amp;
-                        (( c2 &gt;= '0' &amp;&amp; c2 &lt;='9') || (c2 &gt;='A' &amp;&amp; c2 &lt;='Z') || (c2 &gt;='a' &amp;&amp; c2 &lt;='z')))
-                    {
-                        // do not percent encode, because it could be already encoded
-                    }
-                    else
-                    {
-                        //app = percentEncode(c, characterEncoding);
-                        if (start &lt; i)
-                        {
-                            writer.write(string, start, i-start);
-                        }
-                        start = i+1;
-                        percentEncode(writer, c, characterEncoding);</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlMessagesRendererBase.html#159">159</a></td></tr>
 <tr class="a">
@@ -2301,6 +2245,40 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1040">1040</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1252">1252</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>                percentEncode(writer, c, characterEncoding);
+            }
+            else if (c == '%')
+            {
+                if (i + 2 &lt; length)
+                {
+                    char c1 = string.charAt(i+1);
+                    char c2 = string.charAt(i+2);
+                    if ((( c1 &gt;= '0' &amp;&amp; c1 &lt;='9') || (c1 &gt;='A' &amp;&amp; c1 &lt;='Z') || (c1 &gt;='a' &amp;&amp; c1 &lt;='z')) &amp;&amp;
+                        (( c2 &gt;= '0' &amp;&amp; c2 &lt;='9') || (c2 &gt;='A' &amp;&amp; c2 &lt;='Z') || (c2 &gt;='a' &amp;&amp; c2 &lt;='z')))
+                    {
+                        // do not percent encode, because it could be already encoded
+                    }
+                    else
+                    {
+                        //app = percentEncode(c, characterEncoding);
+                        if (start &lt; i)
+                        {
+                            writer.write(string, start, i-start);
+                        }
+                        start = i+1;
+                        percentEncode(writer, c, characterEncoding);</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlInputFileRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlInputFileRendererBase.html#239">239</a></td></tr>
 <tr class="a">
@@ -2356,6 +2334,51 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/resource/ResourceValidationUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/resource/ResourceValidationUtils.html#105">105</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/resource/ResourceValidationUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/resource/ResourceValidationUtils.html#186">186</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>                 (c == '@') || (c == '[') || (c == ']' ) || (c == '{') || (c == '}'))
+            {
+                continue;
+            }
+            else if (c == '.')
+            {
+                if (i+2 &lt; length)
+                {
+                    char c1 = expression.charAt(i+1);
+                    char c2 = expression.charAt(i+2);
+                    if (c == c1 &amp;&amp; (c2 == '/' || c2 == '\\' ) )
+                    {
+                        return false;
+                    }
+                }
+                continue;
+            }
+            else
+            {
+                return false;
+            }
+        }
+        if (length &gt;= 3)
+        {
+            if ( (expression.charAt(length-3) == '/' || expression.charAt(length-3) == '\\' ) &amp;&amp; 
+                  expression.charAt(length-2) == '.' &amp;&amp;
+                  expression.charAt(length-1) == '.' )
+            {
+                return false;
+            }
+        }
+        return true;
+    }</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/CommonEventUtils.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/CommonEventUtils.html#392">392</a></td></tr>
 <tr class="a">
@@ -2563,17 +2586,17 @@
 <th>Line</th></tr>
 <tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#631">631</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#640">640</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#790">790</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#800">800</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
 <pre>                app = percentEncode(c, characterEncoding);
             }
             else if (c == '%')
             {
-                if (i + 2 &lt; string.length())
+                if (i + 2 &lt; length)
                 {
                     char c1 = string.charAt(i+1);
                     char c2 = string.charAt(i+2);
@@ -2590,18 +2613,56 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.html#326">326</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.html#305">305</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>                               UIInput uiComponent,
+                               String value,
+                               boolean disabled,
+                               boolean checked,
+                               boolean renderId,
+                               Integer itemNum)
+            throws IOException
+    {
+        String clientId = uiComponent.getClientId(facesContext);
+
+        String itemId = (itemNum == null)? null : clientId + 
+                facesContext.getNamingContainerSeparatorChar() + itemNum;
+
+        ResponseWriter writer = facesContext.getResponseWriter();
+
+        writer.startElement(HTML.INPUT_ELEM, uiComponent);
+
+        if (itemId != null)
+        {
+            writer.writeAttribute(HTML.ID_ATTR, itemId, null);
+        }
+        else if (renderId)
+        {
+            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
+        }
+        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_RADIO, null);</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#790">790</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#800">800</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1240">1240</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1252">1252</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
 <pre>                percentEncode(writer, c, characterEncoding);
             }
             else if (c == '%')
             {
-                if (i + 2 &lt; string.length())
+                if (i + 2 &lt; length)
                 {
                     char c1 = string.charAt(i+1);
                     char c2 = string.charAt(i+2);
@@ -2618,17 +2679,17 @@
 <th>Line</th></tr>
 <tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#631">631</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#640">640</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1029">1029</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1040">1040</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
 <pre>                percentEncode(writer, c, &quot;UTF-8&quot;);
             }
             else if (c == '%')
             {
-                if (i + 2 &lt; string.length())
+                if (i + 2 &lt; length)
                 {
                     char c1 = string.charAt(i+1);
                     char c2 = string.charAt(i+2);
@@ -2645,44 +2706,6 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlCheckboxRendererBase.html#326">326</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.html#305">305</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>                               UIInput uiComponent,
-                               String value,
-                               boolean disabled,
-                               boolean checked,
-                               boolean renderId,
-                               Integer itemNum)
-            throws IOException
-    {
-        String clientId = uiComponent.getClientId(facesContext);
-
-        String itemId = (itemNum == null)? null : clientId + 
-                facesContext.getNamingContainerSeparatorChar() + itemNum;
-
-        ResponseWriter writer = facesContext.getResponseWriter();
-
-        writer.startElement(HTML.INPUT_ELEM, uiComponent);
-
-        if (itemId != null)
-        {
-            writer.writeAttribute(HTML.ID_ATTR, itemId, null);
-        }
-        else if (renderId)
-        {
-            writer.writeAttribute(HTML.ID_ATTR, clientId, null);
-        }
-        writer.writeAttribute(HTML.TYPE_ATTR, HTML.INPUT_TYPE_RADIO, null);</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#361">361</a></td></tr>
 <tr class="a">
@@ -2783,6 +2806,34 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#800">800</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1040">1040</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>                percentEncode(writer, c, &quot;UTF-8&quot;);
+            }
+            else if (c == '%')
+            {
+                if (i + 2 &lt; length)
+                {
+                    char c1 = string.charAt(i+1);
+                    char c2 = string.charAt(i+2);
+                    if ((( c1 &gt;= '0' &amp;&amp; c1 &lt;='9') || (c1 &gt;='A' &amp;&amp; c1 &lt;='Z') || (c1 &gt;='a' &amp;&amp; c1 &lt;='z')) &amp;&amp;
+                        (( c2 &gt;= '0' &amp;&amp; c2 &lt;='9') || (c2 &gt;='A' &amp;&amp; c2 &lt;='Z') || (c2 &gt;='a' &amp;&amp; c2 &lt;='z')))
+                    {
+                        // do not percent encode, because it could be already encoded
+                        // and we don't want encode it twice
+                    }
+                    else
+                    {</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.java</td>
 <td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRadioRendererBase.html#349">349</a></td></tr>
 <tr class="a">
@@ -2855,75 +2906,11 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#1377">1377</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#1408">1408</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>            UIComponent component, String forClientId, SelectItem item,
-            boolean disabled) throws IOException
-    {
-        writer.startElement(HTML.LABEL_ELEM, null); // component);
-        writer.writeAttribute(HTML.FOR_ATTR, forClientId, null);
-        String labelClass = null;
-        if (disabled)
-        {
-            labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
-        }
-        else
-        {
-            labelClass = (String) component.getAttributes()
-                    .get(org.apache.myfaces.shared.renderkit.JSFAttr.ENABLED_CLASS_ATTR);
-        }
-        if (labelClass != null)
-        {
-            writer.writeAttribute(&quot;class&quot;, labelClass, &quot;labelClass&quot;);
-        }
-        if ((item.getLabel() != null) &amp;&amp; (item.getLabel().length() &gt; 0))</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.html#283">283</a></td></tr>
-<tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.html#323">323</a></td></tr>
-<tr class="b"><td colspan='2'>
-<div>
-<pre>    private Integer[] getBodyRows(FacesContext facesContext, UIComponent component)
-    {
-        Integer[] bodyrows = null;
-        String bodyrowsAttr = (String) component.getAttributes().get(JSFAttr.BODYROWS_ATTR);
-        if(bodyrowsAttr != null &amp;&amp; !&quot;&quot;.equals(bodyrowsAttr)) 
-        {   
-            String[] bodyrowsString = StringUtils.trim(StringUtils.splitShortString(bodyrowsAttr, ','));
-            // parsing with no exception handling, because of JSF-spec: 
-            // &quot;If present, this must be a comma separated list of integers.&quot;
-            bodyrows = new Integer[bodyrowsString.length];
-            for(int i = 0; i &lt; bodyrowsString.length; i++) 
-            {
-                bodyrows[i] = Integer.valueOf(bodyrowsString[i]);
-            }
-            
-        }
-        else
-        {
-            bodyrows = ZERO_INT_ARRAY;
-        }</pre></div></td></tr></table>
-<table border="0" class="bodyTable">
-<tr class="a">
-<th>File</th>
-<th>Line</th></tr>
-<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#489">489</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#497">497</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#760">760</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#769">769</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
 <pre>    {
@@ -2931,7 +2918,8 @@
         String app;
         char c;
         boolean endLoop = false;
-        for (int i = 0; i &lt; string.length (); ++i)
+        int length = string.length();
+        for (int i = 0; i &lt; length; ++i)
         {
             app = null;
             c = string.charAt(i);
@@ -2962,14 +2950,46 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
+<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#1377">1377</a></td></tr>
+<tr class="a">
+<td>org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlRendererUtils.html#1408">1408</a></td></tr>
+<tr class="b"><td colspan='2'>
+<div>
+<pre>            UIComponent component, String forClientId, SelectItem item,
+            boolean disabled) throws IOException
+    {
+        writer.startElement(HTML.LABEL_ELEM, null); // component);
+        writer.writeAttribute(HTML.FOR_ATTR, forClientId, null);
+        String labelClass = null;
+        if (disabled)
+        {
+            labelClass = (String) component.getAttributes().get(JSFAttr.DISABLED_CLASS_ATTR);
+        }
+        else
+        {
+            labelClass = (String) component.getAttributes()
+                    .get(org.apache.myfaces.shared.renderkit.JSFAttr.ENABLED_CLASS_ATTR);
+        }
+        if (labelClass != null)
+        {
+            writer.writeAttribute(&quot;class&quot;, labelClass, &quot;labelClass&quot;);
+        }
+        if ((item.getLabel() != null) &amp;&amp; (item.getLabel().length() &gt; 0))</pre></div></td></tr></table>
+<table border="0" class="bodyTable">
+<tr class="a">
+<th>File</th>
+<th>Line</th></tr>
+<tr class="b">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#886">886</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#897">897</a></td></tr>
 <tr class="a">
 <td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1209">1209</a></td></tr>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1221">1221</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
-<pre>        for (int i = offset; i &lt; offset+realLength; ++i)
+<pre>        for (int i = offset; i &lt; length; ++i)
         {
             app = null;
             c = string.charAt(i);
@@ -3006,50 +3026,33 @@
 <th>File</th>
 <th>Line</th></tr>
 <tr class="b">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#810">810</a></td></tr>
+<td>org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlGridRendererBase.html#283">283</a></td></tr>
 <tr class="a">
-<td>org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.java</td>
-<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/util/HTMLEncoder.html#1272">1272</a></td></tr>
+<td>org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.java</td>
+<td><a href="./xref/org/apache/myfaces/shared/renderkit/html/HtmlTableRendererBase.html#323">323</a></td></tr>
 <tr class="b"><td colspan='2'>
 <div>
-<pre>                    percentEncode(writer, c, characterEncoding);
-                }
-            }
-            else if (c == '&amp;')
-            {
-                if (i+4 &lt; string.length() )
-                {
-                    if ('a' == string.charAt(i+1) &amp;&amp;
-                        'm' == string.charAt(i+2) &amp;&amp;
-                        'p' == string.charAt(i+3) &amp;&amp;
-                        ';' == string.charAt(i+4))
-                    {
-                        //Skip
-                    }
-                    else
-                    {
-                        app = &quot;&amp;amp;&quot;;
-                    }
-                }
-                else
-                {
-                    app = &quot;&amp;amp;&quot;;
-                }
-            }
-            else
+<pre>    private Integer[] getBodyRows(FacesContext facesContext, UIComponent component)
+    {
+        Integer[] bodyrows = null;
+        String bodyrowsAttr = (String) component.getAttributes().get(JSFAttr.BODYROWS_ATTR);
+        if(bodyrowsAttr != null &amp;&amp; !&quot;&quot;.equals(bodyrowsAttr)) 
+        {   
+            String[] bodyrowsString = StringUtils.trim(StringUtils.splitShortString(bodyrowsAttr, ','));
+            // parsing with no exception handling, because of JSF-spec: 
+            // &quot;If present, this must be a comma separated list of integers.&quot;
+            bodyrows = new Integer[bodyrowsString.length];
+            for(int i = 0; i &lt; bodyrowsString.length; i++) 
             {
-                //No encoding, just do nothing, char will be added later.
+                bodyrows[i] = Integer.valueOf(bodyrowsString[i]);
             }
-                        
-            if (app != null)
-            {
-                //if (sb == null)
-                //{
-                //    sb = new StringBuilder(string.substring(0, i));
-                //}
-                //sb.append(app);
-                if (start &lt; i)</pre></div></td></tr></table>
+            
+        }
+        else
+        {
+            bodyrows = ZERO_INT_ARRAY;
+        }</pre></div></td></tr></table>
 <table border="0" class="bodyTable">
 <tr class="a">
 <th>File</th>
@@ -3119,7 +3122,7 @@
     <div id="footer">
       <div class="copyright">
       &#169;  
-          2017
+          2020
        Apache Software Foundation, Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
        Apache MyFaces, Apache Tobago, Apache, the Apache feather logo, and the Apache MyFaces project logos are trademarks of The Apache Software Foundation.
       </div><!-- close copyright -->