Package org.richfaces.test

Source Code of org.richfaces.test.LocalWebConnection

/**
*
*/
package org.richfaces.test;

import java.io.IOException;

import org.apache.commons.httpclient.NameValuePair;
import org.richfaces.test.staging.HttpMethod;
import org.richfaces.test.staging.StagingConnection;
import org.richfaces.test.staging.StagingServer;

import com.gargoylesoftware.htmlunit.FormEncodingType;
import com.gargoylesoftware.htmlunit.WebConnection;
import com.gargoylesoftware.htmlunit.WebRequestSettings;
import com.gargoylesoftware.htmlunit.WebResponse;

/**
* This implementation of the HtmlUnit {@link WebConnection} execute http requests on the local
* staging server instead of the real network connection.
* @author asmirnov
*
*/
public final class LocalWebConnection implements WebConnection {
  /**
   * test server instance
   */
  private final StagingServer localServer;

  /**
   * @param localServer
   */
  public LocalWebConnection(StagingServer localServer) {
    this.localServer = localServer;
  }

  /* (non-Javadoc)
   * @see com.gargoylesoftware.htmlunit.WebConnection#getResponse(com.gargoylesoftware.htmlunit.WebRequestSettings)
   */
  public WebResponse getResponse(WebRequestSettings settings)
      throws IOException {
    StagingConnection connection = localServer.getConnection(settings.getUrl());
    // Propagate web request settings to the local connection.
    for (NameValuePair param : settings.getRequestParameters()) {
      connection.addRequestParameter(param.getName(), param.getValue());
    }
    HttpMethod httpMethod = HttpMethod.valueOf(settings.getHttpMethod().toString());
    connection.setRequestMethod(httpMethod);
    connection.setRequestCharacterEncoding(settings.getCharset());
    String body = settings.getRequestBody();
    String contentType = settings.getEncodingType().getName();
    connection.setRequestBody(body);
    connection.setRequestContentType(contentType);
    connection.addRequestHeaders(settings.getAdditionalHeaders());
    // HtmlUnit uses request parameters map for the form submit, but does not parse
    // XMLHttpRequest content.
    if(null != body && FormEncodingType.URL_ENCODED.getName().equals(contentType)){
      connection.parseFormParameters(body);
    }
    long startTime = System.currentTimeMillis();
    connection.execute();
    return new LocalWebResponse(settings,connection,System.currentTimeMillis()-startTime);
  }
}
TOP

Related Classes of org.richfaces.test.LocalWebConnection

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.