Package ru.decipher.proxy.impl

Source Code of ru.decipher.proxy.impl.ExternalProxyLoader

package ru.decipher.proxy.impl;

import ru.decipher.extraction.Processor;
import ru.decipher.extraction.impl.GeneralProcessor;
import ru.decipher.provider.http.HttpRequest;
import ru.decipher.proxy.HttpProxyConfigLoader;
import ru.decipher.proxy.source.ProxySourceSite;

import java.lang.reflect.Constructor;
import java.util.*;

/**
* Allows to load proxies from external source such as
* Internet sites.
* <p/>
* Provides shared processor for all submissions which can
* be configured via constructor
* <p/>
* Basically, this loader submits specified loaders to shared
* processor and waits when all loaders done
* <p/>
* User: Alexander Paderin (apocarteres@gmail.com)
* Date: 3/26/14
* Time: 11:43 AM
*/
public class ExternalProxyLoader implements HttpProxyConfigLoader {

    private final List<Class<? extends ProxySourceSite>> loaderClasses;
    private final int workers;

    public ExternalProxyLoader(List<Class<? extends ProxySourceSite>> loaderClasses, int workers) {
        this.loaderClasses = loaderClasses;
        this.workers = workers;
    }

    @Override
    public Collection<HttpProxyConfig> load() throws Exception {
        Processor<HttpRequest> processor = new GeneralProcessor<>(workers);
        List<ProxySourceSite> sites = new ArrayList<>();
        for (Class<? extends ProxySourceSite> clazz : loaderClasses) {
            final Constructor<? extends ProxySourceSite> constructor = clazz.getConstructor(Processor.class);
            final ProxySourceSite site = constructor.newInstance(processor);
            sites.add(site);
            site.init();
        }
        processor.shutdown();
        Set<HttpProxyConfig> result = new HashSet<>();
        for (ProxySourceSite site : sites) {
            result.addAll(site.load());
        }
        return result;
    }
}
TOP

Related Classes of ru.decipher.proxy.impl.ExternalProxyLoader

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.