From 310df200f78f7d98cc52e4ab97d8a5feb744fa52 Mon Sep 17 00:00:00 2001
From: Jean-Noël Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Thu, 28 Apr 2016 09:04:35 +0000
Subject: [PATCH] UCDetector and AutoRefactor code cleanup

---
 opendj-server-legacy/src/main/java/org/opends/server/util/BackupManager.java |  119 +++++++++++++++--------------------------------------------
 1 files changed, 30 insertions(+), 89 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/BackupManager.java b/opendj-server-legacy/src/main/java/org/opends/server/util/BackupManager.java
index 890ca68..86d9ac0 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/BackupManager.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/BackupManager.java
@@ -82,9 +82,7 @@
 {
   private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
 
-  /**
-   * The common prefix for archive files.
-   */
+  /** The common prefix for archive files. */
   private static final String BACKUP_BASE_FILENAME = "backup-";
 
   /**
@@ -99,7 +97,6 @@
    */
   private static final String PROPERTY_LAST_LOGFILE_SIZE = "last_logfile_size";
 
-
   /**
    * The name of the entry in an incremental backup archive file
    * containing a list of log files that are unchanged since the
@@ -113,10 +110,7 @@
    */
   private static final String ZIPENTRY_EMPTY_PLACEHOLDER = "empty.placeholder";
 
-
-  /**
-   * The backend ID.
-   */
+  /** The backend ID. */
   private final String backendID;
 
   /**
@@ -258,13 +252,11 @@
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), message, e);
       }
     }
-
   }
 
   /** Represents the cryptographic engine with no hash used for a backup. */
   private static final class NoHashCryptoEngine extends CryptoEngine
   {
-
     NoHashCryptoEngine(boolean shouldEncrypt)
     {
       super(shouldEncrypt);
@@ -294,12 +286,9 @@
       // check never fails because bytes are always null
       return null;
     }
-
   }
 
-  /**
-   * Represents the cryptographic engine with signed hash.
-   */
+  /** Represents the cryptographic engine with signed hash. */
   private static final class MacCryptoEngine extends CryptoEngine
   {
     private Mac mac;
@@ -328,7 +317,7 @@
     private MacCryptoEngine(BackupInfo backupInfo) throws DirectoryException
     {
       super(backupInfo.isEncrypted());
-      HashMap<String,String> backupProperties = backupInfo.getBackupProperties();
+      Map<String, String> backupProperties = backupInfo.getBackupProperties();
       String macKeyID = backupProperties.get(BACKUP_PROPERTY_MAC_KEY_ID);
       retrieveMacEngine(macKeyID);
     }
@@ -346,14 +335,12 @@
       }
     }
 
-    /** {@inheritDoc} */
     @Override
     void updateHashWith(String s)
     {
       mac.update(getBytes(s));
     }
 
-    /** {@inheritDoc} */
     @Override
     void updateHashWith(byte[] buffer, int offset, int len)
     {
@@ -383,7 +370,6 @@
     {
       return "MacCryptoEngine [mac=" + mac + "]";
     }
-
   }
 
   /** Represents the cryptographic engine with unsigned hash used for a backup. */
@@ -404,7 +390,7 @@
     private DigestCryptoEngine(BackupInfo backupInfo) throws DirectoryException
     {
       super(backupInfo.isEncrypted());
-      HashMap<String, String> backupProperties = backupInfo.getBackupProperties();
+      Map<String, String> backupProperties = backupInfo.getBackupProperties();
       String digestAlgorithm = backupProperties.get(BACKUP_PROPERTY_DIGEST_ALGORITHM);
       digest = retrieveMessageDigest(digestAlgorithm);
     }
@@ -423,28 +409,24 @@
       }
     }
 
-    /** {@inheritDoc} */
     @Override
     public void updateHashWith(String s)
     {
       digest.update(getBytes(s));
     }
 
-    /** {@inheritDoc} */
     @Override
     public void updateHashWith(byte[] buffer, int offset, int len)
     {
       digest.update(buffer, offset, len);
     }
 
-    /** {@inheritDoc} */
     @Override
     public byte[] generateBytes()
     {
       return digest.digest();
     }
 
-    /** {@inheritDoc} */
     @Override
     LocalizableMessage getErrorMessageForCheck(String backupID)
     {
@@ -456,12 +438,9 @@
     {
       return "DigestCryptoEngine [digest=" + digest + "]";
     }
-
   }
 
-  /**
-   * Contains all parameters for creation of a new backup.
-   */
+  /** Contains all parameters for creation of a new backup. */
   private static final class NewBackupParams
   {
     final String backupID;
@@ -520,12 +499,10 @@
     {
       return "BackupCreationParams [backupID=" + backupID + ", backupDir=" + backupDir.getPath() + "]";
     }
-
   }
 
   /** Represents a new backup archive. */
   private static final class NewBackupArchive {
-
     private final String archiveFilename;
 
     private String latestFileName;
@@ -545,7 +522,7 @@
       dependencies = new HashSet<>();
       if (backupParams.isIncremental)
       {
-        HashMap<String,String> properties = backupParams.baseBackupInfo.getBackupProperties();
+        Map<String, String> properties = backupParams.baseBackupInfo.getBackupProperties();
         latestFileName = properties.get(PROPERTY_LAST_LOGFILE_NAME);
         latestFileSize = Long.parseLong(properties.get(PROPERTY_LAST_LOGFILE_SIZE));
       }
@@ -613,12 +590,10 @@
       return "NewArchive [archive file=" + archiveFilename + ", latestFileName=" + latestFileName
           + ", backendID=" + backendID + "]";
     }
-
   }
 
   /** Represents an existing backup archive. */
   private static final class ExistingBackupArchive {
-
     private final String backupID;
     private final BackupDirectory backupDir;
     private final BackupInfo backupInfo;
@@ -700,12 +675,10 @@
 
       return archiveFile.delete();
     }
-
   }
 
   /** Represents a writer of a backup archive. */
   private static final class BackupArchiveWriter implements Closeable {
-
     private final ZipOutputStream zipOutputStream;
     private final NewBackupArchive archive;
     private final CryptoEngine cryptoEngine;
@@ -745,10 +718,8 @@
 
       cryptoMethod.updateHashWith(relativePath);
 
-      InputStream inputStream = null;
       long totalBytesRead = 0;
-      try {
-        inputStream = new FileInputStream(file.toFile());
+      try (InputStream inputStream = new FileInputStream(file.toFile())) {
         byte[] buffer = new byte[8192];
         int bytesRead = inputStream.read(buffer);
         while (bytesRead > 0 && !backupConfig.isCancelled())
@@ -759,9 +730,6 @@
           bytesRead = inputStream.read(buffer);
         }
       }
-      finally {
-        StaticUtils.close(inputStream);
-      }
 
       zipOutputStream.closeEntry();
       logger.info(NOTE_BACKUP_ARCHIVED_FILE, zipEntry.getName());
@@ -824,7 +792,6 @@
      * <p>
      * The unchanged files names are listed in the "unchanged.txt" file, which
      * is put in the archive.
-     *
      */
     void writeUnchangedFiles(Path rootDirectory, ListIterator<Path> files, BackupConfig backupConfig)
         throws DirectoryException
@@ -869,9 +836,7 @@
       archive.addBaseBackupAsDependency();
     }
 
-    /**
-     * Writes the new files in the archive.
-     */
+    /** Writes the new files in the archive. */
     void writeChangedFiles(Path rootDirectory, ListIterator<Path> files, BackupConfig backupConfig)
         throws DirectoryException
     {
@@ -957,12 +922,10 @@
       return "BackupArchiveWriter [archive file=" + archive.getArchiveFilename() + ", backendId="
           + archive.getBackendID() + "]";
     }
-
   }
 
   /** Represents a reader of a backup archive. */
   private static final class BackupArchiveReader {
-
     private final CryptoEngine cryptoEngine;
     private final File archiveFile;
     private final String identifier;
@@ -998,10 +961,8 @@
     Set<String> readUnchangedDependentFiles() throws DirectoryException
     {
       Set<String> hashSet = new HashSet<>();
-      ZipInputStream zipStream = null;
-      try
+      try (ZipInputStream zipStream = openZipStream())
       {
-        zipStream = openZipStream();
 
         // Iterate through the entries in the zip file.
         ZipEntry zipEntry = zipStream.getNextEntry();
@@ -1023,9 +984,6 @@
         throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), ERR_BACKUP_CANNOT_RESTORE.get(
             identifier, stackTraceToSingleLineString(e)), e);
       }
-      finally {
-        StaticUtils.close(zipStream);
-      }
     }
 
     /**
@@ -1046,7 +1004,7 @@
     {
       try
       {
-        restoreArchive0(restoreDir, filesToRestore, restoreConfig, backupable);
+        restoreArchive0(restoreDir, filesToRestore, restoreConfig);
       }
       catch (IOException e)
       {
@@ -1060,13 +1018,11 @@
       cryptoEngine.check(hash, backupInfo.getBackupID());
     }
 
-    private void restoreArchive0(Path restoreDir, Set<String> filesToRestore, RestoreConfig restoreConfig,
-        Backupable backupable) throws DirectoryException, IOException {
-
-      ZipInputStream zipStream = null;
-      try {
-          zipStream = openZipStream();
-
+    private void restoreArchive0(Path restoreDir, Set<String> filesToRestore, RestoreConfig restoreConfig)
+        throws DirectoryException, IOException
+    {
+      try (ZipInputStream zipStream = openZipStream())
+      {
           ZipEntry zipEntry = zipStream.getNextEntry();
           while (zipEntry != null && !restoreConfig.isCancelled())
           {
@@ -1093,9 +1049,6 @@
             zipEntry = zipStream.getNextEntry();
           }
       }
-      finally {
-        StaticUtils.close(zipStream);
-      }
     }
 
     /**
@@ -1127,9 +1080,7 @@
       return Pair.of(false, null);
     }
 
-    /**
-     * Restores a zip entry virtually (no actual write on disk).
-     */
+    /** Restores a zip entry virtually (no actual write on disk). */
     private void restoreZipEntryVirtual(String zipEntryName, ZipInputStream zipStream, RestoreConfig restoreConfig)
             throws FileNotFoundException, IOException
     {
@@ -1141,27 +1092,19 @@
       restoreFile(zipStream, null, restoreConfig);
     }
 
-    /**
-     * Restores a zip entry with actual write on disk.
-     */
+    /** Restores a zip entry with actual write on disk. */
     private void restoreZipEntry(String zipEntryName, ZipInputStream zipStream, Path restoreDir,
         RestoreConfig restoreConfig) throws IOException, DirectoryException
     {
-      OutputStream outputStream = null;
-      long totalBytesRead = 0;
-      try
+      Path fileToRestore = restoreDir.resolve(zipEntryName);
+      ensureFileCanBeRestored(fileToRestore);
+
+      try (OutputStream outputStream = new FileOutputStream(fileToRestore.toFile()))
       {
-        Path fileToRestore = restoreDir.resolve(zipEntryName);
-        ensureFileCanBeRestored(fileToRestore);
-        outputStream = new FileOutputStream(fileToRestore.toFile());
         cryptoEngine.updateHashWith(zipEntryName);
-        totalBytesRead = restoreFile(zipStream, outputStream, restoreConfig);
+        long totalBytesRead = restoreFile(zipStream, outputStream, restoreConfig);
         logger.info(NOTE_BACKUP_RESTORED_FILE, zipEntryName, totalBytesRead);
       }
-      finally
-      {
-        StaticUtils.close(outputStream);
-      }
     }
 
     private void ensureFileCanBeRestored(Path fileToRestore) throws DirectoryException
@@ -1265,13 +1208,10 @@
     final CryptoEngine cryptoEngine = CryptoEngine.forCreation(backupConfig, backupParams);
     final NewBackupArchive newArchive = new NewBackupArchive(backendID, backupParams, cryptoEngine);
 
-    BackupArchiveWriter archiveWriter = null;
-    try
+    final ListIterator<Path> files = backupable.getFilesToBackup();
+    final Path rootDirectory = backupable.getDirectory().toPath();
+    try (BackupArchiveWriter archiveWriter = new BackupArchiveWriter(newArchive))
     {
-      final ListIterator<Path> files = backupable.getFilesToBackup();
-      final Path rootDirectory = backupable.getDirectory().toPath();
-      archiveWriter = new BackupArchiveWriter(newArchive);
-
       if (files.hasNext())
       {
         if (backupParams.isIncremental) {
@@ -1283,9 +1223,11 @@
         archiveWriter.writeEmptyPlaceHolder();
       }
     }
-    finally
+    catch (IOException e)
     {
-      closeArchiveWriter(archiveWriter, newArchive.getArchiveFilename(), backupParams.backupDir.getPath());
+      logger.traceException(e);
+      throw new DirectoryException(DirectoryServer.getServerErrorResultCode(), ERR_BACKUP_CANNOT_CLOSE_ZIP_STREAM.get(
+          newArchive.getArchiveFilename(), backupParams.backupDir.getPath(), stackTraceToSingleLineString(e)), e);
     }
 
     newArchive.updateBackupDirectory();
@@ -1617,5 +1559,4 @@
     }
     return highestNumber;
   }
-
 }

--
Gitblit v1.10.0