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