List of usage examples for org.openqa.selenium.remote ErrorCodes UNHANDLED_ERROR
int UNHANDLED_ERROR
To view the source code for org.openqa.selenium.remote ErrorCodes UNHANDLED_ERROR.
Click Source Link
From source file:com.jobaline.uiautomation.framework.selenium.phantomJsThreeHourTimeoutFix.HttpCommandExecutor.java
License:Apache License
private Response createResponse(HttpResponse httpResponse, HttpContext context, EntityWithEncoding entityWithEncoding) throws IOException { final Response response; Header header = httpResponse.getFirstHeader("Content-Type"); if (header != null && header.getValue().startsWith("application/json")) { String responseAsText = entityWithEncoding.getContentString(); try {/*from w w w.j a v a 2 s . c o m*/ response = new JsonToBeanConverter().convert(Response.class, responseAsText); } catch (ClassCastException e) { if (responseAsText != null && "".equals(responseAsText)) { // The remote server has died, but has already set some headers. // Normally this occurs when the final window of the firefox driver // is closed on OS X. Return null, as the return value _should_ be // being ignored. This is not an elegant solution. return null; } throw new WebDriverException("Cannot convert text to response: " + responseAsText, e); } } else { response = new Response(); if (header != null && header.getValue().startsWith("image/png")) { response.setValue(entityWithEncoding.getContent()); } else if (entityWithEncoding.hasEntityContent()) { response.setValue(entityWithEncoding.getContentString()); } HttpHost finalHost = (HttpHost) context.getAttribute(HTTP_TARGET_HOST); String uri = finalHost.toURI(); String sessionId = HttpSessionId.getSessionId(uri); if (sessionId != null) { response.setSessionId(sessionId); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (!(statusCode > 199 && statusCode < 300)) { // 4xx represents an unknown command or a bad request. if (statusCode > 399 && statusCode < 500) { response.setStatus(ErrorCodes.UNKNOWN_COMMAND); } else if (statusCode > 499 && statusCode < 600) { // 5xx represents an internal server error. The response status should already be set, but // if not, set it to a general error code. if (response.getStatus() == ErrorCodes.SUCCESS) { response.setStatus(ErrorCodes.UNHANDLED_ERROR); } } else { response.setStatus(ErrorCodes.UNHANDLED_ERROR); } } if (response.getValue() instanceof String) { // We normalise to \n because Java will translate this to \r\n // if this is suitable on our platform, and if we have \r\n, java will // turn this into \r\r\n, which would be Bad! response.setValue(((String) response.getValue()).replace("\r\n", "\n")); } } response.setState(errorCodes.toState(response.getStatus())); return response; }
From source file:org.openqa.grid.web.servlet.DriverServlet.java
License:Apache License
protected void process(HttpServletRequest request, HttpServletResponse response) throws IOException { RequestHandler req = null;/*from ww w . j av a 2 s .co m*/ SeleniumBasedRequest r = null; try { r = SeleniumBasedRequest.createFromRequest(request, getRegistry()); req = new RequestHandler(r, response, getRegistry()); req.process(); } catch (Throwable e) { if (r instanceof WebDriverRequest && !response.isCommitted()) { // http://code.google.com/p/selenium/wiki/JsonWireProtocol#Error_Handling response.reset(); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); response.setStatus(500); JSONObject resp = new JSONObject(); try { final ExternalSessionKey serverSession = req.getServerSession(); resp.put("sessionId", serverSession != null ? serverSession.getKey() : null); resp.put("status", ErrorCodes.UNHANDLED_ERROR); JSONObject value = new JSONObject(); value.put("message", e.getMessage()); value.put("class", e.getClass().getCanonicalName()); JSONArray stacktrace = new JSONArray(); for (StackTraceElement ste : e.getStackTrace()) { JSONObject st = new JSONObject(); st.put("fileName", ste.getFileName()); st.put("className", ste.getClassName()); st.put("methodName", ste.getMethodName()); st.put("lineNumber", ste.getLineNumber()); stacktrace.put(st); } value.put("stackTrace", stacktrace); resp.put("value", value); } catch (JSONException e1) { e1.printStackTrace(); } String json = resp.toString(); byte[] bytes = json.getBytes("UTF-8"); InputStream in = new ByteArrayInputStream(bytes); try { response.setHeader("Content-Length", Integer.toString(bytes.length)); ByteStreams.copy(in, response.getOutputStream()); } finally { in.close(); response.flushBuffer(); } } else { throw (new IOException(e)); } } }