Package net.jsunit

Source Code of net.jsunit.RemoteConfigurationCacheUpdater

package net.jsunit;

import net.jsunit.configuration.RemoteConfiguration;

import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;

public class RemoteConfigurationCacheUpdater extends Thread {
    private static final long THREE_MINUTE_MILLIS = 1000 * 60 * 3;

    private static final Logger logger = Logger.getLogger("net.jsunit");

    private RemoteConfigurationCache cache;
    private List<URL> remoteMachineURLs;
    private RemoteServerHitter hitter;
    private boolean running;

    public RemoteConfigurationCacheUpdater(RemoteConfigurationCache cache, List<URL> remoteMachineURLs, RemoteServerHitter hitter) {
        this.cache = cache;
        this.remoteMachineURLs = remoteMachineURLs;
        this.hitter = hitter;
        setDaemon(true);
    }

    public synchronized void start() {
        running = true;
        super.start();
    }

    public void run() {
        while (running) {
            try {
                Thread.sleep(THREE_MINUTE_MILLIS);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            fetch();
        }
    }

    public void fetch() {
        logger.info("Fetching remote machine configurations (" + remoteMachineURLs.size() + " remote servers)");
        List<RemoteConfiguration> result = new ArrayList<RemoteConfiguration>();
        for (URL remoteMachineURL : remoteMachineURLs) {
            RemoteConfigurationFetcher fetcher = new RemoteConfigurationFetcher(hitter, remoteMachineURL);
            try {
                fetcher.fetch();
            } catch (IOException e) {
                logger.severe("Could not fetch remote configuration for URL " + remoteMachineURL.toString());
            }
            RemoteConfiguration retrievedRemoteConfiguration = fetcher.getRetrievedRemoteConfiguration();
            if (retrievedRemoteConfiguration != null)
                result.add(retrievedRemoteConfiguration);
        }
        cache.setCachedRemoteConfigurations(result);
        logger.info("Done fetching remote machine configurations");
    }

    public void stopFetching() {
        running = false;
    }
}
TOP

Related Classes of net.jsunit.RemoteConfigurationCacheUpdater

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.