You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@santuario.apache.org by co...@apache.org on 2014/06/13 11:52:36 UTC

svn commit: r1602353 - /santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java

Author: coheigea
Date: Fri Jun 13 09:52:36 2014
New Revision: 1602353

URL: http://svn.apache.org/r1602353
Log:
[SANTUARIO-393] - Performance regression as signature data is not buffered. Thanks to Markus KilÄs for the patch.

Modified:
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java?rev=1602353&r1=1602352&r2=1602353&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java Fri Jun 13 09:52:36 2014
@@ -218,8 +218,17 @@ public final class DOMSignedInfo extends
         }
 
         OutputStream os = new UnsyncBufferedOutputStream(bos);
+        
+        DOMSubTreeData subTree = new DOMSubTreeData(localSiElem, true);
         try {
-            os.close();
+            ((DOMCanonicalizationMethod) 
+                canonicalizationMethod).canonicalize(subTree, context, os);
+        } catch (TransformException te) {
+            throw new XMLSignatureException(te);
+        }
+        
+        try {
+            os.flush();
         } catch (IOException e) {
             if (log.isDebugEnabled()) {
                 log.debug(e.getMessage(), e);
@@ -227,15 +236,6 @@ public final class DOMSignedInfo extends
             // Impossible
         }
 
-        DOMSubTreeData subTree = new DOMSubTreeData(localSiElem, true);
-
-        try {
-            ((DOMCanonicalizationMethod) 
-                canonicalizationMethod).canonicalize(subTree, context, bos);
-        } catch (TransformException te) {
-            throw new XMLSignatureException(te);
-        }
-
         byte[] signedInfoBytes = bos.toByteArray();
 
         // this whole block should only be done if logging is enabled
@@ -250,6 +250,15 @@ public final class DOMSignedInfo extends
         }
 
         this.canonData = new ByteArrayInputStream(signedInfoBytes);
+        
+        try {
+            os.close();
+        } catch (IOException e) {
+            if (log.isDebugEnabled()) {
+                log.debug(e.getMessage(), e);
+            }
+            // Impossible
+        }
     }
 
     @Override