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

com.github.lontime.extpac4j.Pac4jInstance Maven / Gradle / Ivy

The newest version!
package com.github.lontime.extpac4j;

import com.github.lontime.base.commonj.utils.Holder;
import com.github.lontime.base.logging.GLogger;
import com.github.lontime.extpac4j.provider.DefaultProvider;
import com.github.lontime.extpac4j.provider.Provider;

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

    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;
                }
                GLogger.defaults().infov("close {0} now {1}", provider.getName(), custom.getName());
                provider.close();
            }
            globalHolder.set(custom);
        }
        return globalHolder.get();
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy