/* * Copyright (c) 2012 - 2016 Jadler contributors * This program is made available under the terms of the MIT License. */ package net.jadler.stubbing.server.jetty; import net.jadler.RequestManager; import net.jadler.stubbing.server.StubHttpServer; import org.eclipse.jetty.server.Server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.apache.commons.lang.Validate; import org.eclipse.jetty.server.Connector; import org.eclipse.jetty.server.nio.SelectChannelConnector; /** * Default stub http server implementation using Jetty as an http server. */ public class JettyStubHttpServer implements StubHttpServer { private static final Logger logger = LoggerFactory.getLogger(JettyStubHttpServer.class); private final Server server; private final Connector httpConnector; public JettyStubHttpServer() { this(0); } public JettyStubHttpServer(final int port) { this.server = new Server(); this.server.setSendServerVersion(false); this.server.setSendDateHeader(true); this.httpConnector = new SelectChannelConnector(); this.httpConnector.setPort(port); server.addConnector(this.httpConnector); } /** * {@inheritDoc} */ @Override public void registerRequestManager(final RequestManager ruleProvider) { Validate.notNull(ruleProvider, "ruleProvider cannot be null"); server.setHandler(new JadlerHandler(ruleProvider)); } /** * {@inheritDoc} */ @Override public void start() throws Exception { logger.debug("starting jetty"); server.start(); logger.debug("jetty started"); } /** * {@inheritDoc} */ @Override public void stop() throws Exception { logger.debug("stopping jetty"); server.stop(); logger.debug("jetty stopped"); } /** * {@inheritDoc} */ @Override public int getPort() { return httpConnector.getLocalPort(); } }