001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017package org.apache.commons.fileupload2.javax; 018 019import java.io.BufferedReader; 020import java.io.ByteArrayInputStream; 021import java.io.IOException; 022import java.io.InputStream; 023import java.io.UnsupportedEncodingException; 024import java.security.Principal; 025import java.util.Enumeration; 026import java.util.HashMap; 027import java.util.Locale; 028import java.util.Map; 029 030import javax.servlet.RequestDispatcher; 031import javax.servlet.ServletInputStream; 032import javax.servlet.ServletRequest; 033import javax.servlet.http.Cookie; 034import javax.servlet.http.HttpServletRequest; 035import javax.servlet.http.HttpSession; 036 037import org.apache.commons.fileupload2.core.AbstractFileUpload; 038 039/** 040 * Test fixture for {@link HttpServletRequest}. 041 */ 042public class JavaxMockHttpServletRequest implements HttpServletRequest { 043 044 private static final class MyServletInputStream extends ServletInputStream { 045 046 private final InputStream inputStream; 047 private final int readLimit; 048 049 /** 050 * Creates a new instance, which returns the given streams data. 051 */ 052 public MyServletInputStream(final InputStream inputStream, final int readLimit) { 053 this.inputStream = inputStream; 054 this.readLimit = readLimit; 055 } 056 057 @Override 058 public int read() throws IOException { 059 return inputStream.read(); 060 } 061 062 @Override 063 public int read(final byte[] b, final int off, final int len) throws IOException { 064 if (readLimit > 0) { 065 return inputStream.read(b, off, Math.min(readLimit, len)); 066 } 067 return inputStream.read(b, off, len); 068 } 069 070 } 071 072 private final InputStream requestInputStream; 073 074 private final long requestLength; 075 076 private final String contentType; 077 078 private final int readLimit; 079 080 private final Map<String, String> headers = new HashMap<>(); 081 082 /** 083 * Creates a new instance with the given request data and content type. 084 */ 085 public JavaxMockHttpServletRequest(final byte[] requestData, final String contentType) { 086 this(new ByteArrayInputStream(requestData), requestData.length, contentType, -1); 087 } 088 089 /** 090 * Creates a new instance with the given request data and content type. 091 */ 092 public JavaxMockHttpServletRequest(final InputStream requestInputStream, final long requestLength, final String contentType, final int readLimit) { 093 this.requestInputStream = requestInputStream; 094 this.requestLength = requestLength; 095 this.contentType = contentType; 096 this.headers.put(AbstractFileUpload.CONTENT_TYPE, contentType); 097 this.readLimit = readLimit; 098 } 099 100 /** 101 * @see ServletRequest#getAttribute(String) 102 */ 103 @Override 104 public Object getAttribute(final String arg0) { 105 return null; 106 } 107 108 /** 109 * @see ServletRequest#getAttributeNames() 110 */ 111 @Override 112 public Enumeration<String> getAttributeNames() { 113 return null; 114 } 115 116 /** 117 * @see HttpServletRequest#getAuthType() 118 */ 119 @Override 120 public String getAuthType() { 121 return null; 122 } 123 124 /** 125 * @see ServletRequest#getCharacterEncoding() 126 */ 127 @Override 128 public String getCharacterEncoding() { 129 return null; 130 } 131 132 /** 133 * @see ServletRequest#getContentLength() 134 */ 135 @Override 136 public int getContentLength() { 137 return requestInputStream != null ? Math.toIntExact(requestLength) : -1; 138 } 139 140 /** 141 * @see ServletRequest#getContentType() 142 */ 143 @Override 144 public String getContentType() { 145 return contentType; 146 } 147 148 /** 149 * @see HttpServletRequest#getContextPath() 150 */ 151 @Override 152 public String getContextPath() { 153 return null; 154 } 155 156 /** 157 * @see HttpServletRequest#getCookies() 158 */ 159 @Override 160 public Cookie[] getCookies() { 161 return null; 162 } 163 164 /** 165 * @see HttpServletRequest#getDateHeader(String) 166 */ 167 @Override 168 public long getDateHeader(final String arg0) { 169 return 0; 170 } 171 172 /** 173 * @see HttpServletRequest#getHeader(String) 174 */ 175 @Override 176 public String getHeader(final String headerName) { 177 return headers.get(headerName); 178 } 179 180 /** 181 * @see HttpServletRequest#getHeaderNames() 182 */ 183 @Override 184 public Enumeration<String> getHeaderNames() { 185 // todo - implement 186 return null; 187 } 188 189 /** 190 * @see HttpServletRequest#getHeaders(String) 191 */ 192 @Override 193 public Enumeration<String> getHeaders(final String arg0) { 194 // todo - implement 195 return null; 196 } 197 198 /** 199 * @see ServletRequest#getInputStream() 200 */ 201 @Override 202 public ServletInputStream getInputStream() throws IOException { 203 return new MyServletInputStream(requestInputStream, readLimit); 204 } 205 206 /** 207 * @see HttpServletRequest#getIntHeader(String) 208 */ 209 @Override 210 public int getIntHeader(final String arg0) { 211 return 0; 212 } 213 214 /** 215 * @see ServletRequest#getLocalAddr() 216 */ 217 @Override 218 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 219 public String getLocalAddr() { 220 return null; 221 } 222 223 /** 224 * @see ServletRequest#getLocale() 225 */ 226 @Override 227 public Locale getLocale() { 228 return null; 229 } 230 231 /** 232 * @see ServletRequest#getLocales() 233 */ 234 @Override 235 public Enumeration<Locale> getLocales() { 236 return null; 237 } 238 239 /** 240 * @see ServletRequest#getLocalName() 241 */ 242 @Override 243 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 244 public String getLocalName() { 245 return null; 246 } 247 248 /** 249 * @see ServletRequest#getLocalPort() 250 */ 251 @Override 252 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 253 public int getLocalPort() { 254 return 0; 255 } 256 257 /** 258 * @see HttpServletRequest#getMethod() 259 */ 260 @Override 261 public String getMethod() { 262 return null; 263 } 264 265 /** 266 * @see ServletRequest#getParameter(String) 267 */ 268 @Override 269 public String getParameter(final String arg0) { 270 return null; 271 } 272 273 /** 274 * @see ServletRequest#getParameterMap() 275 */ 276 @Override 277 public Map<String, String[]> getParameterMap() { 278 return null; 279 } 280 281 /** 282 * @see ServletRequest#getParameterNames() 283 */ 284 @Override 285 public Enumeration<String> getParameterNames() { 286 return null; 287 } 288 289 /** 290 * @see ServletRequest#getParameterValues(String) 291 */ 292 @Override 293 public String[] getParameterValues(final String arg0) { 294 return null; 295 } 296 297 /** 298 * @see HttpServletRequest#getPathInfo() 299 */ 300 @Override 301 public String getPathInfo() { 302 return null; 303 } 304 305 /** 306 * @see HttpServletRequest#getPathTranslated() 307 */ 308 @Override 309 public String getPathTranslated() { 310 return null; 311 } 312 313 /** 314 * @see ServletRequest#getProtocol() 315 */ 316 @Override 317 public String getProtocol() { 318 return null; 319 } 320 321 /** 322 * @see HttpServletRequest#getQueryString() 323 */ 324 @Override 325 public String getQueryString() { 326 return null; 327 } 328 329 /** 330 * @see ServletRequest#getReader() 331 */ 332 @Override 333 public BufferedReader getReader() throws IOException { 334 return null; 335 } 336 337 /** 338 * @see ServletRequest#getRealPath(String) 339 * @deprecated 340 */ 341 @Override 342 @Deprecated 343 public String getRealPath(final String arg0) { 344 return null; 345 } 346 347 /** 348 * @see ServletRequest#getRemoteAddr() 349 */ 350 @Override 351 public String getRemoteAddr() { 352 return null; 353 } 354 355 /** 356 * @see ServletRequest#getRemoteHost() 357 */ 358 @Override 359 public String getRemoteHost() { 360 return null; 361 } 362 363 /** 364 * @see ServletRequest#getRemotePort() 365 */ 366 @Override 367 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 368 public int getRemotePort() { 369 return 0; 370 } 371 372 /** 373 * @see HttpServletRequest#getRemoteUser() 374 */ 375 @Override 376 public String getRemoteUser() { 377 return null; 378 } 379 380 /** 381 * @see ServletRequest#getRequestDispatcher(String) 382 */ 383 @Override 384 public RequestDispatcher getRequestDispatcher(final String arg0) { 385 return null; 386 } 387 388 /** 389 * @see HttpServletRequest#getRequestedSessionId() 390 */ 391 @Override 392 public String getRequestedSessionId() { 393 return null; 394 } 395 396 /** 397 * @see HttpServletRequest#getRequestURI() 398 */ 399 @Override 400 public String getRequestURI() { 401 return null; 402 } 403 404 /** 405 * @see HttpServletRequest#getRequestURL() 406 */ 407 @Override 408 public StringBuffer getRequestURL() { 409 return null; 410 } 411 412 /** 413 * @see ServletRequest#getScheme() 414 */ 415 @Override 416 public String getScheme() { 417 return null; 418 } 419 420 /** 421 * @see ServletRequest#getServerName() 422 */ 423 @Override 424 public String getServerName() { 425 return null; 426 } 427 428 /** 429 * @see ServletRequest#getServerPort() 430 */ 431 @Override 432 public int getServerPort() { 433 return 0; 434 } 435 436 /** 437 * @see HttpServletRequest#getServletPath() 438 */ 439 @Override 440 public String getServletPath() { 441 return null; 442 } 443 444 /** 445 * @see HttpServletRequest#getSession() 446 */ 447 @Override 448 public HttpSession getSession() { 449 return null; 450 } 451 452 /** 453 * @see HttpServletRequest#getSession(boolean) 454 */ 455 @Override 456 public HttpSession getSession(final boolean arg0) { 457 return null; 458 } 459 460 /** 461 * @see HttpServletRequest#getUserPrincipal() 462 */ 463 @Override 464 public Principal getUserPrincipal() { 465 return null; 466 } 467 468 /** 469 * @see HttpServletRequest#isRequestedSessionIdFromCookie() 470 */ 471 @Override 472 public boolean isRequestedSessionIdFromCookie() { 473 return false; 474 } 475 476 /** 477 * @see HttpServletRequest#isRequestedSessionIdFromUrl() 478 * @deprecated 479 */ 480 @Override 481 @Deprecated 482 public boolean isRequestedSessionIdFromUrl() { 483 return false; 484 } 485 486 /** 487 * @see HttpServletRequest#isRequestedSessionIdFromURL() 488 */ 489 @Override 490 public boolean isRequestedSessionIdFromURL() { 491 return false; 492 } 493 494 /** 495 * @see HttpServletRequest#isRequestedSessionIdValid() 496 */ 497 @Override 498 public boolean isRequestedSessionIdValid() { 499 return false; 500 } 501 502 /** 503 * @see HttpServletRequest#isSecure() 504 */ 505 @Override 506 public boolean isSecure() { 507 return false; 508 } 509 510 /** 511 * @see HttpServletRequest#isUserInRole(String) 512 */ 513 @Override 514 public boolean isUserInRole(final String arg0) { 515 return false; 516 } 517 518 /** 519 * @see ServletRequest#removeAttribute(String) 520 */ 521 @Override 522 public void removeAttribute(final String arg0) { 523 } 524 525 /** 526 * @see ServletRequest#setAttribute(String, Object) 527 */ 528 @Override 529 public void setAttribute(final String arg0, final Object arg1) { 530 } 531 532 /** 533 * @see ServletRequest#setCharacterEncoding(String) 534 */ 535 @Override 536 public void setCharacterEncoding(final String arg0) throws UnsupportedEncodingException { 537 } 538 539}