/* * Copyright (C) 2021, Thomas Wolf and others * * This program and the accompanying materials are made available under the * terms of the Eclipse Distribution License v. 1.0 which is available at * https://www.eclipse.org/org/documents/edl-v10.php. * * SPDX-License-Identifier: BSD-3-Clause */ package org.eclipse.jgit.lib; import java.util.Iterator; import java.util.ServiceConfigurationError; import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A {@code GpgSignatureVerifierFactory} creates {@link GpgSignatureVerifier} instances. * * @since 5.11 */ public abstract class GpgSignatureVerifierFactory { private static final Logger LOG = LoggerFactory .getLogger(GpgSignatureVerifierFactory.class); private static volatile GpgSignatureVerifierFactory defaultFactory = loadDefault(); private static GpgSignatureVerifierFactory loadDefault() { try { ServiceLoader loader = ServiceLoader .load(GpgSignatureVerifierFactory.class); Iterator iter = loader.iterator(); if (iter.hasNext()) { return iter.next(); } } catch (ServiceConfigurationError e) { LOG.error(e.getMessage(), e); } return null; } /** * Retrieves the default factory. * * @return the default factory or {@code null} if none set */ public static GpgSignatureVerifierFactory getDefault() { return defaultFactory; } /** * Sets the default factory. * * @param factory * the new default factory */ public static void setDefault(GpgSignatureVerifierFactory factory) { defaultFactory = factory; } /** * Creates a new {@link GpgSignatureVerifier}. * * @return the new {@link GpgSignatureVerifier} */ public abstract GpgSignatureVerifier getVerifier(); }