Skip to content

Commit cab9f7a

Browse files
committed
Use servlet request for parameters as to make sure its always available
1 parent b3eb3e5 commit cab9f7a

File tree

1 file changed

+11
-18
lines changed

1 file changed

+11
-18
lines changed

slice-mapper/src/main/java/com/cognifide/slice/mapper/impl/processor/RequestParameterProcessor.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -19,23 +19,24 @@
1919
*/
2020
package com.cognifide.slice.mapper.impl.processor;
2121

22+
import com.cognifide.slice.api.qualifier.Nullable;
2223
import com.cognifide.slice.mapper.annotation.RequestParameter;
2324
import com.cognifide.slice.mapper.api.processor.FieldProcessor;
2425
import com.google.inject.Inject;
2526
import org.apache.commons.lang.StringUtils;
26-
import org.apache.sling.api.SlingHttpServletRequest;
2727
import org.apache.sling.api.resource.Resource;
2828
import org.apache.sling.api.resource.ValueMap;
2929

30+
import javax.servlet.ServletRequest;
3031
import java.lang.reflect.Field;
31-
import java.util.ArrayList;
32+
import java.util.Arrays;
3233
import java.util.Collection;
33-
import java.util.List;
3434

3535
public class RequestParameterProcessor implements FieldProcessor {
3636

3737
@Inject
38-
private SlingHttpServletRequest slingRequest;
38+
@Nullable
39+
private ServletRequest servletRequest;
3940

4041
@Override
4142
public boolean accepts(final Resource resource, final Field field) {
@@ -45,30 +46,22 @@ public boolean accepts(final Resource resource, final Field field) {
4546

4647
@Override
4748
public Object mapResourceToField(Resource resource, ValueMap valueMap, Field field, String propertyName) {
49+
if (servletRequest == null) {
50+
return null;
51+
}
4852
String parameterName = getParameterName(field);
4953
Class<?> fieldType = field.getType();
5054
if (Collection.class.isAssignableFrom(fieldType)) {
51-
org.apache.sling.api.request.RequestParameter[] parameters = slingRequest.getRequestParameters(parameterName);
55+
String[] parameters = servletRequest.getParameterValues(parameterName);
5256
if (parameters != null) {
53-
return getParameterValues(parameters);
57+
return Arrays.asList(parameters);
5458
}
5559
} else {
56-
org.apache.sling.api.request.RequestParameter parameter = slingRequest.getRequestParameter(parameterName);
57-
if (parameter != null) {
58-
return parameter.getString();
59-
}
60+
return servletRequest.getParameter(parameterName);
6061
}
6162
return null;
6263
}
6364

64-
private List<String> getParameterValues(org.apache.sling.api.request.RequestParameter[] parameters) {
65-
List<String> result = new ArrayList<String>();
66-
for (org.apache.sling.api.request.RequestParameter parameter : parameters) {
67-
result.add(parameter.getString());
68-
}
69-
return result;
70-
}
71-
7265
private String getParameterName(Field field) {
7366
final RequestParameter annotation = field.getAnnotation(RequestParameter.class);
7467
if ((annotation != null) && StringUtils.isNotBlank(annotation.value())) {

0 commit comments

Comments
 (0)