All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.lontime.exthttp.HttpInstance Maven / Gradle / Ivy

There is a newer version: 1.4.0
Show newest version
package com.github.lontime.exthttp;

import com.github.lontime.base.commonj.utils.Holder;
import com.github.lontime.base.commonj.utils.LoggerHelper;
import com.github.lontime.exthttp.provider.DefaultProvider;
import com.github.lontime.exthttp.provider.Provider;

/**
 * HttpInstance.
 * @author lontime
 * @since 1.0
 */
public class HttpInstance {

    private static Holder globalHolder = new Holder<>();
    private static final Object globalLock = new Object();

    public static Provider get() {
        if (null == globalHolder.get()) {
            synchronized (globalLock) {
                if (null == globalHolder.get()) {
                    globalHolder.set(DefaultProvider.create());
                }
            }
        }
        return globalHolder.get();
    }

    public static Provider set(Provider custom) {
        synchronized (globalLock) {
            final Provider provider = globalHolder.get();
            if (null != provider) {
                if (provider.equals(custom)) {
                    return provider;
                }
                LoggerHelper.infov("close {0} now {1}", provider.getName(), custom.getName());
                provider.close();
            }
            globalHolder.set(custom);
        }
        return globalHolder.get();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy