You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by gs...@apache.org on 2007/11/03 21:58:40 UTC

svn commit: r591686 - /wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/basic/LinkParser.java

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;
 	}