Package org.htmlunit.util

# Class DebuggingWebConnection

java.lang.Object
org.htmlunit.util.WebConnectionWrapper
org.htmlunit.util.DebuggingWebConnection

All Implemented Interfaces:
  `AutoCloseable`, `WebConnection`

public class DebuggingWebConnection extends WebConnectionWrapper
Wrapper around a "real" WebConnection that will use the wrapped web connection to do the real job and save all received responses in the temp directory with an overview page.
This may be useful at conception time to understand what is "browsed".
Example:

     final WebClient client = new WebClient();
     final WebConnection connection = new DebuggingWebConnection(client.getWebConnection(), "myTest");
     client.setWebConnection(connection);

In this example an overview page will be generated under the name myTest/index.html in the temp directory and all received responses will be saved into the myTest folder.
This class is only intended as a help during the conception.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DebuggingWebConnection(WebConnection webConnection, String dirName)`
  Wraps a web connection to have a report generated of the received responses.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addMark(String mark)`
  Adds a mark that will be visible in the HTML result page generated by this class.
  `WebResponse`
  `getResponse(WebRequest request)`
  Calls the wrapped webconnection and save the received response.
  `boolean`
  `isUncompressJavaScript()`
  Indicates if it should try to format responses recognized as JavaScript.
  `protected void`
  `saveResponse(WebResponse response, WebRequest request)`
  Saves the response content in the temp dir and adds it to the summary page.
  `void`
  `setUncompressJavaScript(boolean decompress)`
  Indicates that responses recognized as JavaScript should be formatted or not.
  `protected WebResponse`
  `uncompressJavaScript(WebResponse response)`
  Tries to uncompress the JavaScript code in the provided response.

  ### Methods inherited from class org.htmlunit.util.WebConnectionWrapper

  `close, getWrappedWebConnection`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### DebuggingWebConnection

    public DebuggingWebConnection(WebConnection webConnection, String dirName) throws IOException
    Wraps a web connection to have a report generated of the received responses.
    Parameters:
      `webConnection` - the webConnection that do the real work
      `dirName` - the name of the directory to create in the tmp folder to save received responses. If this folder already exists, it will be deleted first.
    Throws:
      `IOException` - in case of problems writing the files

- ## Method Details

  - ### getResponse

    public WebResponse getResponse(WebRequest request) throws IOException
    Calls the wrapped webconnection and save the received response. Submits a request and retrieves a response. The default behavior of this method is to return `WebConnection.getResponse(WebRequest)` on the wrapped connection object.
    Specified by:
      `getResponse` in interface `WebConnection`
    Overrides:
      `getResponse` in class `WebConnectionWrapper`
    Parameters:
      `request` - the request
    Returns:
      the response to the request defined by the specified request
    Throws:
      `IOException` - if an IO error occurs

  - ### uncompressJavaScript

    protected WebResponse uncompressJavaScript(WebResponse response)
    Tries to uncompress the JavaScript code in the provided response.
    Parameters:
      `response` - the response to uncompress
    Returns:
      a new response with uncompressed JavaScript code or the original response in case of failure

  - ### addMark

    public void addMark(String mark) throws IOException
    Adds a mark that will be visible in the HTML result page generated by this class.
    Parameters:
      `mark` - the text
    Throws:
      `IOException` - if a problem occurs writing the file

  - ### saveResponse

    protected void saveResponse(WebResponse response, WebRequest request) throws IOException
    Saves the response content in the temp dir and adds it to the summary page.
    Parameters:
      `response` - the response to save
      `request` - the request used to get the response
    Throws:
      `IOException` - if a problem occurs writing the file

  - ### isUncompressJavaScript

    public boolean isUncompressJavaScript()
    Indicates if it should try to format responses recognized as JavaScript.
    Returns:
      default is `false` to deliver the original content

  - ### setUncompressJavaScript

    public void setUncompressJavaScript(boolean decompress)
    Indicates that responses recognized as JavaScript should be formatted or not. Formatting is interesting for debugging when the original script is compressed on a single line. It allows to better follow with a debugger and to obtain more interesting error messages.
    Parameters:
      `decompress` - `true` if JavaScript responses should be uncompressed