ProviderFactory.java

// SPDX-FileCopyrightText: 2020 Paul Schaub <vanitasvitae@fsfe.org>
//
// SPDX-License-Identifier: Apache-2.0

package org.pgpainless.provider;

import java.security.Provider;

public abstract class ProviderFactory {

    private static ProviderFactory FACTORY;

    protected abstract Provider _getProvider();
    protected abstract String _getProviderName();

    public static void setFactory(ProviderFactory factory) {
        ProviderFactory.FACTORY = factory;
    }

    public static ProviderFactory getFactory() {
        if (FACTORY == null) {
            FACTORY = new BouncyCastleProviderFactory();
        }
        return FACTORY;
    }

    public static Provider getProvider() {
        return ProviderFactory.getFactory()._getProvider();
    }

    public static String getProviderName() {
        return ProviderFactory.getFactory()._getProviderName();
    }

}