You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2015/07/29 16:42:11 UTC

tapestry-5 git commit: TAP5-2476: improve performance of org.apache.tapestry5.dom.AbstractMarkupModel.encodeQuoted(String, StringBuilder)

Repository: tapestry-5
Updated Branches:
  refs/heads/master f5ed86bd1 -> f13311782


TAP5-2476: improve performance of org.apache.tapestry5.dom.AbstractMarkupModel.encodeQuoted(String, StringBuilder)


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/f1331178
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/f1331178
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/f1331178

Branch: refs/heads/master
Commit: f13311782acc8b8a3da311623761cb970d04387e
Parents: f5ed86b
Author: Jochen Kemnade <jo...@eddyson.de>
Authored: Wed Jul 29 16:41:27 2015 +0200
Committer: Jochen Kemnade <jo...@eddyson.de>
Committed: Wed Jul 29 16:41:27 2015 +0200

----------------------------------------------------------------------
 .../tapestry5/dom/AbstractMarkupModel.java      | 46 +++++++++++++-------
 1 file changed, 30 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/f1331178/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
index ce6831d..63879c2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
@@ -92,9 +92,9 @@ public abstract class AbstractMarkupModel implements MarkupModel
     public void encodeQuoted(String content, StringBuilder builder)
     {
         assert content != null;
-        int length = content.length();
-
-        for (int i = 0; i < length; i++)
+        int length = content.length(), tokenStart = 0, i = 0;
+        String delimiter;
+        for (; i < length; i++)
         {
             char ch = content.charAt(i);
 
@@ -102,28 +102,27 @@ public abstract class AbstractMarkupModel implements MarkupModel
             {
                 case '<':
 
-                    builder.append("&lt;");
-                    continue;
+                    delimiter = "&lt;";
+                    break;
 
                 case '>':
 
-                    builder.append("&gt;");
-                    continue;
+                    delimiter = "&gt;";
+                    break;
 
                 case '&':
 
-                    builder.append("&amp;");
-                    continue;
+                    delimiter = "&amp;";
+                    break;
 
                 case '"':
 
                     if (!useApostropheForAttributes)
                     {
-                        builder.append("&quot;");
-                        continue;
+                        delimiter = "&quot;";
+                        break;
                     }
 
-                    builder.append(ch);
                     continue;
 
                 case '\'':
@@ -131,17 +130,32 @@ public abstract class AbstractMarkupModel implements MarkupModel
                     if (useApostropheForAttributes)
                     {
                         //TAP5-714
-                        builder.append("&#39;");
-                        continue;
+                        delimiter = "&#39;";
+                        break;
                     }
 
 
-                    // Fall through
+                    continue;
+
 
                 default:
 
-                    builder.append(ch);
+                    continue;
+            }
+
+            if (tokenStart != i)
+            {
+                builder.append(content.subSequence(tokenStart, i));
             }
+
+            builder.append(delimiter);
+
+            tokenStart = i + 1;
+        }
+
+        if (tokenStart != length)
+        {
+            builder.append(content.subSequence(tokenStart, length));
         }
     }
 }