1919 */
2020package com .cognifide .slice .mapper .impl .processor ;
2121
22+ import com .cognifide .slice .api .qualifier .Nullable ;
2223import com .cognifide .slice .mapper .annotation .RequestParameter ;
2324import com .cognifide .slice .mapper .api .processor .FieldProcessor ;
2425import com .google .inject .Inject ;
2526import org .apache .commons .lang .StringUtils ;
26- import org .apache .sling .api .SlingHttpServletRequest ;
2727import org .apache .sling .api .resource .Resource ;
2828import org .apache .sling .api .resource .ValueMap ;
2929
30+ import javax .servlet .ServletRequest ;
3031import java .lang .reflect .Field ;
31- import java .util .ArrayList ;
32+ import java .util .Arrays ;
3233import java .util .Collection ;
33- import java .util .List ;
3434
3535public 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