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]))