Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you under the Apache License, Version 2.0 (the
   * "License"); you may not use this file except in compliance
   * with the License.  You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
  * KIND, either express or implied.  See the License for the
  * specific language governing permissions and limitations
  * under the License.
 import java.util.List;
 import java.util.Map;
 public class ParameterSupport {
     private static final String ATTR_NAME = ParameterSupport.class.getName();

The name of the request attribute to set to get the Jetty servlet container to decode the request query using ISO-8859-1 encoding (value is "org.mortbay.jetty.Request.queryEncoding").
     private static final String ATTR_JETTY_QUERY_ENCODING = "org.mortbay.jetty.Request.queryEncoding";
     private final HttpServletRequest servletRequest;
     private ParameterMap postParameterMap;
     private boolean requestDataUsed;

Sets the default encoding used to decode request parameters if the _charset_ request parameter is not set (or is not set to an encoding supported by the platform). By default this default encoding is ISO-8859-1. For applications which alway use the same encoding this default can be changed.

encoding The default encoding to be used. If this encoding is null or not supported by the platform the current default encoding remains unchanged.
     public static void setDefaultParameterEncoding(final String encoding) {
     public static ParameterSupport getInstance(ServletRequest servletRequest) {
         ParameterSupport instance = (ParameterSupportservletRequest.getAttribute();
         if (instance == null) {
             instance = new ParameterSupport((HttpServletRequestservletRequest);
             // SLING-559: Hack to get Jetty into decoding the request
             // query with ISO-8859-1 as stipulated by the servlet
             // spec. Other containers ignore this parameter
         return instance;
     private ParameterSupport(HttpServletRequest servletRequest) {
         this. = servletRequest;
     private HttpServletRequest getServletRequest() {
         return ;
     public boolean requestDataUsed() {
         return this.;
     public String getParameter(String name) {
        return getRequestParameterMapInternal().getStringValue(name);
    public String[] getParameterValues(String name) {
        return getRequestParameterMapInternal().getStringValues(name);
    public Map<StringString[]> getParameterMap() {
    public Enumeration<StringgetParameterNames() {
        return new IteratorEnumeration(
        return getRequestParameterMapInternal().getValue(name);
    public RequestParameter[] getRequestParameters(String name) {
        return getRequestParameterMapInternal().getValues(name);
        return getRequestParameterMapInternal();
        if (this. == null) {
            // SLING-152 Get parameters from the servlet Container
            ParameterMap parameters = new ParameterMap();
            // only read input in case of multipart-POST not handled
            // by the servlet container
            if ("POST".equals(this.getServletRequest().getMethod())) {
                if (ServletFileUpload.isMultipartContent(new ServletRequestContext(
                    this.getServletRequest()))) {
                    this. = true;
            // apply any form encoding (from '_charset_') in the parameter map
            this. = parameters;
        return this.;
    private void getContainerParameters(ParameterMap parameters) {
        // SLING-508 Try to force servlet container to decode parameters
        // as ISO-8859-1 such that we can recode later
        String encoding = getServletRequest().getCharacterEncoding();
        if (encoding == null) {
            encoding = .;
            try {
            } catch (UnsupportedEncodingException uee) {
                throw new SlingUnsupportedEncodingException(uee);
        final Map<?, ?> pMap = getServletRequest().getParameterMap();
        for (Map.Entry<?, ?> entry : pMap.entrySet()) {
            final String name = (Stringentry.getKey();
            final String[] values = (String[]) entry.getValue();
            for (int i = 0; i < values.lengthi++) {
                parameters.addParameter(namenew ContainerRequestParameter(
                    values[i], encoding));
    private void parseMultiPartPost(ParameterMap parameters) {
        // parameters not read yet, read now
        // Create a factory for disk-based file items
        DiskFileItemFactory factory = new DiskFileItemFactory();
        // Create a new file upload handler
        ServletFileUpload upload = new ServletFileUpload(factory);
        RequestContext rc = new ServletRequestContext(this.getServletRequest()) {
            public String getCharacterEncoding() {
                String enc = super.getCharacterEncoding();
                return (enc != null) ? enc : .;
        // Parse the request
        try {
            List<?> /* FileItem */items = upload.parseRequest(rc);
            for (Iterator<?> ii = items.iterator(); ii.hasNext();) {
                FileItem fileItem = (;
                RequestParameter pp = new MultipartRequestParameter(fileItem);
                parameters.addParameter(fileItem.getFieldName(), pp);
        } catch (FileUploadException fue) {
            // TODO: log
New to GrepCode? Check out our FAQ X