1 16 package com.blandware.atleap.webapp.acegi; 17 18 import org.acegisecurity.wrapper.SecurityContextHolderAwareRequestWrapper; 19 20 import javax.servlet.http.Cookie ; 21 import javax.servlet.http.HttpServletRequest ; 22 import javax.servlet.http.HttpSession ; 23 import java.text.SimpleDateFormat ; 24 import java.util.*; 25 import java.security.Principal ; 26 27 import com.blandware.atleap.webapp.util.core.FastHttpDateFormat; 28 import com.blandware.atleap.webapp.util.core.Enumerator; 29 30 37 public class CustomContextHolderAwareRequestWrapper extends SecurityContextHolderAwareRequestWrapper { 38 39 protected SavedRequest savedRequest = null; 40 41 protected static final TimeZone GMT_ZONE = TimeZone.getTimeZone("GMT"); 42 43 46 protected static Locale defaultLocale = Locale.getDefault(); 47 48 54 protected SimpleDateFormat formats[] = new SimpleDateFormat [3]; 55 56 public CustomContextHolderAwareRequestWrapper(HttpServletRequest request) { 58 super(request); 59 60 HttpSession session = request.getSession(false); 61 if (session == null) 62 return; 63 64 SavedRequest saved = (SavedRequest)session.getAttribute(CustomExceptionTranslationFilter.SAVED_REQUEST_SESSION_ATTRIBUTE); 65 if (saved == null) 66 return; 67 68 String requestURI = saved.getRequestURI(); 69 if (requestURI == null) 70 return; 71 72 if (requestURI.equals(request.getRequestURI())) { 73 savedRequest = saved; 74 session.removeAttribute(CustomExceptionTranslationFilter.SAVED_REQUEST_SESSION_ATTRIBUTE); 75 76 formats[0] = new SimpleDateFormat ("EEE, dd MMM yyyy HH:mm:ss zzz", Locale.US); 77 formats[1] = new SimpleDateFormat ("EEEEEE, dd-MMM-yy HH:mm:ss zzz", Locale.US); 78 formats[2] = new SimpleDateFormat ("EEE MMMM d HH:mm:ss yyyy", Locale.US); 79 80 formats[0].setTimeZone(GMT_ZONE); 81 formats[1].setTimeZone(GMT_ZONE); 82 formats[2].setTimeZone(GMT_ZONE); 83 } 84 } 85 86 90 public String getMethod() { 91 if (savedRequest == null) { 92 return super.getMethod(); 93 } else { 94 return savedRequest.getMethod(); 95 } 96 } 97 98 102 public String getHeader(String name) { 103 if (savedRequest == null) { 104 return super.getHeader(name); 105 } else { 106 String header = null; 107 Iterator iterator = savedRequest.getHeaderValues(name); 108 while (iterator.hasNext()) { 109 header = (String ) iterator.next(); 110 break; 111 } 112 return header; 113 } 114 } 115 116 120 121 public int getIntHeader(String name) { 122 if (savedRequest == null) { 123 return super.getIntHeader(name); 124 } else { 125 String value = getHeader(name); 126 if (value == null) { 127 return (-1); 128 } else { 129 return (Integer.parseInt(value)); 130 } 131 } 132 } 133 134 138 public long getDateHeader(String name) { 139 if (savedRequest == null) { 140 return super.getDateHeader(name); 141 } else { 142 String value = getHeader(name); 143 if (value == null) 144 return (-1L); 145 146 long result = FastHttpDateFormat.parseDate(value, formats); 148 if (result != (-1L)) { 149 return result; 150 } 151 throw new IllegalArgumentException (value); 152 } 153 } 154 155 159 160 public Enumeration getHeaderNames() { 161 if (savedRequest == null) { 162 return super.getHeaderNames(); 163 } else { 164 return new Enumerator(savedRequest.getHeaderNames()); 165 } 166 } 167 168 169 173 public Enumeration getHeaders(String name) { 174 if (savedRequest == null) { 175 return super.getHeaders(name); 176 } else { 177 return new Enumerator(savedRequest.getHeaderValues(name)); 178 } 179 } 180 181 185 public Cookie [] getCookies() { 186 if (savedRequest == null) { 187 return super.getCookies(); 188 } else { 189 List cookies = savedRequest.getCookies(); 190 return (Cookie [])cookies.toArray(new Cookie [cookies.size()]); 191 } 192 } 193 194 198 public String [] getParameterValues(String name) { 199 if (savedRequest == null) { 200 return super.getParameterValues(name); 201 } else { 202 return savedRequest.getParameterValues(name); 203 } 204 } 205 206 210 211 public Enumeration getParameterNames() { 212 if (savedRequest == null) { 213 return super.getParameterNames(); 214 } else { 215 return new Enumerator(savedRequest.getParameterNames()); 216 } 217 } 218 219 223 public Map getParameterMap() { 224 if (savedRequest == null) { 225 return super.getParameterMap(); 226 } else { 227 return savedRequest.getParameterMap(); 228 } 229 } 230 231 235 236 public String getParameter(String name) { 237 252 String value = null; 254 String [] values = null; 255 if (savedRequest == null) { 256 values = super.getParameterValues(name); 257 } else { 258 values = savedRequest.getParameterValues(name); 259 } 260 261 if (values == null) 262 return null; 263 for (int i = 0; i < values.length; i++) { 264 value = values[i]; 265 break; 266 } 267 return value; 268 269 } 270 271 272 276 277 public Enumeration getLocales() { 278 if (savedRequest == null) { 279 return super.getLocales(); 280 } else { 281 Iterator iterator = savedRequest.getLocales(); 282 if (iterator.hasNext()) { 283 return new Enumerator(iterator); 284 } else { 285 ArrayList results = new ArrayList(); 286 results.add(defaultLocale); 287 return new Enumerator(results.iterator()); 288 } 289 } 290 } 291 292 296 297 public Locale getLocale() { 298 if (savedRequest == null) { 299 return super.getLocale(); 300 } else { 301 Locale locale = null; 302 Iterator iterator = savedRequest.getLocales(); 303 while (iterator.hasNext()) { 304 locale = (Locale) iterator.next(); 305 break; 306 } 307 if (locale == null) { 308 return defaultLocale; 309 } else { 310 return locale; 311 } 312 } 313 } 314 315 324 public Principal getUserPrincipal() { 325 return null; 327 } 328 329 } 330 | Popular Tags |