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