Package org.geoserver.catalog

Source Code of org.geoserver.catalog.TestHttpClientProvider

package org.geoserver.catalog;

import java.net.URL;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

import org.geotools.data.ows.HTTPClient;

/**
* Provides mock HTTP clients bound to the {@link #MOCKSERVER} address, to be used for testing.
*
* @author Andrea Aime - GeoSolutions
*/
public class TestHttpClientProvider {

    public static final String MOCKSERVER = "http://mock.test.geoserver.org";

    static final Map<String, HTTPClient> CLIENTS = new ConcurrentHashMap<String, HTTPClient>();

    private static boolean TEST_MODE = false;

    /**
     * Binds the specified http client to the specified path
     *
     * @param client
     * @param path
     */
    public static void bind(HTTPClient client, URL url) {
        bind(client, url.toExternalForm());
    }
   
    /**
     * Binds the specified http client to the specified path
     *
     * @param client
     * @param path
     */
    public static void bind(HTTPClient client, String url) {
        if (!url.startsWith(MOCKSERVER)) {
            throw new IllegalArgumentException("The URL must start with " + MOCKSERVER);
        }
        CLIENTS.put(url, client);
    }

    public static HTTPClient get(String url) {
        if (!url.startsWith(MOCKSERVER)) {
            throw new IllegalArgumentException("The url " + url + " does not start with "
                    + MOCKSERVER);
        }
        if(!TEST_MODE) {
            throw new IllegalArgumentException("The provider is not in test mode now");
        }
        HTTPClient httpClient = CLIENTS.get(url);
        if (httpClient == null) {
            throw new IllegalArgumentException("The mock url " + url + " is not bound "
                    + "to any mock http client, current bindings are towards: " + CLIENTS.keySet());
        }
        return httpClient;
    }

    /**
     * Used to check if any binding is associated into the mock server
     */
    public static boolean testModeEnabled() {
        return TEST_MODE;
    }

    /**
     * Clears all bindings to HTTPClient objects
     */
    public static void clear() {
        CLIENTS.clear();
    }

    /**
     * Puts the mock HTTP client provider out of test mode
     */
    public static void endTest() {
        TEST_MODE = false;
        CLIENTS.clear();
    }

    /**
     * Puts the provider in test mode
     */
    public static void startTest() {
        TEST_MODE = true;
    }
}
TOP

Related Classes of org.geoserver.catalog.TestHttpClientProvider

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.