Author: jdonnerstag
Date: Fri Dec  3 18:45:58 2010
New Revision: 1041947

URL: http://svn.apache.org/viewvc?rev=1041947&view=rev
Log:
fixed WICKET-3222 AbstractMarkupParser doesn't remove Comments correctly
Issue: WICKET-3222

Modified:
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/AbstractMarkupParser.java
    
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/AbstractMarkupParser.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/AbstractMarkupParser.java?rev=1041947&r1=1041946&r2=1041947&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/AbstractMarkupParser.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/markup/AbstractMarkupParser.java
 Fri Dec  3 18:45:58 2010
@@ -30,7 +30,6 @@ import org.apache.wicket.markup.parser.f
 import org.apache.wicket.settings.IMarkupSettings;
 import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
 import org.apache.wicket.util.resource.StringResourceStream;
-import org.apache.wicket.util.string.AppendingStringBuffer;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -404,9 +403,9 @@ public abstract class AbstractMarkupPars
                int pos1 = rawMarkup.indexOf("<!--");
                while (pos1 != -1)
                {
-                       final int pos2 = rawMarkup.indexOf("-->", pos1 + 4);
+                       int pos2 = rawMarkup.indexOf("-->", pos1 + 4);
 
-                       final AppendingStringBuffer buf = new 
AppendingStringBuffer(rawMarkup.length());
+                       final StringBuilder buf = new 
StringBuilder(rawMarkup.length());
                        if (pos2 != -1)
                        {
                                final String comment = rawMarkup.substring(pos1 
+ 4, pos2);
@@ -424,8 +423,12 @@ public abstract class AbstractMarkupPars
                                        }
                                        rawMarkup = buf.toString();
                                }
+                               else
+                               {
+                                       pos1 = pos2;
+                               }
                        }
-                       pos1 = rawMarkup.length() <= pos1 + 2 ? -1 : 
rawMarkup.indexOf("<!--", pos1 + 4);
+                       pos1 = rawMarkup.indexOf("<!--", pos1);
                }
                return rawMarkup;
        }

Modified: 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java?rev=1041947&r1=1041946&r2=1041947&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
 (original)
+++ 
wicket/trunk/wicket/src/test/java/org/apache/wicket/markup/MarkupParserTest.java
 Fri Dec  3 18:45:58 2010
@@ -182,7 +182,8 @@ public final class MarkupParserTest exte
                final String extension)
        {
                final String path = cls.getName().replace('.', '/');
-               final IResourceStream resource = locator.locate(cls, path, 
style, variation, locale, extension, false);
+               final IResourceStream resource = locator.locate(cls, path, 
style, variation, locale,
+                       extension, false);
 
                return new MarkupResourceStream(resource, null, null);
        }
@@ -388,7 +389,8 @@ public final class MarkupParserTest exte
                assertEquals("html", ((ComponentTag)markup.get(0)).getName());
                assertEquals("html", ((ComponentTag)markup.get(2)).getName());
                assertEquals(true, markup.get(1) instanceof RawMarkup);
-               assertEquals("<script language=\"JavaScript\">... <x a> 
...</script>", markup.get(1).toString());
+               assertEquals("<script language=\"JavaScript\">... <x a> 
...</script>", markup.get(1)
+                       .toString());
        }
 
        /**
@@ -413,4 +415,20 @@ public final class MarkupParserTest exte
                t = (ComponentTag)markup.get(2);
                assertEquals(t.getId(), "span2");
        }
+
+       /**
+        * 
+        * @throws IOException
+        * @throws ResourceStreamNotFoundException
+        */
+       public final void testComments() throws IOException, 
ResourceStreamNotFoundException
+       {
+               
tester.getApplication().getMarkupSettings().setStripComments(true);
+               final MarkupParser parser = new MarkupParser(
+                       "<span><!-- c1 --> <!-- c2 --><!-- c3 --></span>");
+               IMarkupFragment markup = parser.parse();
+
+               RawMarkup raw = (RawMarkup)markup.get(0);
+               assertEquals("<span> </span>", raw.toString());
+       }
 }


Reply via email to