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.jakarta.servlet5; 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.Collection; 026import java.util.Enumeration; 027import java.util.HashMap; 028import java.util.Locale; 029import java.util.Map; 030 031import org.apache.commons.fileupload2.core.AbstractFileUpload; 032 033import jakarta.servlet.AsyncContext; 034import jakarta.servlet.DispatcherType; 035import jakarta.servlet.ReadListener; 036import jakarta.servlet.RequestDispatcher; 037import jakarta.servlet.ServletContext; 038import jakarta.servlet.ServletException; 039import jakarta.servlet.ServletInputStream; 040import jakarta.servlet.ServletRequest; 041import jakarta.servlet.ServletResponse; 042import jakarta.servlet.http.Cookie; 043import jakarta.servlet.http.HttpServletRequest; 044import jakarta.servlet.http.HttpServletResponse; 045import jakarta.servlet.http.HttpSession; 046import jakarta.servlet.http.HttpUpgradeHandler; 047import jakarta.servlet.http.Part; 048 049/** 050 * Test fixture for {@link HttpServletRequest}. 051 */ 052public class JakartaMockHttpServletRequest implements HttpServletRequest { 053 054 private static final class MyServletInputStream extends ServletInputStream { 055 056 private final InputStream inputStream; 057 private final int readLimit; 058 059 /** 060 * Creates a new instance, which returns the given streams data. 061 */ 062 MyServletInputStream(final InputStream inputStream, final int readLimit) { 063 this.inputStream = inputStream; 064 this.readLimit = readLimit; 065 } 066 067 @Override 068 public boolean isFinished() { 069 return false; 070 } 071 072 @Override 073 public boolean isReady() { 074 return false; 075 } 076 077 @Override 078 public int read() throws IOException { 079 return inputStream.read(); 080 } 081 082 @Override 083 public int read(final byte[] b, final int off, final int len) throws IOException { 084 if (readLimit > 0) { 085 return inputStream.read(b, off, Math.min(readLimit, len)); 086 } 087 return inputStream.read(b, off, len); 088 } 089 090 @Override 091 public void setReadListener(final ReadListener readListener) { 092 093 } 094 095 } 096 097 private final InputStream requestInputStream; 098 099 private final long requestLength; 100 101 private final String contentType; 102 103 private final int readLimit; 104 105 private final Map<String, String> headers = new HashMap<>(); 106 107 /** 108 * Creates a new instance with the given request data and content type. 109 */ 110 public JakartaMockHttpServletRequest(final byte[] requestData, final String contentType) { 111 this(new ByteArrayInputStream(requestData), requestData.length, contentType, -1); 112 } 113 114 /** 115 * Creates a new instance with the given request data and content type. 116 */ 117 public JakartaMockHttpServletRequest(final InputStream requestInputStream, final long requestLength, final String contentType, final int readLimit) { 118 this.requestInputStream = requestInputStream; 119 this.requestLength = requestLength; 120 this.contentType = contentType; 121 this.headers.put(AbstractFileUpload.CONTENT_TYPE, contentType); 122 this.readLimit = readLimit; 123 } 124 125 @Override 126 public boolean authenticate(final HttpServletResponse response) throws IOException, ServletException { 127 return false; 128 } 129 130 @Override 131 public String changeSessionId() { 132 return null; 133 } 134 135 @Override 136 public AsyncContext getAsyncContext() { 137 return null; 138 } 139 140 /** 141 * @see ServletRequest#getAttribute(String) 142 */ 143 @Override 144 public Object getAttribute(final String arg0) { 145 return null; 146 } 147 148 /** 149 * @see ServletRequest#getAttributeNames() 150 */ 151 @Override 152 public Enumeration<String> getAttributeNames() { 153 return null; 154 } 155 156 /** 157 * @see HttpServletRequest#getAuthType() 158 */ 159 @Override 160 public String getAuthType() { 161 return null; 162 } 163 164 /** 165 * @see ServletRequest#getCharacterEncoding() 166 */ 167 @Override 168 public String getCharacterEncoding() { 169 return null; 170 } 171 172 /** 173 * @see ServletRequest#getContentLength() 174 */ 175 @Override 176 public int getContentLength() { 177 return requestInputStream != null ? Math.toIntExact(requestLength) : -1; 178 } 179 180 @Override 181 public long getContentLengthLong() { 182 return 0; 183 } 184 185 /** 186 * @see ServletRequest#getContentType() 187 */ 188 @Override 189 public String getContentType() { 190 return contentType; 191 } 192 193 /** 194 * @see HttpServletRequest#getContextPath() 195 */ 196 @Override 197 public String getContextPath() { 198 return null; 199 } 200 201 /** 202 * @see HttpServletRequest#getCookies() 203 */ 204 @Override 205 public Cookie[] getCookies() { 206 return null; 207 } 208 209 /** 210 * @see HttpServletRequest#getDateHeader(String) 211 */ 212 @Override 213 public long getDateHeader(final String arg0) { 214 return 0; 215 } 216 217 @Override 218 public DispatcherType getDispatcherType() { 219 return null; 220 } 221 222 /** 223 * @see HttpServletRequest#getHeader(String) 224 */ 225 @Override 226 public String getHeader(final String headerName) { 227 return headers.get(headerName); 228 } 229 230 /** 231 * @see HttpServletRequest#getHeaderNames() 232 */ 233 @Override 234 public Enumeration<String> getHeaderNames() { 235 // todo - implement 236 return null; 237 } 238 239 /** 240 * @see HttpServletRequest#getHeaders(String) 241 */ 242 @Override 243 public Enumeration<String> getHeaders(final String arg0) { 244 // todo - implement 245 return null; 246 } 247 248 /** 249 * @see ServletRequest#getInputStream() 250 */ 251 @Override 252 public ServletInputStream getInputStream() throws IOException { 253 return new MyServletInputStream(requestInputStream, readLimit); 254 } 255 256 /** 257 * @see HttpServletRequest#getIntHeader(String) 258 */ 259 @Override 260 public int getIntHeader(final String arg0) { 261 return 0; 262 } 263 264 /** 265 * @see ServletRequest#getLocalAddr() 266 */ 267 @Override 268 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 269 public String getLocalAddr() { 270 return null; 271 } 272 273 /** 274 * @see ServletRequest#getLocale() 275 */ 276 @Override 277 public Locale getLocale() { 278 return null; 279 } 280 281 /** 282 * @see ServletRequest#getLocales() 283 */ 284 @Override 285 public Enumeration<Locale> getLocales() { 286 return null; 287 } 288 289 /** 290 * @see ServletRequest#getLocalName() 291 */ 292 @Override 293 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 294 public String getLocalName() { 295 return null; 296 } 297 298 /** 299 * @see ServletRequest#getLocalPort() 300 */ 301 @Override 302 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 303 public int getLocalPort() { 304 return 0; 305 } 306 307 /** 308 * @see HttpServletRequest#getMethod() 309 */ 310 @Override 311 public String getMethod() { 312 return null; 313 } 314 315 /** 316 * @see ServletRequest#getParameter(String) 317 */ 318 @Override 319 public String getParameter(final String arg0) { 320 return null; 321 } 322 323 /** 324 * @see ServletRequest#getParameterMap() 325 */ 326 @Override 327 public Map<String, String[]> getParameterMap() { 328 return null; 329 } 330 331 /** 332 * @see ServletRequest#getParameterNames() 333 */ 334 @Override 335 public Enumeration<String> getParameterNames() { 336 return null; 337 } 338 339 /** 340 * @see ServletRequest#getParameterValues(String) 341 */ 342 @Override 343 public String[] getParameterValues(final String arg0) { 344 return null; 345 } 346 347 @Override 348 public Part getPart(final String name) throws IOException, ServletException { 349 return null; 350 } 351 352 @Override 353 public Collection<Part> getParts() throws IOException, ServletException { 354 return null; 355 } 356 357 /** 358 * @see HttpServletRequest#getPathInfo() 359 */ 360 @Override 361 public String getPathInfo() { 362 return null; 363 } 364 365 /** 366 * @see HttpServletRequest#getPathTranslated() 367 */ 368 @Override 369 public String getPathTranslated() { 370 return null; 371 } 372 373 /** 374 * @see ServletRequest#getProtocol() 375 */ 376 @Override 377 public String getProtocol() { 378 return null; 379 } 380 381 /** 382 * @see HttpServletRequest#getQueryString() 383 */ 384 @Override 385 public String getQueryString() { 386 return null; 387 } 388 389 /** 390 * @see ServletRequest#getReader() 391 */ 392 @Override 393 public BufferedReader getReader() throws IOException { 394 return null; 395 } 396 397 /** 398 * @see ServletRequest#getRealPath(String) 399 * @deprecated 400 */ 401 @Override 402 @Deprecated 403 public String getRealPath(final String arg0) { 404 return null; 405 } 406 407 /** 408 * @see ServletRequest#getRemoteAddr() 409 */ 410 @Override 411 public String getRemoteAddr() { 412 return null; 413 } 414 415 /** 416 * @see ServletRequest#getRemoteHost() 417 */ 418 @Override 419 public String getRemoteHost() { 420 return null; 421 } 422 423 /** 424 * @see ServletRequest#getRemotePort() 425 */ 426 @Override 427 @SuppressWarnings("javadoc") // This is a Servlet 2.4 method 428 public int getRemotePort() { 429 return 0; 430 } 431 432 /** 433 * @see HttpServletRequest#getRemoteUser() 434 */ 435 @Override 436 public String getRemoteUser() { 437 return null; 438 } 439 440 /** 441 * @see ServletRequest#getRequestDispatcher(String) 442 */ 443 @Override 444 public RequestDispatcher getRequestDispatcher(final String arg0) { 445 return null; 446 } 447 448 /** 449 * @see HttpServletRequest#getRequestedSessionId() 450 */ 451 @Override 452 public String getRequestedSessionId() { 453 return null; 454 } 455 456 /** 457 * @see HttpServletRequest#getRequestURI() 458 */ 459 @Override 460 public String getRequestURI() { 461 return null; 462 } 463 464 /** 465 * @see HttpServletRequest#getRequestURL() 466 */ 467 @Override 468 public StringBuffer getRequestURL() { 469 return null; 470 } 471 472 /** 473 * @see ServletRequest#getScheme() 474 */ 475 @Override 476 public String getScheme() { 477 return null; 478 } 479 480 /** 481 * @see ServletRequest#getServerName() 482 */ 483 @Override 484 public String getServerName() { 485 return null; 486 } 487 488 /** 489 * @see ServletRequest#getServerPort() 490 */ 491 @Override 492 public int getServerPort() { 493 return 0; 494 } 495 496 @Override 497 public ServletContext getServletContext() { 498 return null; 499 } 500 501 /** 502 * @see HttpServletRequest#getServletPath() 503 */ 504 @Override 505 public String getServletPath() { 506 return null; 507 } 508 509 /** 510 * @see HttpServletRequest#getSession() 511 */ 512 @Override 513 public HttpSession getSession() { 514 return null; 515 } 516 517 /** 518 * @see HttpServletRequest#getSession(boolean) 519 */ 520 @Override 521 public HttpSession getSession(final boolean arg0) { 522 return null; 523 } 524 525 /** 526 * @see HttpServletRequest#getUserPrincipal() 527 */ 528 @Override 529 public Principal getUserPrincipal() { 530 return null; 531 } 532 533 @Override 534 public boolean isAsyncStarted() { 535 return false; 536 } 537 538 @Override 539 public boolean isAsyncSupported() { 540 return false; 541 } 542 543 /** 544 * @see HttpServletRequest#isRequestedSessionIdFromCookie() 545 */ 546 @Override 547 public boolean isRequestedSessionIdFromCookie() { 548 return false; 549 } 550 551 /** 552 * @see HttpServletRequest#isRequestedSessionIdFromUrl() 553 * @deprecated 554 */ 555 @Override 556 @Deprecated 557 public boolean isRequestedSessionIdFromUrl() { 558 return false; 559 } 560 561 /** 562 * @see HttpServletRequest#isRequestedSessionIdFromURL() 563 */ 564 @Override 565 public boolean isRequestedSessionIdFromURL() { 566 return false; 567 } 568 569 /** 570 * @see HttpServletRequest#isRequestedSessionIdValid() 571 */ 572 @Override 573 public boolean isRequestedSessionIdValid() { 574 return false; 575 } 576 577 /** 578 * @see ServletRequest#isSecure() 579 */ 580 @Override 581 public boolean isSecure() { 582 return false; 583 } 584 585 /** 586 * @see HttpServletRequest#isUserInRole(String) 587 */ 588 @Override 589 public boolean isUserInRole(final String arg0) { 590 return false; 591 } 592 593 @Override 594 public void login(final String username, final String password) throws ServletException { 595 596 } 597 598 @Override 599 public void logout() throws ServletException { 600 601 } 602 603 /** 604 * @see ServletRequest#removeAttribute(String) 605 */ 606 @Override 607 public void removeAttribute(final String arg0) { 608 } 609 610 /** 611 * @see ServletRequest#setAttribute(String, Object) 612 */ 613 @Override 614 public void setAttribute(final String arg0, final Object arg1) { 615 } 616 617 /** 618 * @see ServletRequest#setCharacterEncoding(String) 619 */ 620 @Override 621 public void setCharacterEncoding(final String arg0) throws UnsupportedEncodingException { 622 } 623 624 @Override 625 public AsyncContext startAsync() throws IllegalStateException { 626 return null; 627 } 628 629 @Override 630 public AsyncContext startAsync(final ServletRequest servletRequest, final ServletResponse servletResponse) throws IllegalStateException { 631 return null; 632 } 633 634 @Override 635 public <T extends HttpUpgradeHandler> T upgrade(final Class<T> handlerClass) throws IOException, ServletException { 636 return null; 637 } 638 639}