All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.thoughtworks.selenium.grid.webserver.MainServlet Maven / Gradle / Ivy

The newest version!
package com.thoughtworks.selenium.grid.webserver;

import com.thoughtworks.selenium.grid.HttpParameters;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 */
public class MainServlet extends HttpServlet {

    private RouteResolver routeResolver;


    @SuppressWarnings({"unchecked"})
    public void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        final Resource resource;
        final String page;

        resource = routeResolver().resolve(request);
        page = resource.process(new HttpParameters(request.getParameterMap()));
        render(page, response);
    }

    public void render(String page, HttpServletResponse response) throws IOException {
        response.setContentType("text/plain");
        response.setCharacterEncoding("UTF-8");
        response.getWriter().print(page);
    }


    protected RouteResolver routeResolver() {
        if (null == routeResolver) {
          routeResolver = createRouteResolver();
        }
        return routeResolver;
    }

    protected RouteResolver createRouteResolver() {
        final String routeResolverClassName;
        final Class routeResolverClass;

        routeResolverClassName = getServletConfig().getInitParameter("route_resolver");
        try {
            routeResolverClass = Class.forName(routeResolverClassName);
            return (RouteResolver) routeResolverClass.newInstance();
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("Could not find route resolver '" + routeResolverClassName + "'", e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException("Could not access class or its no-arg constructor '" + routeResolverClassName + "'", e);
        } catch (InstantiationException e) {
            throw new RuntimeException("Could not find no arg constructor for '" + routeResolverClassName + "'", e);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy