craigmcc 2002/10/12 18:59:32
Modified: src/share/org/apache/struts/util RequestUtils.java
src/test/org/apache/struts/util TestRequestUtils.java
Log:
Enhance computeURL() to use "&" as the connector between parameters
on a forward URL (but not a redirect URL).
PR: Bugzilla #13458
Bug report submitted by Matt Raible <matt at raibledesigns.com>
Patch submitted by Antoni Reuss <areus at ibit.org>
Revision Changes Path
1.59 +14 -8
jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java
Index: RequestUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/share/org/apache/struts/util/RequestUtils.java,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -r1.58 -r1.59
--- RequestUtils.java 13 Oct 2002 01:33:38 -0000 1.58
+++ RequestUtils.java 13 Oct 2002 01:59:31 -0000 1.59
@@ -448,6 +448,12 @@
anchor = null;
}
+ // Define the parameter separator
+ String separator = "&";
+ if (redirect) {
+ separator = "&";
+ }
+
// Add the required request parameters
boolean question = temp.indexOf('?') >= 0;
Iterator keys = params.keySet().iterator();
@@ -459,7 +465,7 @@
url.append('?');
question = true;
} else {
- url.append("&");
+ url.append(separator);
}
url.append(URLEncoder.encode(key));
url.append('='); // Interpret null as "no value"
@@ -468,7 +474,7 @@
url.append('?');
question = true;
} else {
- url.append("&");
+ url.append(separator);
}
url.append(URLEncoder.encode(key));
url.append('=');
@@ -480,7 +486,7 @@
url.append('?');
question = true;
} else {
- url.append("&");
+ url.append(separator);
}
url.append(URLEncoder.encode(key));
url.append('=');
@@ -491,7 +497,7 @@
url.append('?');
question = true;
} else {
- url.append("&");
+ url.append(separator);
}
url.append(URLEncoder.encode(key));
url.append('=');
1.11 +80 -11
jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java
Index: TestRequestUtils.java
===================================================================
RCS file:
/home/cvs/jakarta-struts/src/test/org/apache/struts/util/TestRequestUtils.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- TestRequestUtils.java 27 Jul 2002 23:26:09 -0000 1.10
+++ TestRequestUtils.java 13 Oct 2002 01:59:32 -0000 1.11
@@ -831,7 +831,7 @@
}
- // Add parameters only
+ // Add parameters only -- forward URL
public void testComputeURL3a() {
request.setPathElements("/myapp", "/action.do", null, null);
@@ -849,13 +849,13 @@
}
assertNotNull("url present", url);
assertTrue("url value",
- url.equals("/myapp/bar?foo1=bar1&foo2=bar2") ||
- url.equals("/myapp/bar?foo2=bar2&foo1=bar1"));
+ url.equals("/myapp/bar?foo1=bar1&foo2=bar2") ||
+ url.equals("/myapp/bar?foo2=bar2&foo1=bar1"));
}
- // Add anchor only
+ // Add anchor only -- forward URL
public void testComputeURL3b() {
request.setPathElements("/myapp", "/action.do", null, null);
@@ -876,7 +876,7 @@
}
- // Add parameters + anchor
+ // Add parameters + anchor -- forward URL
public void testComputeURL3c() {
request.setPathElements("/myapp", "/action.do", null, null);
@@ -894,8 +894,77 @@
}
assertNotNull("url present", url);
assertTrue("url value",
- url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") ||
- url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor"));
+ url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") ||
+ url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor"));
+
+ }
+
+
+ // Add parameters only -- redirect URL
+ public void testComputeURL3d() {
+
+ request.setPathElements("/myapp", "/action.do", null, null);
+ Map map = new HashMap();
+ map.put("foo1", "bar1");
+ map.put("foo2", "bar2");
+ String url = null;
+ try {
+ url = RequestUtils.computeURL
+ (page, null,
+ null, "/bar",
+ map, null, true);
+ } catch (MalformedURLException e) {
+ fail("MalformedURLException: " + e);
+ }
+ assertNotNull("url present", url);
+ assertTrue("url value",
+ url.equals("/myapp/bar?foo1=bar1&foo2=bar2") ||
+ url.equals("/myapp/bar?foo2=bar2&foo1=bar1"));
+
+ }
+
+
+ // Add anchor only -- redirect URL
+ public void testComputeURL3e() {
+
+ request.setPathElements("/myapp", "/action.do", null, null);
+ String url = null;
+ try {
+ url = RequestUtils.computeURL
+ (page, null,
+ null, "/bar",
+ null, "anchor", true);
+ } catch (MalformedURLException e) {
+ fail("MalformedURLException: " + e);
+ }
+ assertNotNull("url present", url);
+ assertEquals("url value",
+ "/myapp/bar#anchor",
+ url);
+
+ }
+
+
+ // Add parameters + anchor -- redirect URL
+ public void testComputeURL3f() {
+
+ request.setPathElements("/myapp", "/action.do", null, null);
+ Map map = new HashMap();
+ map.put("foo1", "bar1");
+ map.put("foo2", "bar2");
+ String url = null;
+ try {
+ url = RequestUtils.computeURL
+ (page, null,
+ null, "/bar",
+ map, "anchor", false);
+ } catch (MalformedURLException e) {
+ fail("MalformedURLException: " + e);
+ }
+ assertNotNull("url present", url);
+ assertTrue("url value",
+ url.equals("/myapp/bar?foo1=bar1&foo2=bar2#anchor") ||
+ url.equals("/myapp/bar?foo2=bar2&foo1=bar1#anchor"));
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>