summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
diff options
context:
space:
mode:
authorJames Moger <james.moger@gitblit.com>2014-02-28 17:58:24 -0500
committerJames Moger <james.moger@gitblit.com>2014-03-01 09:21:32 -0500
commit9bb5225b87746b75bbd065bd0ab5af3e48cab0a4 (patch)
treeacd4272de59dc11f732751c278ebd7e1915ec45e /src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
parent4bdd3958a1d1167063acdf3a0cca49ac56b8e446 (diff)
downloadgitblit-9bb5225b87746b75bbd065bd0ab5af3e48cab0a4.tar.gz
gitblit-9bb5225b87746b75bbd065bd0ab5af3e48cab0a4.zip
Bypass Wicket bug related to url coding of array-type parameters
Diffstat (limited to 'src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java')
-rw-r--r--src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java75
1 files changed, 75 insertions, 0 deletions
diff --git a/src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java b/src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
index 4f67a4ab..382148a6 100644
--- a/src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
+++ b/src/main/java/com/gitblit/wicket/GitblitParamUrlCodingStrategy.java
@@ -16,12 +16,16 @@
package com.gitblit.wicket;
import java.text.MessageFormat;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
import org.apache.wicket.IRequestTarget;
import org.apache.wicket.Page;
import org.apache.wicket.PageParameters;
import org.apache.wicket.request.RequestParameters;
import org.apache.wicket.request.target.coding.MixedParamUrlCodingStrategy;
+import org.apache.wicket.util.string.AppendingStringBuffer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -40,6 +44,8 @@ import com.gitblit.Keys;
*/
public class GitblitParamUrlCodingStrategy extends MixedParamUrlCodingStrategy {
+ private final String[] parameterNames;
+
private Logger logger = LoggerFactory.getLogger(GitblitParamUrlCodingStrategy.class);
private IStoredSettings settings;
@@ -61,6 +67,7 @@ public class GitblitParamUrlCodingStrategy extends MixedParamUrlCodingStrategy {
Class<C> bookmarkablePageClass, String[] parameterNames) {
super(mountPath, bookmarkablePageClass, parameterNames);
+ this.parameterNames = parameterNames;
this.settings = settings;
}
@@ -114,4 +121,72 @@ public class GitblitParamUrlCodingStrategy extends MixedParamUrlCodingStrategy {
requestParameters.getParameters()));
return super.decode(requestParameters);
}
+
+ /**
+ * @see org.apache.wicket.request.target.coding.AbstractRequestTargetUrlCodingStrategy#appendParameters(org.apache.wicket.util.string.AppendingStringBuffer,
+ * java.util.Map)
+ */
+ @Override
+ protected void appendParameters(AppendingStringBuffer url, Map<String, ?> parameters)
+ {
+ if (!url.endsWith("/"))
+ {
+ url.append("/");
+ }
+
+ Set<String> parameterNamesToAdd = new HashSet<String>(parameters.keySet());
+
+ // Find index of last specified parameter
+ boolean foundParameter = false;
+ int lastSpecifiedParameter = parameterNames.length;
+ while (lastSpecifiedParameter != 0 && !foundParameter)
+ {
+ foundParameter = parameters.containsKey(parameterNames[--lastSpecifiedParameter]);
+ }
+
+ if (foundParameter)
+ {
+ for (int i = 0; i <= lastSpecifiedParameter; i++)
+ {
+ String parameterName = parameterNames[i];
+ final Object param = parameters.get(parameterName);
+ String value = param instanceof String[] ? ((String[])param)[0] : ((param == null)
+ ? null : param.toString());
+ if (value == null)
+ {
+ value = "";
+ }
+ if (!url.endsWith("/"))
+ {
+ url.append("/");
+ }
+ url.append(urlEncodePathComponent(value));
+ parameterNamesToAdd.remove(parameterName);
+ }
+ }
+
+ if (!parameterNamesToAdd.isEmpty())
+ {
+ boolean first = true;
+ for (String parameterName : parameterNamesToAdd)
+ {
+ final Object param = parameters.get(parameterName);
+ if (param instanceof String[]) {
+ String [] values = (String[]) param;
+ for (String value : values) {
+ url.append(first ? '?' : '&');
+ url.append(urlEncodeQueryComponent(parameterName)).append("=").append(
+ urlEncodeQueryComponent(value));
+ first = false;
+ }
+ } else {
+ url.append(first ? '?' : '&');
+ String value = String.valueOf(param);
+ url.append(urlEncodeQueryComponent(parameterName)).append("=").append(
+ urlEncodeQueryComponent(value));
+ }
+ first = false;
+ }
+ }
+ }
} \ No newline at end of file
able29 Nextcloud server, a safe home for all your data: https://github.com/nextcloud/serverwww-data
summaryrefslogtreecommitdiffstats
path: root/core/l10n/fi_FI.php
blob: 1f2568f95132983a548909543aee190db085258b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127