You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by al...@apache.org on 2007/05/13 18:12:53 UTC
svn commit: r537607 - in
/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket:
RequestCycle.java protocol/http/servlet/ServletWebRequest.java
Author: almaw
Date: Sun May 13 09:12:52 2007
New Revision: 537607
URL: http://svn.apache.org/viewvc?view=rev&rev=537607
Log:
Cache depth and relative URLs for much better link-generation performance.
Modified:
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java?view=diff&rev=537607&r1=537606&r2=537607
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/RequestCycle.java Sun May 13 09:12:52 2007
@@ -704,7 +704,7 @@
params.setBehaviorId(String.valueOf(index));
if (request instanceof ServletWebRequest)
{
- params.setUrlDepth(((ServletWebRequest)request).getRelativePathPrefixToWicketHandler().length() / 3);
+ params.setUrlDepth(((ServletWebRequest)request).getDepthRelativeToWicketHandler());
}
final IRequestTarget target = new BehaviorRequestTarget(component.getPage(), component,
Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java?view=diff&rev=537607&r1=537606&r2=537607
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/protocol/http/servlet/ServletWebRequest.java Sun May 13 09:12:52 2007
@@ -48,6 +48,10 @@
/** Servlet request information. */
private final HttpServletRequest httpServletRequest;
+
+ private int depthRelativeToWicketHandler = -1;
+ private String relativePathPrefixToWicketHandler;
+ private String relativePathPrefixToContextRoot;
/**
* Protected constructor.
@@ -131,6 +135,10 @@
public String getRelativePathPrefixToContextRoot()
{
+ if (relativePathPrefixToWicketHandler != null)
+ {
+ return relativePathPrefixToWicketHandler;
+ }
String tmp = getRelativePathPrefixToWicketHandler();
String servletPath = getServletPath();
if (servletPath == null || servletPath.length() == 0)
@@ -150,11 +158,29 @@
prepender.prepend("../");
}
}
- return prepender.toString();
+ return relativePathPrefixToWicketHandler = prepender.toString();
+ }
+
+ /**
+ * Gets the depth of this request relative to the Wicket handler.
+ * @return
+ */
+ public int getDepthRelativeToWicketHandler()
+ {
+ if (depthRelativeToWicketHandler == -1)
+ {
+ // Initialize it.
+ getRelativePathPrefixToWicketHandler();
+ }
+ return depthRelativeToWicketHandler;
}
public String getRelativePathPrefixToWicketHandler()
{
+ if (relativePathPrefixToWicketHandler != null)
+ {
+ return relativePathPrefixToWicketHandler;
+ }
String relativeUrl = getPath();
PrependingStringBuffer prepender = new PrependingStringBuffer();
@@ -204,25 +230,36 @@
}
return prepender.toString();
}
- else if (forwardUrl != null)
+
+ if (forwardUrl != null)
{
// Strip off leading slash, if forwardUrl has any length.
relativeUrl = forwardUrl.substring(relativeUrl.length() > 0 ? 1 : 0);
}
- for (int i = 0; i < relativeUrl.length(); i++)
+ if (depthRelativeToWicketHandler == -1)
{
- if (relativeUrl.charAt(i) == '?')
+ int depth = 0;
+ for (int i = 0; i < relativeUrl.length(); i++)
{
- break;
- }
- if (relativeUrl.charAt(i) == '/')
- {
- prepender.prepend("../");
+ if (relativeUrl.charAt(i) == '?')
+ {
+ break;
+ }
+ if (relativeUrl.charAt(i) == '/')
+ {
+ depth++;
+ }
}
+ depthRelativeToWicketHandler = depth;
}
-
- return prepender.toString();
+
+ for (int i = 0; i < depthRelativeToWicketHandler; i++)
+ {
+ prepender.prepend("../");
+ }
+
+ return relativePathPrefixToWicketHandler = prepender.toString();
}
/**