package com.mockmock.server; import com.mockmock.AppStarter; import com.mockmock.Settings; import com.mockmock.http.*; import org.eclipse.jetty.server.Handler; import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.handler.HandlerList; import org.eclipse.jetty.server.handler.ResourceHandler; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.io.File; @Service public class HttpServer implements com.mockmock.server.Server { private int port; private Settings settings; private IndexHandler indexHandler; private MailDetailHandler mailDetailHandler; private MailDetailHtmlHandler mailDetailHtmlHandler; private MailDeleteHandler mailDeleteHandler; private DeleteHandler deleteHandler; public void setPort(int port) { this.port = port; } public void start() { Server http = new Server(port); // get the path to the "static" folder. If it doesn't exists, check if it's in the folder of the file being executed. String path = "./static"; if(settings.getStaticFolderPath() != null) { path = settings.getStaticFolderPath(); } if( ! new File(path).exists()) { System.out.println("Path to static folder does not exist: " + path); // get the directory we're in path = AppStarter.class.getProtectionDomain().getCodeSource().getLocation().getPath(); path = new File(path).getParent() + "/static"; System.out.println("Using auto guessed folder: " + path); } System.out.println("Path to resources folder: " + path); ResourceHandler resourceHandler = new ResourceHandler(); resourceHandler.setResourceBase(path); Handler[] handlers = { this.indexHandler, this.mailDetailHandler, this.mailDetailHtmlHandler, this.mailDeleteHandler, this.deleteHandler, resourceHandler }; HandlerList handlerList = new HandlerList(); handlerList.setHandlers(handlers); http.setHandler(handlerList); try { System.out.println("Starting http server on port " + port); http.start(); http.join(); } catch (Exception e) { System.err.println("Could not start http server. Maybe port " + port + " is already in use?"); } } @Autowired public void setIndexHandler(IndexHandler indexHandler) { this.indexHandler = indexHandler; } @Autowired public void setMailDetailHandler(MailDetailHandler mailDetailHandler) { this.mailDetailHandler = mailDetailHandler; } @Autowired public void setMailDetailHtmlHandler(MailDetailHtmlHandler mailDetailHtmlHandler) { this.mailDetailHtmlHandler = mailDetailHtmlHandler; } @Autowired public void setMailDeleteHandler(MailDeleteHandler mailDeleteHandler) { this.mailDeleteHandler = mailDeleteHandler; } @Autowired public void setDeleteHandler(DeleteHandler deleteHandler) { this.deleteHandler = deleteHandler; } @Autowired public void setSettings(Settings settings) { this.settings = settings; } }