Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 2012-2013 eBay Software Foundation and selendroid committers.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
   * in compliance with the License. You may obtain a copy of the License at
   * 
   * http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software distributed under the License
  * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
  * or implied. See the License for the specific language governing permissions and limitations under
  * the License.
  */
 package io.selendroid.server;
 
 
 import java.util.Map;
 
 
 public class SelendroidServlet extends BaseServlet {
   private static final Logger log = Logger.getLogger(SelendroidServlet.class.getName());
   protected Map<StringClass<? extends BaseRequestHandler>> redirectHandler =
       new HashMap<StringClass<? extends BaseRequestHandler>>();
 
     this. = driver;
     this. = conf;
     init();
   }
 
   protected void init() {
     .put("/wd/hub/session"CreateSessionHandler.class);
     .put("/wd/hub/sessions"ListSessionsHandler.class);
     .put("/wd/hub/session/:sessionId"GetCapabilities.class);
 
     .put("/wd/hub/session/:sessionId/log/types"GetLogTypes.class);
     .put("/wd/hub/session/:sessionId/log"GetLogs.class);
     if (.isDeviceScreenshot() == false) {
       .put("/wd/hub/session/:sessionId/screenshot"CaptureScreenshot.class);
     }// otherwise the request will be automatically forwarded to the device
 
 
     .put("/inspector/session/:sessionId/tree"InspectorTreeHandler.class);
     .put("/inspector/session/:sessionId/screenshot"InspectorScreenshotHandler.class);
     .put("/inspector/session/:sessionId"InspectorUiHandler.class);
     .put("/wd/hub/session/:sessionId"DeleteSessionHandler.class);
     .put("/wd/hub/session/"RequestRedirectHandler.class);
   }
 
   @Override
   public void handleRequest(HttpRequest requestHttpResponse response,
       BaseRequestHandler foundHandler) {
     BaseRequestHandler handler = null;
     if ("/favicon.ico".equals(request.uri()) && foundHandler == null) {
       response.setStatus(404);
       response.end();
       return;
     }
     if ("/inspector/".equals(request.uri()) || "/inspector".equals(request.uri())) {
       if (.getActiceSessions().isEmpty()) {
         response.setStatus(200);
         response
             .setContent("Selendroid inspector can only be used if there is an active test session running. "
                 + "To start a test session, add a break point into your test code and run the test in debug mode.");
         response.end();
         return;
       } else {
         // response.setStatus(302);
         String session = .getActiceSessions().get(0).getSessionKey();
 
         String newSessionUri =
             "http://" + request.header("Host") + "/inspector/session/" + session + "/";
         .info("new Inspector URL: " + newSessionUri);
         response.sendRedirect(newSessionUri);
         response.end();
         return;
       }
     }
     if (foundHandler == null) {
       if (.isEmpty() == false) {
        // trying to find an redirect handler
        for (Map.Entry<StringClass<? extends BaseRequestHandler>> entry : 
            .entrySet()) {
          if (request.uri().startsWith(entry.getKey())) {
            String sessionId =
                getParameter("/wd/hub/session/:sessionId"request.uri(), ":sessionId"false);
            handler = instantiateHandler(entryrequest);
            if (.isValidSession(sessionId)) {
              request.data().put(sessionId);
            }
          }
        }
      }
      if (handler == null) {
        response.setStatus(404);
        response.end();
        return;
      }
    } else {
      handler = foundHandler;
    }
    String sessionId = getParameter(handler.getMappedUri(), request.uri(), ":sessionId");
    if (sessionId != null) {
      request.data().put(sessionId);
    }
    request.data().put();
    Response result;
    try {
      result = handler.handle();
    } catch (Exception e) {
      e.printStackTrace();
      .severe("Error occurred while handling request: " + e.fillInStackTrace());
      replyWithServerError(response);
      return;
    }
    if (result instanceof SelendroidResponse) {
      handleResponse(requestresponse, (SelendroidResponseresult);
    } else if (result instanceof JsResult) {
      JsResult js = (JsResultresult;
      response.setContentType("application/x-javascript");
      response.setEncoding(Charset.forName("UTF-8"));
      response.setContent(js.render());
      response.end();
    } else {
      UiResponse uiResponse = (UiResponseresult;
      response.setContentType("text/html");
      response.setEncoding(Charset.forName("UTF-8"));
      response.setStatus(200);
      if (uiResponse != null) {
        if (uiResponse.getObject() instanceof byte[]) {
          byte[] data = (byte[]) uiResponse.getObject();
          
          response.setContent(data);
        } else {
          String resultString = uiResponse.render();
          response.setContent(resultString);
        }
      }
      response.end();
    }
  }
New to GrepCode? Check out our FAQ X