Package de.matrixweb.smaller.servlet

Source Code of de.matrixweb.smaller.servlet.SmallerServletTest$ServerThread

package de.matrixweb.smaller.servlet;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;

import java.io.InputStream;
import java.net.URL;

import org.apache.commons.io.IOUtils;
import org.eclipse.jetty.http.MimeTypes;
import org.eclipse.jetty.server.Server;
import org.eclipse.jetty.server.handler.HandlerCollection;
import org.eclipse.jetty.servlet.ServletContextHandler;
import org.eclipse.jetty.servlet.ServletHolder;
import org.eclipse.jetty.util.resource.Resource;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;

/**
* @author marwol
*
*/
public class SmallerServletTest {

  private static ServerThread serverThread;

  /**
   * @throws Exception
   */
  @BeforeClass
  public static void startJetty() throws Exception {
    serverThread = new ServerThread();
    serverThread.start();
    final Thread t = new Thread(serverThread);
    t.start();
  }

  /**
   * @throws Exception
   */
  @AfterClass
  public static void stopJetty() throws Exception {
    serverThread.stop();
  }

  /**
   * @throws Exception
   */
  @Test
  public void testCss() throws Exception {
    final URL url = new URL("http://localhost:65000/css/test.css");
    final InputStream in = url.openStream();
    try {
      final String body = IOUtils.toString(in);
      assertThat(body, is("a{color:blue}"));
    } finally {
      in.close();
    }
  }

  /**
   * @throws Exception
   */
  @Test
  public void testJs() throws Exception {
    final URL url = new URL("http://localhost:65000/js/test.js");
    final InputStream in = url.openStream();
    try {
      final String body = IOUtils.toString(in);
      System.out.println("Expected: (function(){alert(\"a\")})();".replaceAll(
          "\n", "\\n"));
      System.out.println("Result  : " + body.replaceAll("\n", "\\n"));
      assertThat(body, is("(function(){alert(\"a\")})();"));
    } finally {
      in.close();
    }
  }

  /**
   * @throws Exception
   */
  @Test
  public void testExisting() throws Exception {
    final URL url = new URL("http://localhost:65000/existing/test.js");
    final InputStream in = url.openStream();
    try {
      final String body = IOUtils.toString(in);
      System.out.println("Expected: // This should be the only response"
          .replaceAll("\n", "\\n"));
      System.out.println("Result  : " + body.replaceAll("\n", "\\n"));
      assertThat(body, is("// This should be the only response"));
    } finally {
      in.close();
    }
  }

  private static class ServerThread implements Runnable {

    private static Server jetty;

    public void start() {
      try {
        final MimeTypes mimeTypes = new MimeTypes();
        mimeTypes.addMimeMapping("css", "text/css");
        mimeTypes.addMimeMapping("js", "text/javascript");

        final ServletContextHandler cssContext = new ServletContextHandler(
            ServletContextHandler.SESSIONS);
        cssContext.setContextPath("/");
        cssContext.setBaseResource(Resource.newResource("src/test/resources"));
        cssContext.setMimeTypes(mimeTypes);
        ServletHolder holder = new ServletHolder(new SmallerServlet());
        holder.setInitParameter("processors", "lessjs,yuicompressor");
        holder.setInitParameter("includes", "less/test.less");
        // holder.setInitParameter("excludes", "css/b.css");
        cssContext.addServlet(holder, "/css/test.css");

        final ServletContextHandler jsContext = new ServletContextHandler(
            ServletContextHandler.SESSIONS);
        jsContext.setContextPath("/");
        jsContext.setBaseResource(Resource.newResource("src/test/resources"));
        holder = new ServletHolder(new SmallerServlet());
        holder.setInitParameter("processors", "closure");
        holder.setInitParameter("includes", "js/*.js");
        holder.setInitParameter("force", "true");
        holder.setInitParameter("mode", "lazy");
        jsContext.addServlet(holder, "/js/test.js");

        final ServletContextHandler existsContext = new ServletContextHandler(
            ServletContextHandler.SESSIONS);
        existsContext.setContextPath("/");
        existsContext.setBaseResource(Resource
            .newResource("src/test/resources"));
        holder = new ServletHolder(new SmallerServlet());
        holder.setInitParameter("processors", "merge");
        holder.setInitParameter("includes", "**/*.js");
        existsContext.addServlet(holder, "/existing/test.js");

        final HandlerCollection hc = new HandlerCollection();
        hc.addHandler(cssContext);
        hc.addHandler(jsContext);
        hc.addHandler(existsContext);

        jetty = new Server(65000);
        jetty.setHandler(hc);

        jetty.start();
      } catch (final Exception e) {
        throw new RuntimeException(e);
      }
    }

    @Override
    public void run() {
      try {
        jetty.join();
      } catch (final Exception e) {
        throw new RuntimeException(e);
      }
    }

    public void stop() {
      try {
        jetty.stop();
      } catch (final Exception e) {
        throw new RuntimeException(e);
      }
    }

  }

}
TOP

Related Classes of de.matrixweb.smaller.servlet.SmallerServletTest$ServerThread

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.