public synchronized void getInstance(String algorithm, Object param)
throws NoSuchAlgorithmException {
Provider.Service serv;
if (algorithm == null) {
throw new NoSuchAlgorithmException(Messages.getString("security.149")); //$NON-NLS-1$
}
Services.refresh();
if (returnedService != null
&& Util.equalsIgnoreCase(algorithm, lastAlgorithm)
&& refreshNumber == Services.refreshNumber) {
serv = returnedService;
} else {
if (Services.isEmpty()) {
throw new NoSuchAlgorithmException(Messages.getString("security.14A", //$NON-NLS-1$
serviceName, algorithm));
}
serv = Services.getService(new StringBuilder(128)
.append(serviceName).append(".").append( //$NON-NLS-1$
Util.toUpperCase(algorithm)).toString());
if (serv == null) {
throw new NoSuchAlgorithmException(Messages.getString("security.14A", //$NON-NLS-1$
serviceName, algorithm));
}
returnedService = serv;
lastAlgorithm = algorithm;
refreshNumber = Services.refreshNumber;