[JWebUnit-development] SF.net SVN: jwebunit:[931] trunk/jwebunit-webdriver-plugin/src/main/java/ n
Brought to you by:
henryju
|
From: <he...@us...> - 2011-10-10 14:51:10
|
Revision: 931
http://jwebunit.svn.sourceforge.net/jwebunit/?rev=931&view=rev
Author: henryju
Date: 2011-10-10 14:51:03 +0000 (Mon, 10 Oct 2011)
Log Message:
-----------
Simplify retrieve of the response body according to browsermob guys.
Modified Paths:
--------------
trunk/jwebunit-webdriver-plugin/src/main/java/net/sourceforge/jwebunit/webdriver/WebDriverTestingEngineImpl.java
Modified: trunk/jwebunit-webdriver-plugin/src/main/java/net/sourceforge/jwebunit/webdriver/WebDriverTestingEngineImpl.java
===================================================================
--- trunk/jwebunit-webdriver-plugin/src/main/java/net/sourceforge/jwebunit/webdriver/WebDriverTestingEngineImpl.java 2011-10-04 08:35:15 UTC (rev 930)
+++ trunk/jwebunit-webdriver-plugin/src/main/java/net/sourceforge/jwebunit/webdriver/WebDriverTestingEngineImpl.java 2011-10-10 14:51:03 UTC (rev 931)
@@ -18,15 +18,8 @@
*/
package net.sourceforge.jwebunit.webdriver;
-import org.apache.http.conn.BasicManagedEntity;
-
-import com.gargoylesoftware.htmlunit.util.NameValuePair;
-
-import java.io.ByteArrayInputStream;
-
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.WebResponse;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
@@ -53,17 +46,15 @@
import net.sourceforge.jwebunit.javascript.JavascriptConfirm;
import net.sourceforge.jwebunit.javascript.JavascriptPrompt;
import net.sourceforge.jwebunit.util.TestContext;
-import org.apache.commons.io.input.ProxyInputStream;
+import org.apache.commons.io.IOUtils;
import org.apache.http.Header;
-import org.apache.http.HttpEntity;
import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.HttpRequestInterceptor;
import org.apache.http.HttpResponse;
import org.apache.http.HttpResponseInterceptor;
import org.apache.http.HttpStatus;
-import org.apache.http.entity.HttpEntityWrapper;
-import org.apache.http.message.BasicHttpResponse;
+import org.apache.http.entity.BufferedHttpEntity;
import org.apache.http.protocol.HttpContext;
import org.apache.regexp.RE;
import org.apache.regexp.RESyntaxException;
@@ -102,7 +93,6 @@
private static final int DEFAULT_PORT = 8183;
private static final Random RANDOM = new Random();
private HttpResponse response;
- private BasicBufferedHttpEntity entity;
// The xpath string that identifie the current form
// ie : @name='myForm'
private String formIdent;
@@ -167,15 +157,8 @@
proxyServer.start();
proxyServer.addResponseInterceptor(new HttpResponseInterceptor() {
public void process(HttpResponse response, HttpContext context) throws HttpException, IOException {
+ response.setEntity(new BufferedHttpEntity(response.getEntity()));
WebDriverTestingEngineImpl.this.response = response;
- if (response instanceof BasicHttpResponse) {
- BasicHttpResponse basicResponse = (BasicHttpResponse) response;
- WebDriverTestingEngineImpl.this.entity = new BasicBufferedHttpEntity(response.getEntity());
- basicResponse.setEntity(WebDriverTestingEngineImpl.this.entity);
- }
- else {
- logger.error("Response is of type {}. Impossible to buffer content.", response.getClass().getSimpleName());
- }
}
});
proxyServer.addRequestInterceptor(new HttpRequestInterceptor() {
@@ -197,70 +180,6 @@
throw new RuntimeException("Unable to start BrowserMob proxy after " + TRY_COUNT + " retries");
}
- private class BasicBufferedHttpEntity extends HttpEntityWrapper {
-
- private BufferedInputStream bis;
-
- public BasicBufferedHttpEntity(HttpEntity wrapped) {
- super(wrapped);
- }
-
- @Override
- public InputStream getContent() throws IOException {
- if (bis == null) {
- bis = new BufferedInputStream(super.getContent());
- }
- return bis;
- }
-
- public byte[] getBufferedContent() {
- return bis.getBuffer();
- }
-
- }
-
- private class BufferedInputStream extends ProxyInputStream {
-
- private ByteArrayOutputStream bos = new ByteArrayOutputStream();
-
- public BufferedInputStream(InputStream proxy) {
- super(proxy);
- }
-
-
- public byte[] getBuffer() {
- return bos.toByteArray();
- }
-
- @Override
- public int read() throws IOException {
- int b = super.read();
- if (b != -1) {
- bos.write(b);
- }
- return b;
- }
-
- @Override
- public int read(byte[] array) throws IOException {
- int len = super.read(array);
- if (len > 0) {
- bos.write(array, 0, len);
- }
- return len;
- }
-
- @Override
- public int read(byte[] array, int off, int len) throws IOException {
- int len2 = super.read(array, off, len);
- if (len2 > 0) {
- bos.write(array, 0, len2);
- }
- return len2;
- }
-
- }
-
private static int getRandomPort() {
synchronized (RANDOM) {
return DEFAULT_PORT + RANDOM.nextInt(1000);
@@ -849,18 +768,12 @@
if (response.getEntity().getContentEncoding() != null) {
encoding = response.getEntity().getContentEncoding().getValue();
}
-
- if (response.getEntity() instanceof BasicBufferedHttpEntity) {
- try {
- return new String(((BasicBufferedHttpEntity) response.getEntity()).getBufferedContent(),
- encoding);
- }
- catch (IOException e) {
- throw new RuntimeException(e);
- }
+
+ try {
+ return IOUtils.toString(response.getEntity().getContent(), encoding);
}
- else {
- return driver.getPageSource();
+ catch (IOException e) {
+ throw new RuntimeException(e);
}
}
@@ -873,14 +786,21 @@
}
public InputStream getInputStream() {
- if (entity != null) {
- return new ByteArrayInputStream(entity.getBufferedContent());
+ try {
+ return response.getEntity().getContent();
}
- throw new UnsupportedOperationException("Not supported yet.");
+ catch (Exception e) {
+ throw new TestingEngineResponseException(e);
+ }
}
public InputStream getInputStream(URL url) throws TestingEngineResponseException {
- throw new UnsupportedOperationException("Not supported yet.");
+ try {
+ return url.openStream();//TODO support proxy
+ }
+ catch (IOException e) {
+ throw new TestingEngineResponseException(e);
+ }
}
public boolean hasTable(String tableSummaryNameOrId) {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|