Search in sources :

Example 1 with AlgorithmAlreadyRegisteredException

use of org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException in project santuario-java by apache.

the class SignatureAlgorithm method register.

/**
 * Registers implementing class of the SignatureAlgorithm with algorithmURI
 *
 * @param algorithmURI algorithmURI URI representation of <code>SignatureAlgorithm</code>.
 * @param implementingClass <code>implementingClass</code> the implementing class of
 * {@link SignatureAlgorithmSpi}
 * @throws AlgorithmAlreadyRegisteredException if specified algorithmURI is already registered
 * @throws XMLSignatureException
 * @throws SecurityException if a security manager is installed and the
 *    caller does not have permission to register the signature algorithm
 */
@SuppressWarnings("unchecked")
public static void register(String algorithmURI, String implementingClass) throws AlgorithmAlreadyRegisteredException, ClassNotFoundException, XMLSignatureException {
    JavaUtils.checkRegisterPermission();
    LOG.debug("Try to register {} {}", algorithmURI, implementingClass);
    // are we already registered?
    Class<? extends SignatureAlgorithmSpi> registeredClass = algorithmHash.get(algorithmURI);
    if (registeredClass != null) {
        Object[] exArgs = { algorithmURI, registeredClass };
        throw new AlgorithmAlreadyRegisteredException("algorithm.alreadyRegistered", exArgs);
    }
    try {
        Class<? extends SignatureAlgorithmSpi> clazz = (Class<? extends SignatureAlgorithmSpi>) ClassLoaderUtils.loadClass(implementingClass, SignatureAlgorithm.class);
        algorithmHash.put(algorithmURI, clazz);
    } catch (NullPointerException ex) {
        Object[] exArgs = { algorithmURI, ex.getMessage() };
        throw new XMLSignatureException(ex, "algorithms.NoSuchAlgorithm", exArgs);
    }
}
Also used : AlgorithmAlreadyRegisteredException(org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException) XMLSignatureException(org.apache.xml.security.signature.XMLSignatureException)

Aggregations

AlgorithmAlreadyRegisteredException (org.apache.xml.security.exceptions.AlgorithmAlreadyRegisteredException)1 XMLSignatureException (org.apache.xml.security.signature.XMLSignatureException)1