package com.google.jstestdriver;
import com.google.gson.Gson;
import com.google.gson.JsonSyntaxException;
import com.google.jstestdriver.Response.ResponseType;
import com.google.jstestdriver.browser.BrowserPanicException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* A response stream that throws an exception if the browser panics.
* @author corysmith@google.com (Cory Smith)
*/
class BrowserPanicResponseStream implements ResponseStream {
private static final Logger logger = LoggerFactory.getLogger(BrowserPanicResponseStream.class);
private final Gson gson = new Gson();
@Override
public void stream(Response response) {
if (response.getResponseType() == ResponseType.BROWSER_PANIC) {
try {
BrowserPanic panic = gson.fromJson(response.getResponse(),
response.getResponseType().type);
BrowserPanicException exception =
new BrowserPanicException(panic.getBrowserInfo(),
"");
logger.error("Browser not found : {}\n Exception: {}",
new Object[]{response.getResponse(),
exception});
throw exception;
} catch (JsonSyntaxException e) {
throw new RuntimeException(String.format("Failed to deserialize |%s|", response.getResponse()), e);
}
}
}
@Override
public void finish() {
// NOOP
}
}