# HG changeset patch # User weijun # Date 1304230952 -28800 # Node ID 6f715a596a2e11a73613b348b493700a26d453e8 # Parent 7ce475045bf03c05dc7c59596ccb8aa5e817bc9a 7040916: DynamicKeyTab test fails on Windows Reviewed-by: xuelei diff -r 7ce475045bf0 -r 6f715a596a2e jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java --- a/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java Sat Apr 30 16:55:46 2011 -0700 +++ b/jdk/src/share/classes/sun/security/krb5/internal/ktab/KeyTab.java Sun May 01 14:22:32 2011 +0800 @@ -92,10 +92,10 @@ tabName = filename; try { lastModified = new File(tabName).lastModified(); - KeyTabInputStream kis = - new KeyTabInputStream(new FileInputStream(filename)); - load(kis); - kis.close(); + try (KeyTabInputStream kis = + new KeyTabInputStream(new FileInputStream(filename))) { + load(kis); + } } catch (FileNotFoundException e) { entries.clear(); isMissing = true; @@ -439,10 +439,10 @@ public synchronized static KeyTab create(String name) throws IOException, RealmException { - KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(name)); - kos.writeVersion(KRB5_KT_VNO); - kos.close(); + try (KeyTabOutputStream kos = + new KeyTabOutputStream(new FileOutputStream(name))) { + kos.writeVersion(KRB5_KT_VNO); + } return new KeyTab(name); } @@ -450,13 +450,13 @@ * Saves the file at the directory. */ public synchronized void save() throws IOException { - KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(tabName)); - kos.writeVersion(kt_vno); - for (int i = 0; i < entries.size(); i++) { - kos.writeEntry(entries.elementAt(i)); + try (KeyTabOutputStream kos = + new KeyTabOutputStream(new FileOutputStream(tabName))) { + kos.writeVersion(kt_vno); + for (int i = 0; i < entries.size(); i++) { + kos.writeEntry(entries.elementAt(i)); + } } - kos.close(); } /** @@ -519,9 +519,9 @@ * @exception IOException. */ public synchronized void createVersion(File file) throws IOException { - KeyTabOutputStream kos = - new KeyTabOutputStream(new FileOutputStream(file)); - kos.write16(KRB5_KT_VNO); - kos.close(); + try (KeyTabOutputStream kos = + new KeyTabOutputStream(new FileOutputStream(file))) { + kos.write16(KRB5_KT_VNO); + } } } diff -r 7ce475045bf0 -r 6f715a596a2e jdk/test/sun/security/krb5/auto/DynamicKeytab.java --- a/jdk/test/sun/security/krb5/auto/DynamicKeytab.java Sat Apr 30 16:55:46 2011 -0700 +++ b/jdk/test/sun/security/krb5/auto/DynamicKeytab.java Sun May 01 14:22:32 2011 +0800 @@ -30,6 +30,8 @@ import java.io.File; import java.io.FileOutputStream; +import java.nio.file.Files; +import java.nio.file.Paths; import org.ietf.jgss.GSSException; import sun.security.jgss.GSSUtil; import sun.security.krb5.KrbException; @@ -47,8 +49,7 @@ OneKDC k = new OneKDC(null); k.writeJAASConf(); - new File(OneKDC.KTAB).delete(); - + Files.delete(Paths.get(OneKDC.KTAB)); // Starts with no keytab c = Context.fromJAAS("client"); @@ -79,11 +80,13 @@ connect(); // Test 5: invalid keytab file, should ignore - new FileOutputStream(OneKDC.KTAB).write("BADBADBAD".getBytes()); + try (FileOutputStream fos = new FileOutputStream(OneKDC.KTAB)) { + fos.write("BADBADBAD".getBytes()); + } connect(); // Test 6: delete keytab file, identical to revoke all - new File(OneKDC.KTAB).delete(); + Files.delete(Paths.get(OneKDC.KTAB)); try { connect(); throw new Exception("Should not success");