/* * SK's Minecraft Launcher * Copyright (C) 2010-2014 Albert Pham <http://www.sk89q.com> and contributors * Please see LICENSE.txt for license information. */ package com.skcraft.launcher.creator.server; import com.fasterxml.jackson.databind.ObjectMapper; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.ContextHandler; import org.eclipse.jetty.server.handler.ContextHandlerCollection; import org.eclipse.jetty.server.handler.ResourceHandler; import org.eclipse.jetty.server.handler.gzip.GzipHandler; import java.io.File; public class TestServerBuilder { private File baseDir = new File("."); private int port = 28888; public File getBaseDir() { return baseDir; } public TestServerBuilder setBaseDir(File baseDir) { this.baseDir = baseDir; return this; } public int getPort() { return port; } public TestServerBuilder setPort(int port) { this.port = port; return this; } public TestServer build() { Server server = new Server(port); ObjectMapper mapper = new ObjectMapper(); ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setDirectoriesListed(true); resourceHandler.setResourceBase(baseDir.getAbsolutePath()); resourceHandler.setMinMemoryMappedContentLength(-1); // Causes file locking on Windows ContextHandler rootContext = new ContextHandler(); rootContext.setContextPath("/"); rootContext.setHandler(resourceHandler); ContextHandler packagesContext = new ContextHandler("/packages.json"); packagesContext.setAllowNullPathInfo(true); packagesContext.setHandler(new PackagesHandler(mapper, baseDir)); ContextHandler latestContext = new ContextHandler("/latest.json"); latestContext.setAllowNullPathInfo(true); latestContext.setHandler(new LatestHandler(mapper)); ContextHandler newsContext = new ContextHandler("/news.html"); newsContext.setAllowNullPathInfo(true); newsContext.setHandler(new NewsHandler()); ContextHandlerCollection contexts = new ContextHandlerCollection(); contexts.setHandlers(new Handler[]{packagesContext, latestContext, newsContext, rootContext}); GzipHandler gzip = new GzipHandler(); server.setHandler(gzip); gzip.setHandler(contexts); return new TestServer(server); } }