Author: gseitz Date: Sat Nov 3 13:58:39 2007 New Revision: 591686 URL: http://svn.apache.org/viewvc?rev=591686&view=rev Log: WICKET-1125: SmartLinkLabel parser error
Modified: wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java Modified: wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java?rev=591686&r1=591685&r2=591686&view=diff ============================================================================== --- wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java (original) +++ wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java Sat Nov 3 13:58:39 2007 @@ -22,7 +22,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import org.apache.wicket.util.string.Strings; /** * This base implementation iterates over all provided <code>ILinkRenderStrategy</code> @@ -32,7 +31,7 @@ */ public class LinkParser implements ILinkParser { - private Map renderStrategies = new HashMap(); + private final Map renderStrategies = new HashMap(); /** * Adds a render strategy to the parser. @@ -55,7 +54,7 @@ */ public String parse(String text) { - if ((text == null) || (text == "")) + if ((text == null) || ("".equals(text))) { return text; } @@ -64,16 +63,18 @@ Iterator iter = renderStrategies.keySet().iterator(); while (iter.hasNext()) { - String pattern = (String)iter.next(); + String pattern = (String) iter.next(); ILinkRenderStrategy strategy = (ILinkRenderStrategy)renderStrategies.get(pattern); Matcher matcher = Pattern.compile(pattern, Pattern.DOTALL).matcher(work); + StringBuffer buffer = new StringBuffer(); while (matcher.find()) { String str = matcher.group(); - String result = strategy.buildLink(str); - work = Strings.replaceAll(work, str, result).toString(); + matcher.appendReplacement(buffer, strategy.buildLink(str)); } + matcher.appendTail(buffer); + work = buffer.toString(); } return work; }