net.jadler.stubbing.server.jdk.JdkStubHttpServer.java Source code

Java tutorial

Introduction

Here is the source code for net.jadler.stubbing.server.jdk.JdkStubHttpServer.java

Source

/*
 * Copyright (c) 2012 - 2016 Jadler contributors
 * This program is made available under the terms of the MIT License.
 */
package net.jadler.stubbing.server.jdk;

import com.sun.net.httpserver.HttpServer;
import net.jadler.RequestManager;
import net.jadler.stubbing.server.StubHttpServer;
import java.io.IOException;
import java.net.InetSocketAddress;
import net.jadler.exception.JadlerException;

import static org.apache.commons.lang.Validate.isTrue;
import static org.apache.commons.lang.Validate.notNull;

/**
 * Stub server implementation based on {@link HttpServer} which is part of JDK.
 */
public class JdkStubHttpServer implements StubHttpServer {

    private final HttpServer server;

    public JdkStubHttpServer(final int port) {
        isTrue(port >= 0, "port cannot be a negative number");

        try {
            server = HttpServer.create(new InetSocketAddress(port), 0);
        } catch (final IOException e) {
            throw new JadlerException("Cannot create JDK server", e);
        }
    }

    public JdkStubHttpServer() {
        this(0);
    }

    @Override
    public void registerRequestManager(final RequestManager ruleProvider) {
        notNull(ruleProvider, "ruleProvider cannot be null");
        server.createContext("/", new JdkHandler(ruleProvider));
    }

    @Override
    public void start() throws Exception {
        server.start();
    }

    @Override
    public void stop() throws Exception {
        server.stop(0);
    }

    @Override
    public int getPort() {
        return server.getAddress().getPort();
    }
}