View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one or more
3    * contributor license agreements.  See the NOTICE file distributed with
4    * this work for additional information regarding copyright ownership.
5    * The ASF licenses this file to You under the Apache License, Version 2.0
6    * (the "License"); you may not use this file except in compliance with
7    * the License.  You may obtain a copy of the License at
8    *
9    *      http://www.apache.org/licenses/LICENSE-2.0
10   *
11   * Unless required by applicable law or agreed to in writing, software
12   * distributed under the License is distributed on an "AS IS" BASIS,
13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14   * See the License for the specific language governing permissions and
15   * limitations under the License.
16   */
17  package org.apache.commons.fileupload2.jakarta.servlet5;
18  
19  import java.io.BufferedReader;
20  import java.io.ByteArrayInputStream;
21  import java.io.IOException;
22  import java.io.InputStream;
23  import java.io.UnsupportedEncodingException;
24  import java.security.Principal;
25  import java.util.Collection;
26  import java.util.Enumeration;
27  import java.util.HashMap;
28  import java.util.Locale;
29  import java.util.Map;
30  
31  import org.apache.commons.fileupload2.core.AbstractFileUpload;
32  
33  import jakarta.servlet.AsyncContext;
34  import jakarta.servlet.DispatcherType;
35  import jakarta.servlet.ReadListener;
36  import jakarta.servlet.RequestDispatcher;
37  import jakarta.servlet.ServletContext;
38  import jakarta.servlet.ServletException;
39  import jakarta.servlet.ServletInputStream;
40  import jakarta.servlet.ServletRequest;
41  import jakarta.servlet.ServletResponse;
42  import jakarta.servlet.http.Cookie;
43  import jakarta.servlet.http.HttpServletRequest;
44  import jakarta.servlet.http.HttpServletResponse;
45  import jakarta.servlet.http.HttpSession;
46  import jakarta.servlet.http.HttpUpgradeHandler;
47  import jakarta.servlet.http.Part;
48  
49  /**
50   * Test fixture for {@link HttpServletRequest}.
51   */
52  public class JakartaMockHttpServletRequest implements HttpServletRequest {
53  
54      private static final class MyServletInputStream extends ServletInputStream {
55  
56          private final InputStream inputStream;
57          private final int readLimit;
58  
59          /**
60           * Creates a new instance, which returns the given streams data.
61           */
62          MyServletInputStream(final InputStream inputStream, final int readLimit) {
63              this.inputStream = inputStream;
64              this.readLimit = readLimit;
65          }
66  
67          @Override
68          public boolean isFinished() {
69              return false;
70          }
71  
72          @Override
73          public boolean isReady() {
74              return false;
75          }
76  
77          @Override
78          public int read() throws IOException {
79              return inputStream.read();
80          }
81  
82          @Override
83          public int read(final byte[] b, final int off, final int len) throws IOException {
84              if (readLimit > 0) {
85                  return inputStream.read(b, off, Math.min(readLimit, len));
86              }
87              return inputStream.read(b, off, len);
88          }
89  
90          @Override
91          public void setReadListener(final ReadListener readListener) {
92  
93          }
94  
95      }
96  
97      private final InputStream requestInputStream;
98  
99      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 }