Author: scottbw
Date: Sun Apr 28 17:33:24 2013
New Revision: 1476804

URL: http://svn.apache.org/r1476804
Log:
Partial fix for WOOKIE-407, closing all file streams to try to release any file 
locks - thanks to Pushpalanka Jayawardhana for the patch

Modified:
    
wookie/trunk/digsig-client/java/src/org/apache/wookie/digsig/client/model/SignWidgets.java

Modified: 
wookie/trunk/digsig-client/java/src/org/apache/wookie/digsig/client/model/SignWidgets.java
URL: 
http://svn.apache.org/viewvc/wookie/trunk/digsig-client/java/src/org/apache/wookie/digsig/client/model/SignWidgets.java?rev=1476804&r1=1476803&r2=1476804&view=diff
==============================================================================
--- 
wookie/trunk/digsig-client/java/src/org/apache/wookie/digsig/client/model/SignWidgets.java
 (original)
+++ 
wookie/trunk/digsig-client/java/src/org/apache/wookie/digsig/client/model/SignWidgets.java
 Sun Apr 28 17:33:24 2013
@@ -13,34 +13,25 @@
  */
 package org.apache.wookie.digsig.client.model;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.PrivateKey;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.security.cert.X509Certificate;
-import java.util.Random;
-
-import javax.xml.parsers.ParserConfigurationException;
-
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.apache.xml.security.exceptions.XMLSecurityException;
-import org.apache.xml.security.signature.ObjectContainer;
-import org.apache.xml.security.signature.SignatureProperties;
-import org.apache.xml.security.signature.SignatureProperty;
-import org.apache.xml.security.signature.XMLSignature;
-import org.apache.xml.security.signature.XMLSignatureException;
+import org.apache.xml.security.signature.*;
 import org.apache.xml.security.transforms.Transforms;
 import org.apache.xml.security.utils.XMLUtils;
 import org.apache.xml.security.utils.resolver.ResourceResolver;
 import org.w3c.dom.Element;
 
+import javax.xml.parsers.ParserConfigurationException;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.security.*;
+import java.security.cert.CertificateException;
+import java.security.cert.X509Certificate;
+import java.util.Random;
+
 /** @author Pushpalanka */
 
 /**
@@ -125,6 +116,7 @@ public class SignWidgets {
                                //get the private key from keystore
                                KeyStore ks = 
KeyStore.getInstance(keyStoreType);
                                FileInputStream fis = new 
FileInputStream(keyStoreFile);
+                try{
                                ks.load(fis, keyStorePass.toCharArray());
                                PrivateKey privateKey = (PrivateKey) 
ks.getKey(privateKeyAlias,
                                                privateKeyPass.toCharArray());
@@ -140,7 +132,7 @@ public class SignWidgets {
                                XMLSignature sig = new XMLSignature(doc, 
BaseURI,
                                                
XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA256,
                                                
Transforms.TRANSFORM_C14N11_OMIT_COMMENTS);
-                               
+
                                sig.setId(role);
 
                                doc.appendChild(sig.getElement());
@@ -201,10 +193,8 @@ public class SignWidgets {
                                                {
                                                                X509Certificate 
cert = (X509Certificate) ks
                                                                                
.getCertificate(certificateAlias);
-                                                               
if(cert.equals(null)){
-                                                                               
throw new NullPointerException();
-                                                               }
-                                                               
sig.addKeyInfo(cert);
+
+                                sig.addKeyInfo(cert);
                                                                
sig.addKeyInfo(cert.getPublicKey());
 
                                                                
System.out.println("Start signing");
@@ -214,10 +204,19 @@ public class SignWidgets {
 
                                                FileOutputStream f = new 
FileOutputStream(signatureFile);
 
-                                               XMLUtils.outputDOM(doc, f);
-                                               f.close();
+                                               try{
+                            XMLUtils.outputDOM(doc, f);
+                        }
+                                               finally{
+                            f.close();
+                        }
                                                System.out.println("Wrote 
signature to " + BaseURI);
                                }
+                }
+                finally{
+                    fis.close();
+                }
+
                }
 
                /**
@@ -263,14 +262,18 @@ public class SignWidgets {
                                File sourceOfFiles = new File(pathToWidget);
                                ZipArchiveOutputStream out = new 
ZipArchiveOutputStream(new File(
                                                sourceOfFiles.getAbsolutePath() 
+ File.separator + name + ".wgt"));
-                               out.setEncoding("UTF-8");
-                               for(File aFile : sourceOfFiles.listFiles()){
+                try{
+                    out.setEncoding("UTF-8");
+                                   for(File aFile : sourceOfFiles.listFiles()){
                                                
if(!aFile.getName().endsWith(".wgt")){
                                                                pack(aFile, 
out, "");
                                                }
                                }
-                               out.flush();
-                               out.close();
+                }
+                finally{
+                                   out.flush();
+                                   out.close();
+                }
                }
 
                /**
@@ -301,10 +304,16 @@ public class SignWidgets {
                                                                byte[] buf = 
new byte[1024];
                                                                int len;
                                                                FileInputStream 
in = new FileInputStream(file);
-                                                               while((len = 
in.read(buf)) > 0){
+                                try{
+                                                                   while((len 
= in.read(buf)) > 0){
                                                                                
out.write(buf, 0, len);
                                                                }
+                                }finally{
+                                      in.close();
+                                }
                                                                
out.closeArchiveEntry();
+                                out.close();
+
                                                }
                                }
                }


Reply via email to