001/* 002 GRANITE DATA SERVICES 003 Copyright (C) 2011 GRANITE DATA SERVICES S.A.S. 004 005 This file is part of Granite Data Services. 006 007 Granite Data Services is free software; you can redistribute it and/or modify 008 it under the terms of the GNU Library General Public License as published by 009 the Free Software Foundation; either version 2 of the License, or (at your 010 option) any later version. 011 012 Granite Data Services is distributed in the hope that it will be useful, but 013 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 014 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License 015 for more details. 016 017 You should have received a copy of the GNU Library General Public License 018 along with this library; if not, see <http://www.gnu.org/licenses/>. 019*/ 020 021package org.granite.messaging.webapp; 022 023import java.util.Collections; 024import java.util.Enumeration; 025import java.util.HashMap; 026import java.util.Locale; 027import java.util.Map; 028 029import javax.servlet.http.HttpServletRequest; 030import javax.servlet.http.HttpServletRequestWrapper; 031 032/** 033 * @author Venkat DANDA 034 */ 035@SuppressWarnings({ "unchecked", "rawtypes" }) 036public class HttpServletRequestParamWrapper extends HttpServletRequestWrapper { 037 038 private final Locale locale; 039 private final Enumeration<Locale> locales; 040 private final Map requestParams; 041 private final Map requestAttributes; 042 043 /** 044 * @param request 045 */ 046 public HttpServletRequestParamWrapper(HttpServletRequest request) { 047 super(request); 048 this.locale = request.getLocale(); 049 this.locales = request.getLocales(); 050 this.requestParams = new HashMap(request.getParameterMap()); 051 this.requestAttributes = new HashMap(); 052 } 053 054 /* (non-Javadoc) 055 * @see javax.servlet.ServletRequestWrapper#getParameter(java.lang.String) 056 */ 057 @Override 058 public String getParameter(String name) { 059 String retValue = null; 060 String[] paramValues = getParameterValues(name); 061 if (paramValues != null && paramValues.length > 0) { 062 retValue = paramValues[0]; 063 } 064 return retValue; 065 } 066 067 /* (non-Javadoc) 068 * @see javax.servlet.ServletRequestWrapper#getParameterMap() 069 */ 070 @Override 071 public Map getParameterMap() { 072 return Collections.unmodifiableMap(requestParams); 073 } 074 075 /* (non-Javadoc) 076 * @see javax.servlet.ServletRequestWrapper#getParameterNames() 077 */ 078 @Override 079 public Enumeration getParameterNames() { 080 return Collections.enumeration(requestParams.keySet()); 081 } 082 083 /* (non-Javadoc) 084 * @see javax.servlet.ServletRequestWrapper#getParameterValues(java.lang.String) 085 */ 086 @Override 087 public String[] getParameterValues(String name) { 088 String[] retValues = null; 089 String[] tmpValues = (String[]) requestParams.get(name); 090 if (tmpValues != null) { 091 retValues = new String[tmpValues.length]; 092 System.arraycopy(tmpValues, 0, retValues, 0, tmpValues.length); 093 } 094 return retValues; 095 } 096 097 /** 098 * New method to set the parameter value. 099 * @param name 100 * @param value 101 */ 102 public void setParameter(String name, String value) { 103 String[] param = { value }; 104 setParameter(name, param); 105 } 106 107 /** 108 * New method to set the parameter with multiple values. 109 * @param name 110 * @param values 111 */ 112 public void setParameter(String name, String[] values) { 113 requestParams.put(name, values); 114 } 115 116 @Override 117 public Object getAttribute(String name) { 118 return requestAttributes.get(name); 119 } 120 121 @Override 122 public Enumeration getAttributeNames() { 123 return Collections.enumeration(requestAttributes.keySet()); 124 } 125 126 @Override 127 public void removeAttribute(String name) { 128 requestAttributes.remove(name); 129 } 130 131 @Override 132 public void setAttribute(String name, Object o) { 133 requestAttributes.put(name, o); 134 } 135 136 @Override 137 public Locale getLocale() { 138 return locale; 139 } 140 141 @Override 142 public Enumeration getLocales() { 143 return locales; 144 } 145}