Skip to content

Commit 8b3d43d

Browse files
committed
Merge branch 'master' of https://github.com/jenkinsci/stapler into html-JENKINS-31203
2 parents ab9442d + e410848 commit 8b3d43d

11 files changed

Lines changed: 37 additions & 308 deletions

File tree

core/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<dependency>
2727
<groupId>commons-beanutils</groupId>
2828
<artifactId>commons-beanutils</artifactId>
29-
<version>1.9.4</version>
29+
<version>1.10.1</version>
3030
</dependency>
3131
<dependency>
3232
<groupId>commons-codec</groupId>

core/src/main/java/org/kohsuke/stapler/RequestImpl.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -259,17 +259,30 @@ public String getParameter(String name) {
259259
}
260260

261261
@Override
262-
public Map getParameterMap() {
263-
Map parameterMap = super.getParameterMap();
262+
public Map<String, String[]> getParameterMap() {
263+
var parameterMap = super.getParameterMap();
264264
if (isMultipart()) {
265265
Map<String, String> data = getFormDataFormFields();
266-
parameterMap.putAll(data);
266+
parameterMap = new HashMap<>(parameterMap);
267+
for (var e : data.entrySet()) {
268+
var values = parameterMap.get(e.getKey());
269+
if (values == null) {
270+
values = new String[] {e.getValue()};
271+
} else {
272+
int len = values.length;
273+
var moreValues = Arrays.copyOf(values, len + 1);
274+
moreValues[len] = e.getValue();
275+
values = moreValues;
276+
}
277+
parameterMap.put(e.getKey(), values);
278+
}
279+
parameterMap = Collections.unmodifiableMap(parameterMap);
267280
}
268281
return parameterMap;
269282
}
270283

271284
@Override
272-
public Enumeration getParameterNames() {
285+
public Enumeration<String> getParameterNames() {
273286
if (!isMultipart()) {
274287
return super.getParameterNames();
275288
}

core/src/test/java/org/kohsuke/stapler/DataBindingTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ public String getContentType() {
7777
return "text/html";
7878
}
7979
};
80-
mr.getParameterMap().put("a", "123");
81-
mr.getParameterMap().put("b", "string");
80+
mr.parameters.put("a", "123");
81+
mr.parameters.put("b", "string");
8282
RequestImpl req = new RequestImpl(new Stapler(), mr, Collections.emptyList(), null);
8383
new Function.InstanceFunction(
8484
getClass().getMethod("doFromStaplerMethod", StaplerRequest2.class, int.class, Binder.class))

core/src/test/java/org/kohsuke/stapler/MockRequest.java

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,12 @@
1919
import java.io.UnsupportedEncodingException;
2020
import java.security.Principal;
2121
import java.util.Collection;
22+
import java.util.Collections;
2223
import java.util.Enumeration;
2324
import java.util.HashMap;
2425
import java.util.Locale;
2526
import java.util.Map;
27+
import java.util.stream.Collectors;
2628

2729
/**
2830
* @author Kohsuke Kawaguchi
@@ -53,13 +55,13 @@ public String getHeader(String name) {
5355
}
5456

5557
@Override
56-
public Enumeration getHeaders(String name) {
58+
public Enumeration<String> getHeaders(String name) {
5759
// TODO
5860
throw new UnsupportedOperationException();
5961
}
6062

6163
@Override
62-
public Enumeration getHeaderNames() {
64+
public Enumeration<String> getHeaderNames() {
6365
// TODO
6466
throw new UnsupportedOperationException();
6567
}
@@ -184,7 +186,7 @@ public Object getAttribute(String name) {
184186
}
185187

186188
@Override
187-
public Enumeration getAttributeNames() {
189+
public Enumeration<String> getAttributeNames() {
188190
// TODO
189191
throw new UnsupportedOperationException();
190192
}
@@ -222,18 +224,17 @@ public ServletInputStream getInputStream() throws IOException {
222224
public Map<String, String> parameters = new HashMap<>();
223225

224226
@Override
225-
public String getParameter(String name) {
227+
public final String getParameter(String name) {
226228
return parameters.get(name);
227229
}
228230

229231
@Override
230-
public Enumeration getParameterNames() {
231-
// TODO
232-
throw new UnsupportedOperationException();
232+
public final Enumeration<String> getParameterNames() {
233+
return Collections.enumeration(parameters.keySet());
233234
}
234235

235236
@Override
236-
public String[] getParameterValues(String name) {
237+
public final String[] getParameterValues(String name) {
237238
String v = getParameter(name);
238239
if (v == null) {
239240
return new String[0];
@@ -242,8 +243,9 @@ public String[] getParameterValues(String name) {
242243
}
243244

244245
@Override
245-
public Map getParameterMap() {
246-
return parameters;
246+
public final Map<String, String[]> getParameterMap() {
247+
return Collections.unmodifiableMap(parameters.entrySet().stream()
248+
.collect(Collectors.toMap(Map.Entry::getKey, e -> new String[] {e.getValue()})));
247249
}
248250

249251
@Override
@@ -307,7 +309,7 @@ public Locale getLocale() {
307309
}
308310

309311
@Override
310-
public Enumeration getLocales() {
312+
public Enumeration<Locale> getLocales() {
311313
// TODO
312314
throw new UnsupportedOperationException();
313315
}

core/src/test/java/org/kohsuke/stapler/RequestImplTest.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@
3737
import java.util.ArrayList;
3838
import java.util.Arrays;
3939
import java.util.Collections;
40-
import java.util.Enumeration;
4140
import java.util.List;
4241
import net.sf.json.JSONObject;
4342
import org.apache.commons.fileupload2.core.FileItem;
@@ -120,11 +119,6 @@ public int getContentLength() {
120119
return buf.length;
121120
}
122121

123-
@Override
124-
public Enumeration getParameterNames() {
125-
return Collections.enumeration(List.of("p1"));
126-
}
127-
128122
@Override
129123
public ServletInputStream getInputStream() throws IOException {
130124
return new ServletInputStream() {
@@ -160,6 +154,7 @@ public void setReadListener(ReadListener readListener) {
160154
};
161155
}
162156
};
157+
mockRequest.parameters.put("p1", "somevalue");
163158

164159
RequestImpl request = new RequestImpl(stapler, mockRequest, Collections.emptyList(), null);
165160

groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovyClassLoaderTearOff.java

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import groovy.lang.GroovyCodeSource;
2929
import java.io.IOException;
3030
import java.net.URL;
31-
import org.apache.commons.jelly.XMLOutput;
3231
import org.codehaus.groovy.control.CompilerConfiguration;
3332
import org.kohsuke.stapler.MetaClass;
3433
import org.kohsuke.stapler.MetaClassLoader;
@@ -42,16 +41,6 @@ public class GroovyClassLoaderTearOff {
4241

4342
private final GroovyClassLoader gcl;
4443

45-
private final SimpleTemplateParser parser = new SimpleTemplateParser() {
46-
/**
47-
* Sends the output via {@link XMLOutput#write(String)}
48-
*/
49-
@Override
50-
protected String printCommand() {
51-
return "output.write";
52-
}
53-
};
54-
5544
public GroovyClassLoaderTearOff(MetaClassLoader owner) {
5645
this.owner = owner;
5746
gcl = createGroovyClassLoader();
@@ -93,11 +82,4 @@ public GroovierJellyScript parse(URL script) throws IOException {
9382

9483
return new GroovierJellyScript(gcl.parseClass(gcs), script);
9584
}
96-
97-
public GroovierJellyScript parseGSP(URL res) throws IOException, ClassNotFoundException {
98-
GroovyCodeSource gcs = new GroovyCodeSource(parser.parse(res), res.toExternalForm(), res.toExternalForm());
99-
gcs.setCachable(false);
100-
101-
return new GroovierJellyScript(gcl.parseClass(gcs), res);
102-
}
10385
}

groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovyFacet.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@ public class GroovyFacet extends Facet implements JellyCompatibleFacet {
5555
public void buildViewDispatchers(final MetaClass owner, List<Dispatcher> dispatchers) {
5656
ScriptInvoker scriptInvoker = owner.webApp.getFacet(JellyFacet.class).scriptInvoker;
5757
dispatchers.add(createValidatingDispatcher(owner.loadTearOff(GroovyClassTearOff.class), scriptInvoker));
58-
dispatchers.add(createValidatingDispatcher(owner.loadTearOff(GroovyServerPageTearOff.class), scriptInvoker));
5958
}
6059

6160
@Override
@@ -75,9 +74,6 @@ public RequestDispatcher createRequestDispatcher(RequestImpl request, Klass type
7574
ScriptInvoker scriptExecutor = request.getWebApp().getFacet(JellyFacet.class).scriptInvoker;
7675
RequestDispatcher d =
7776
createRequestDispatcher(owner.loadTearOff(GroovyClassTearOff.class), scriptExecutor, it, viewName);
78-
if (d == null) {
79-
d = createRequestDispatcher(owner.loadTearOff(GroovyServerPageTearOff.class), scriptExecutor, it, viewName);
80-
}
8177
return d;
8278
}
8379

@@ -96,9 +92,7 @@ public void buildIndexDispatchers(MetaClass owner, List<Dispatcher> dispatchers)
9692
public boolean handleIndexRequest(RequestImpl req, ResponseImpl rsp, Object node, MetaClass nodeMetaClass)
9793
throws IOException, ServletException {
9894
ScriptInvoker scriptExecutor = req.getWebApp().getFacet(JellyFacet.class).scriptInvoker;
99-
return handleIndexRequest(nodeMetaClass.loadTearOff(GroovyClassTearOff.class), scriptExecutor, req, rsp, node)
100-
|| handleIndexRequest(
101-
nodeMetaClass.loadTearOff(GroovyServerPageTearOff.class), scriptExecutor, req, rsp, node);
95+
return handleIndexRequest(nodeMetaClass.loadTearOff(GroovyClassTearOff.class), scriptExecutor, req, rsp, node);
10296
}
10397

10498
private static final Set<Class<GroovyClassTearOff>> TEAROFF_TYPES = Set.of(GroovyClassTearOff.class);

groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovyServerPageScript.java

Lines changed: 0 additions & 25 deletions
This file was deleted.

groovy/src/main/java/org/kohsuke/stapler/jelly/groovy/GroovyServerPageTearOff.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

0 commit comments

Comments
 (0)