You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by ra...@apache.org on 2006/06/12 01:00:46 UTC
svn commit: r413544 -
/xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
Author: raul
Date: Sun Jun 11 16:00:45 2006
New Revision: 413544
URL: http://svn.apache.org/viewvc?rev=413544&view=rev
Log:
Optimization to not create instances of Signature objects, but mantain one for thread.
Modified:
xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
Modified: xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java
URL: http://svn.apache.org/viewvc/xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java?rev=413544&r1=413543&r2=413544&view=diff
==============================================================================
--- xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java (original)
+++ xml/security/trunk/src/org/apache/xml/security/algorithms/MessageDigestAlgorithm.java Sun Jun 11 16:00:45 2006
@@ -18,6 +18,8 @@
import java.security.MessageDigest;
import java.security.NoSuchProviderException;
+import java.util.HashMap;
+import java.util.Map;
import org.apache.xml.security.signature.XMLSignatureException;
import org.apache.xml.security.utils.Constants;
@@ -64,6 +66,12 @@
this.algorithm = messageDigest;
}
+
+ static ThreadLocal instances=new ThreadLocal() {
+ protected Object initialValue() {
+ return new HashMap();
+ };
+ };
/**
* Factory method for constructing a message digest algorithm by name.
@@ -75,8 +83,15 @@
*/
public static MessageDigestAlgorithm getInstance(
Document doc, String algorithmURI) throws XMLSignatureException {
+ MessageDigest md = getDigestInstance(algorithmURI);
+ return new MessageDigestAlgorithm(doc, md, algorithmURI);
+ }
- String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
+private static MessageDigest getDigestInstance(String algorithmURI) throws XMLSignatureException {
+ MessageDigest result=(MessageDigest) ((Map)instances.get()).get(algorithmURI);
+ if (result!=null)
+ return result;
+ String algorithmID = JCEMapper.translateURItoJCEID(algorithmURI);
if (algorithmID == null) {
Object[] exArgs = { algorithmURI };
@@ -102,8 +117,9 @@
throw new XMLSignatureException("algorithms.NoSuchAlgorithm", exArgs);
}
- return new MessageDigestAlgorithm(doc, md, algorithmURI);
- }
+ ((Map)instances.get()).put(algorithmURI, md);
+ return md;
+}
/**
* Returns the actual {@link java.security.MessageDigest} algorithm object