View Javadoc
1   /*
2    * Copyright 2012-2025 CodeLibs Project and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
15   */
16  package org.codelibs.fess.api;
17  
18  import java.io.IOException;
19  import java.io.PrintWriter;
20  
21  import org.apache.commons.io.output.ByteArrayOutputStream;
22  
23  import jakarta.servlet.http.HttpServletResponse;
24  import jakarta.servlet.http.HttpServletResponseWrapper;
25  
26  /**
27   * Wrapper for HTTP servlet responses in web API context.
28   * This class extends HttpServletResponseWrapper to provide custom response handling
29   * for web API responses, including dummy output stream management.
30   */
31  public class WebApiResponse extends HttpServletResponseWrapper {
32  
33      /**
34       * Constructs a WebApiResponse with the specified response.
35       *
36       * @param response The original HTTP servlet response
37       */
38      public WebApiResponse(final HttpServletResponse response) {
39          super(response);
40      }
41  
42      /**
43       * Gets a PrintWriter for writing response content.
44       * Returns a dummy PrintWriter that writes to a ByteArrayOutputStream.
45       *
46       * @return A PrintWriter for response output
47       * @throws IOException If an I/O error occurs
48       */
49      @Override
50      public PrintWriter getWriter() throws IOException {
51          // dummy stream
52          return new PrintWriter(new ByteArrayOutputStream());
53      }
54  
55  }