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 2016/10/19 10:04:23 UTC

svn commit: r1765568 - in /santuario/xml-security-java/trunk/src/main/java/org/apache: jcp/xml/dsig/internal/dom/ xml/security/stax/impl/processor/input/ xml/security/stax/impl/securityToken/ xml/security/stax/impl/transformer/ xml/security/stax/impl/t...

Author: coheigea
Date: Wed Oct 19 10:04:22 2016
New Revision: 1765568

URL: http://svn.apache.org/viewvc?rev=1765568&view=rev
Log:
More try-with-resources work

Modified:
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMReference.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMSignedInfo.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureInputHandler.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureReferenceVerifyInputProcessor.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/securityToken/SecurityTokenFactoryImpl.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformBase64Decode.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
    santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/util/FullyBufferedOutputStream.java

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMReference.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMReference.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMReference.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/jcp/xml/dsig/internal/dom/DOMReference.java Wed Oct 19 10:04:22 2016
@@ -450,10 +450,8 @@ public final class DOMReference extends
         } else {
             dos = new DigesterOutputStream(md);
         }
-        OutputStream os = null;
         Data data = dereferencedData;
-        try {
-            os = new UnsyncBufferedOutputStream(dos);
+        try (OutputStream os = new UnsyncBufferedOutputStream(dos)) {
             for (int i = 0, size = transforms.size(); i < size; i++) {
                 DOMTransform transform = (DOMTransform)transforms.get(i);
                 if (i < size - 1) {
@@ -555,13 +553,6 @@ public final class DOMReference extends
         } catch (org.apache.xml.security.c14n.CanonicalizationException e) {
             throw new XMLSignatureException(e);
         } finally {
-            if (os != null) {
-                try {
-                    os.close();
-                } catch (IOException e) {
-                    throw new XMLSignatureException(e);
-                }
-            }
             if (dos != null) {
                 try {
                     dos.close();

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=1765568&r1=1765567&r2=1765568&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 Wed Oct 19 10:04:22 2016
@@ -216,42 +216,31 @@ public final class DOMSignedInfo extends
             throw new NullPointerException("context cannot be null");
         }
 
-        OutputStream os = new UnsyncBufferedOutputStream(bos);
-
         DOMSubTreeData subTree = new DOMSubTreeData(localSiElem, true);
-        try {
+        try (OutputStream os = new UnsyncBufferedOutputStream(bos)) {
             ((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);
-            }
-            // Impossible
-        }
+            
+            byte[] signedInfoBytes = bos.toByteArray();
 
-        byte[] signedInfoBytes = bos.toByteArray();
-
-        // this whole block should only be done if logging is enabled
-        if (log.isDebugEnabled()) {
-            log.debug("Canonicalized SignedInfo:");
-            StringBuilder sb = new StringBuilder(signedInfoBytes.length);
-            for (int i = 0; i < signedInfoBytes.length; i++) {
-                sb.append((char)signedInfoBytes[i]);
+            // this whole block should only be done if logging is enabled
+            if (log.isDebugEnabled()) {
+                log.debug("Canonicalized SignedInfo:");
+                StringBuilder sb = new StringBuilder(signedInfoBytes.length);
+                for (int i = 0; i < signedInfoBytes.length; i++) {
+                    sb.append((char)signedInfoBytes[i]);
+                }
+                log.debug(sb.toString());
+                log.debug("Data to be signed/verified:" + Base64.getMimeEncoder().encodeToString(signedInfoBytes));
             }
-            log.debug(sb.toString());
-            log.debug("Data to be signed/verified:" + Base64.getMimeEncoder().encodeToString(signedInfoBytes));
-        }
 
-        this.canonData = new ByteArrayInputStream(signedInfoBytes);
+            this.canonData = new ByteArrayInputStream(signedInfoBytes);
 
-        try {
             os.close();
+        } catch (TransformException te) {
+            throw new XMLSignatureException(te);
         } catch (IOException e) {
             if (log.isDebugEnabled()) {
                 log.debug(e.getMessage(), e);

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureInputHandler.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureInputHandler.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureInputHandler.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureInputHandler.java Wed Oct 19 10:04:22 2016
@@ -41,6 +41,7 @@ import javax.xml.stream.XMLStreamConstan
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.OutputStream;
 import java.security.Key;
 import java.security.NoSuchAlgorithmException;
@@ -149,23 +150,22 @@ public abstract class AbstractSignatureI
 
         Deque<XMLSecEvent> signedInfoDeque = new ArrayDeque<XMLSecEvent>();
 
-        UnsyncByteArrayOutputStream unsynchronizedByteArrayOutputStream = new UnsyncByteArrayOutputStream();
-        Transformer transformer = XMLSecurityUtils.getTransformer(
-                null,
-                unsynchronizedByteArrayOutputStream,
-                null,
-                signatureType.getSignedInfo().getCanonicalizationMethod().getAlgorithm(),
-                XMLSecurityConstants.DIRECTION.IN);
-
-        Iterator<XMLSecEvent> iterator = eventDeque.descendingIterator();
-        //forward to <Signature> Element
-        int i = 0;
-        while (i < index) {
-            iterator.next();
-            i++;
-        }
+        try (UnsyncByteArrayOutputStream unsynchronizedByteArrayOutputStream = new UnsyncByteArrayOutputStream()) {
+            Transformer transformer = XMLSecurityUtils.getTransformer(
+                    null,
+                    unsynchronizedByteArrayOutputStream,
+                    null,
+                    signatureType.getSignedInfo().getCanonicalizationMethod().getAlgorithm(),
+                    XMLSecurityConstants.DIRECTION.IN);
+    
+            Iterator<XMLSecEvent> iterator = eventDeque.descendingIterator();
+            //forward to <Signature> Element
+            int i = 0;
+            while (i < index) {
+                iterator.next();
+                i++;
+            }
 
-        try {
             loop:
             while (iterator.hasNext()) {
                 XMLSecEvent xmlSecEvent = iterator.next();
@@ -194,24 +194,25 @@ public abstract class AbstractSignatureI
 
             transformer.doFinal();
 
-            XMLStreamReader xmlStreamReader = inputProcessorChain.getSecurityContext().
-                    <XMLInputFactory>get(XMLSecurityConstants.XMLINPUTFACTORY).
-                    createXMLStreamReader(new UnsyncByteArrayInputStream(unsynchronizedByteArrayOutputStream.toByteArray()));
-
-            while (xmlStreamReader.hasNext()) {
-                XMLSecEvent xmlSecEvent = XMLSecEventFactory.allocate(xmlStreamReader, null);
-                signedInfoDeque.push(xmlSecEvent);
-                xmlStreamReader.next();
-            }
-
-            @SuppressWarnings("unchecked")
-            final SignedInfoType signedInfoType =
-                    ((JAXBElement<SignedInfoType>) parseStructure(signedInfoDeque, 0, securityProperties)).getValue();
-            signatureType.setSignedInfo(signedInfoType);
-
-            return signedInfoDeque;
-
-        } catch (XMLStreamException e) {
+            try (InputStream is = new UnsyncByteArrayInputStream(unsynchronizedByteArrayOutputStream.toByteArray())) {
+                XMLStreamReader xmlStreamReader = inputProcessorChain.getSecurityContext().
+                        <XMLInputFactory>get(XMLSecurityConstants.XMLINPUTFACTORY).
+                        createXMLStreamReader(is);
+    
+                while (xmlStreamReader.hasNext()) {
+                    XMLSecEvent xmlSecEvent = XMLSecEventFactory.allocate(xmlStreamReader, null);
+                    signedInfoDeque.push(xmlSecEvent);
+                    xmlStreamReader.next();
+                }
+    
+                @SuppressWarnings("unchecked")
+                final SignedInfoType signedInfoType =
+                        ((JAXBElement<SignedInfoType>) parseStructure(signedInfoDeque, 0, securityProperties)).getValue();
+                signatureType.setSignedInfo(signedInfoType);
+    
+                return signedInfoDeque;
+            }
+        } catch (XMLStreamException | IOException e) {
             throw new XMLSecurityException(e);
         }
     }

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureReferenceVerifyInputProcessor.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureReferenceVerifyInputProcessor.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureReferenceVerifyInputProcessor.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/processor/input/AbstractSignatureReferenceVerifyInputProcessor.java Wed Oct 19 10:04:22 2016
@@ -260,12 +260,11 @@ public abstract class AbstractSignatureR
     protected void verifyExternalReference(InputProcessorChain inputProcessorChain, InputStream inputStream,
                                          ReferenceType referenceType) throws XMLSecurityException, XMLStreamException {
 
-        BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
-        try {
+        try (BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
             DigestOutputStream digestOutputStream =
                     createMessageDigestOutputStream(referenceType, inputProcessorChain.getSecurityContext());
             UnsyncBufferedOutputStream bufferedDigestOutputStream =
-                    new UnsyncBufferedOutputStream(digestOutputStream);
+                    new UnsyncBufferedOutputStream(digestOutputStream)) {
 
             if (referenceType.getTransforms() != null) {
                 Transformer transformer =
@@ -279,12 +278,6 @@ public abstract class AbstractSignatureR
             compareDigest(digestOutputStream.getDigestValue(), referenceType);
         } catch (IOException e) {
             throw new XMLSecurityException(e);
-        } finally {
-            try {
-                bufferedInputStream.close();
-            } catch (IOException e) {
-                log.warn("Could not close external resource input stream, ignored.");
-            }
         }
     }
 

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/securityToken/SecurityTokenFactoryImpl.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/securityToken/SecurityTokenFactoryImpl.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/securityToken/SecurityTokenFactoryImpl.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/securityToken/SecurityTokenFactoryImpl.java Wed Oct 19 10:04:22 2016
@@ -30,6 +30,7 @@ import org.apache.xml.security.stax.secu
 import org.apache.xml.security.utils.RFC2253Parser;
 import org.apache.xml.security.utils.UnsyncByteArrayInputStream;
 
+import java.io.IOException;
 import java.io.InputStream;
 import java.security.Key;
 import java.security.PublicKey;
@@ -268,11 +269,10 @@ public class SecurityTokenFactoryImpl ex
      */
     private static X509Certificate getCertificateFromBytes(byte[] data)
             throws XMLSecurityException {
-        InputStream in = new UnsyncByteArrayInputStream(data);
-        try {
+        try (InputStream in = new UnsyncByteArrayInputStream(data)) {
             CertificateFactory factory = CertificateFactory.getInstance("X.509");
             return (X509Certificate) factory.generateCertificate(in);
-        } catch (CertificateException e) {
+        } catch (CertificateException | IOException e) {
             throw new XMLSecurityException(e);
         }
     }

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformBase64Decode.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformBase64Decode.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformBase64Decode.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformBase64Decode.java Wed Oct 19 10:04:22 2016
@@ -112,19 +112,18 @@ public class TransformBase64Decode exten
                                         } catch (IOException e) {
                                             throw new XMLStreamException(e);
                                         }
-                                        XMLEventReaderInputProcessor xmlEventReaderInputProcessor
-                                                = new XMLEventReaderInputProcessor(
-                                                null,
-                                                getXmlInputFactory().createXMLStreamReader(new UnsyncByteArrayInputStream(byteArrayOutputStream.toByteArray()))
-                                        );
 
-                                        try {
+                                        try (InputStream is = new UnsyncByteArrayInputStream(byteArrayOutputStream.toByteArray())) {
+                                            XMLEventReaderInputProcessor xmlEventReaderInputProcessor
+                                                = new XMLEventReaderInputProcessor(null,
+                                                                                   getXmlInputFactory().createXMLStreamReader(is)
+                                                );
                                             XMLSecEvent xmlSecEvent;
                                             do {
                                                 xmlSecEvent = xmlEventReaderInputProcessor.processNextEvent(null);
                                                 getTransformer().transform(xmlSecEvent);
                                             } while (xmlSecEvent.getEventType() != XMLStreamConstants.END_DOCUMENT);
-                                        } catch (XMLSecurityException e) {
+                                        } catch (XMLSecurityException | IOException e) {
                                             throw new XMLStreamException(e);
                                         }
                                         getTransformer().doFinal();
@@ -158,8 +157,12 @@ public class TransformBase64Decode exten
                                         } catch (IOException e) {
                                             throw new XMLStreamException(e);
                                         }
-                                        getTransformer().transform(new UnsyncByteArrayInputStream(byteArrayOutputStream.toByteArray()));
-                                        getTransformer().doFinal();
+                                        try (InputStream is = new UnsyncByteArrayInputStream(byteArrayOutputStream.toByteArray())) {
+                                            getTransformer().transform(is);
+                                            getTransformer().doFinal();
+                                        } catch (IOException ex) {
+                                            throw new XMLStreamException(ex);
+                                        }
                                     }
                                 };
                                 break;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/TransformIdentity.java Wed Oct 19 10:04:22 2016
@@ -160,8 +160,12 @@ public class TransformIdentity implement
                             @Override
                             public void doFinal() throws XMLStreamException {
                                 xmlEventWriter.close();
-                                getTransformer().transform(new UnsyncByteArrayInputStream(baos.toByteArray()));
-                                getTransformer().doFinal();
+                                try (InputStream is = new UnsyncByteArrayInputStream(baos.toByteArray())) {
+                                    getTransformer().transform(is);
+                                    getTransformer().doFinal();
+                                } catch (IOException ex) {
+                                    throw new XMLStreamException(ex);
+                                }
                             }
                         };
                         break;

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/transformer/canonicalizer/CanonicalizerBase.java Wed Oct 19 10:04:22 2016
@@ -391,8 +391,12 @@ public abstract class CanonicalizerBase
     public void doFinal() throws XMLStreamException {
         if (getTransformer() != null) {
             UnsyncByteArrayOutputStream baos = (UnsyncByteArrayOutputStream)getOutputStream();
-            getTransformer().transform(new UnsyncByteArrayInputStream(baos.toByteArray()));
-            getTransformer().doFinal();
+            try (InputStream is = new UnsyncByteArrayInputStream(baos.toByteArray())) {
+                getTransformer().transform(is);
+                getTransformer().doFinal();
+            } catch (IOException ex) {
+                throw new XMLStreamException(ex);
+            }
         }
     }
 

Modified: santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/util/FullyBufferedOutputStream.java
URL: http://svn.apache.org/viewvc/santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/util/FullyBufferedOutputStream.java?rev=1765568&r1=1765567&r2=1765568&view=diff
==============================================================================
--- santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/util/FullyBufferedOutputStream.java (original)
+++ santuario/xml-security-java/trunk/src/main/java/org/apache/xml/security/stax/impl/util/FullyBufferedOutputStream.java Wed Oct 19 10:04:22 2016
@@ -51,6 +51,7 @@ public class FullyBufferedOutputStream e
     public void close() throws IOException {
         buf.writeTo(out);
         out.close();
+        buf.close();
     }
 
     @Override