You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by kn...@apache.org on 2007/11/13 00:07:19 UTC

svn commit: r594343 - /wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java

Author: knopp
Date: Mon Nov 12 15:07:19 2007
New Revision: 594343

URL: http://svn.apache.org/viewvc?rev=594343&view=rev
Log:
more rigid url parsing

Modified:
    wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java

Modified: wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java
URL: http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java?rev=594343&r1=594342&r2=594343&view=diff
==============================================================================
--- wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java (original)
+++ wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/request/target/coding/HybridUrlCodingStrategy.java Mon Nov 12 15:07:19 2007
@@ -490,19 +490,34 @@
 		String lastSubstring = "";
 		while (begin != -1)
 		{
-			lastSubstring = url.substring(begin);
-			if (lastSubstring.length() > getBeginSeparator().length() + getEndSeparator().length() &&
-				lastSubstring.startsWith(getBeginSeparator()) &&
-				lastSubstring.endsWith(getEndSeparator()))
+			String substring = url.substring(begin);
+			if (substring.length() > getBeginSeparator().length() + getEndSeparator().length() &&
+				substring.startsWith(getBeginSeparator()) && substring.endsWith(getEndSeparator()))
 			{
-				String pageInfoString = lastSubstring.substring(getBeginSeparator().length(), //
-					lastSubstring.length() - getEndSeparator().length());
+				String pageInfoString = substring.substring(getBeginSeparator().length(), //
+					substring.length() - getEndSeparator().length());
 				PageInfo info = PageInfo.parsePageInfo(pageInfoString);
-				last = info;
+				if (info != null)
+				{
+					last = info;
+					lastSubstring = substring;
+				}
+				else
+				{
+					break;
+				}
 			}
 			begin = url.lastIndexOf(getBeginSeparator(), begin - 1);
 		}
-		return new PageInfoExtraction(url.substring(0, url.length() - lastSubstring.length()), last);
+		if (last != null)
+		{
+			return new PageInfoExtraction(url.substring(0, url.length() - lastSubstring.length()),
+				last);
+		}
+		else
+		{
+			return new PageInfoExtraction(url, null);
+		}
 	}
 
 	protected String getBeginSeparator()
@@ -720,6 +735,19 @@
 			if (segments.length > 3)
 			{
 				return null;
+			}
+
+			// go trhough the segments to determine if they don't contains invalid characters
+			for (int i = 0; i < segments.length; ++i)
+			{
+				for (int j = 0; j < segments[i].length(); ++j)
+				{
+					char c = segments[i].charAt(j);
+					if (!Character.isLetterOrDigit(c) && c != '-' && c != '_')
+					{
+						return null;
+					}
+				}
 			}
 
 			if (segments.length == 1 && isNumber(segments[0]))