|
18 | 18 | import org.apache.wicket.request.handler.resource.ResourceStreamRequestHandler; |
19 | 19 | import org.apache.wicket.request.cycle.RequestCycle; |
20 | 20 | import org.apache.wicket.request.http.handler.RedirectRequestHandler; |
| 21 | +import org.apache.wicket.request.Url; |
| 22 | +import org.apache.wicket.request.UrlRenderer; |
21 | 23 | import org.apache.wicket.util.string.StringValue; |
22 | 24 | import org.apache.wicket.util.time.Time; |
23 | 25 | import org.orienteer.jnpm.ILogger; |
@@ -79,14 +81,12 @@ protected ResourceResponse newResourceResponse(Attributes attributes) { |
79 | 81 | } |
80 | 82 |
|
81 | 83 | if(cdnRequest.shouldRedirect()) { |
82 | | - String redirectUrl = cdnRequest.buildRedirectUrl(versionInfo); |
83 | | - if(redirectUrl != null) { |
84 | | - StringBuilder fullRedirectUrl = new StringBuilder(redirectUrl); |
85 | | - String queryString = buildQueryString(params); |
86 | | - if(queryString != null && !queryString.isEmpty()) { |
87 | | - fullRedirectUrl.append('?').append(queryString); |
88 | | - } |
89 | | - RequestCycle.get().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler(fullRedirectUrl.toString())); |
| 84 | + String baseRedirectUrl = cdnRequest.buildRedirectUrl(versionInfo); |
| 85 | + if(baseRedirectUrl != null) { |
| 86 | + Url fullRedirectUrl = buildRedirectUrl(baseRedirectUrl, params); |
| 87 | + UrlRenderer urlRenderer = RequestCycle.get().getUrlRenderer(); |
| 88 | + String renderedRedirectUrl = urlRenderer.renderUrl(fullRedirectUrl); |
| 89 | + RequestCycle.get().scheduleRequestHandlerAfterCurrent(new RedirectRequestHandler(renderedRedirectUrl)); |
90 | 90 | response.setError(HttpServletResponse.SC_FOUND); |
91 | 91 | return response; |
92 | 92 | } |
@@ -135,15 +135,15 @@ protected String getPathInfo(PageParameters params) { |
135 | 135 | return sb.toString(); |
136 | 136 | } |
137 | 137 |
|
138 | | - protected String buildQueryString(PageParameters params) { |
139 | | - StringBuilder queryString = new StringBuilder(); |
| 138 | + protected Url buildRedirectUrl(String baseRedirectUrl, PageParameters params) { |
| 139 | + Url redirectUrl = Url.parse(baseRedirectUrl); |
140 | 140 | for(String namedKey : params.getNamedKeys()) { |
141 | | - if(queryString.length() > 0) { |
142 | | - queryString.append('&'); |
| 141 | + java.util.List<StringValue> values = params.getValues(namedKey); |
| 142 | + for(StringValue value : values) { |
| 143 | + redirectUrl.addQueryParameter(namedKey, value.toString()); |
143 | 144 | } |
144 | | - queryString.append(namedKey).append('=').append(params.get(namedKey).toString()); |
145 | 145 | } |
146 | | - return queryString.toString(); |
| 146 | + return redirectUrl; |
147 | 147 | } |
148 | 148 |
|
149 | 149 | public static void mount(WebApplication app) { |
|
0 commit comments