Author: mgrigorov
Date: Mon Oct  3 09:43:34 2011
New Revision: 1178358

URL: http://svn.apache.org/viewvc?rev=1178358&view=rev
Log:
WICKET-4099 SmartLinkLabel doesn't recognize already tagged links

Ignore text which has markup inside.


Modified:
    
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java
    
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/basic/DefaultLinkParserTest.java

Modified: 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java?rev=1178358&r1=1178357&r2=1178358&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java
 (original)
+++ 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java
 Mon Oct  3 09:43:34 2011
@@ -62,19 +62,24 @@ public class LinkParser implements ILink
                }
 
                String work = text;
-               for (String pattern : renderStrategies.keySet())
-               {
-                       ILinkRenderStrategy strategy = 
renderStrategies.get(pattern);
 
-                       Matcher matcher = Pattern.compile(pattern, 
Pattern.DOTALL).matcher(work);
-                       StringBuffer buffer = new StringBuffer();
-                       while (matcher.find())
+               // don't try to parse markup. just plain text. WICKET-4099
+               if (work.indexOf('<') == -1)
+               {
+                       for (String pattern : renderStrategies.keySet())
                        {
-                               String str = matcher.group();
-                               matcher.appendReplacement(buffer, 
strategy.buildLink(str));
+                               ILinkRenderStrategy strategy = 
renderStrategies.get(pattern);
+
+                               Matcher matcher = Pattern.compile(pattern, 
Pattern.DOTALL).matcher(work);
+                               StringBuffer buffer = new StringBuffer();
+                               while (matcher.find())
+                               {
+                                       String str = matcher.group();
+                                       matcher.appendReplacement(buffer, 
strategy.buildLink(str));
+                               }
+                               matcher.appendTail(buffer);
+                               work = buffer.toString();
                        }
-                       matcher.appendTail(buffer);
-                       work = buffer.toString();
                }
                return work;
        }

Modified: 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/basic/DefaultLinkParserTest.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/basic/DefaultLinkParserTest.java?rev=1178358&r1=1178357&r2=1178358&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/basic/DefaultLinkParserTest.java
 (original)
+++ 
wicket/trunk/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/basic/DefaultLinkParserTest.java
 Mon Oct  3 09:43:34 2011
@@ -63,6 +63,19 @@ public class DefaultLinkParserTest exten
        }
 
        /**
+        * https://issues.apache.org/jira/browse/WICKET-4099
+        */
+       @Test
+       public void dontParseMarkup()
+       {
+               String text = "<a href=\"http://some.url\";>label</a>";
+               ILinkParser parser = new DefaultLinkParser();
+
+               String parsed = parser.parse(text);
+               assertEquals(text, parsed);
+       }
+
+       /**
         * testEmailWithPlusChar()
         */
        @Test


Reply via email to