From 58f2b80854769160ffdcdceaee3b16247fa2a45a Mon Sep 17 00:00:00 2001
From: Gaetan Boismal <gaetan.boismal@forgerock.com>
Date: Thu, 23 Jun 2016 12:30:52 +0000
Subject: [PATCH] OPENDJ-2941 Code cleanup

---
 opendj-config/src/main/java/org/forgerock/opendj/config/ConfigurationFramework.java |   66 ++++++++++++++------------------
 1 files changed, 29 insertions(+), 37 deletions(-)

diff --git a/opendj-config/src/main/java/org/forgerock/opendj/config/ConfigurationFramework.java b/opendj-config/src/main/java/org/forgerock/opendj/config/ConfigurationFramework.java
index 1c0076a..779a6d1 100644
--- a/opendj-config/src/main/java/org/forgerock/opendj/config/ConfigurationFramework.java
+++ b/opendj-config/src/main/java/org/forgerock/opendj/config/ConfigurationFramework.java
@@ -20,13 +20,11 @@
 import static com.forgerock.opendj.util.StaticUtils.*;
 
 import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileFilter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.InputStreamReader;
-import java.io.PrintStream;
 import java.lang.reflect.Method;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -144,7 +142,7 @@
     }
 
     /**
-     * Prints out all information about extensions.
+     * Returns a string representing all information about extensions.
      *
      * @param installPath
      *            The path where application binaries are located.
@@ -154,8 +152,8 @@
      * @return A string representing all information about extensions;
      *         <code>null</code> if there is no information available.
      */
-    public static String printExtensionInformation(final String installPath, final String instancePath) {
-        final File extensionsPath = buildExtensionPath(installPath);
+    public static String getPrintableExtensionInformation(final String installPath, final String instancePath) {
+        final File extensionsPath = buildExtensionDir(installPath);
 
         final List<File> extensions = new ArrayList<>();
 
@@ -163,7 +161,7 @@
             extensions.addAll(listFiles(extensionsPath));
         }
 
-        File instanceExtensionsPath = buildExtensionPath(instancePath);
+        File instanceExtensionsPath = buildExtensionDir(instancePath);
         if (!extensionsPath.getAbsolutePath().equals(instanceExtensionsPath.getAbsolutePath())) {
             extensions.addAll(listFiles(instanceExtensionsPath));
         }
@@ -172,33 +170,36 @@
             return null;
         }
 
-        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        final PrintStream ps = new PrintStream(baos);
-        // prints:
-        // --
-        // Name Build number Revision number
-        ps.printf("--%s           %-20s %-20s %-20s%s", EOL, "Name", "Build number",
-                  "Revision number", EOL);
+        final StringBuilder sb = new StringBuilder();
+        printExtensionDetailsHeader(sb);
 
         for (final File extension : extensions) {
-            printExtensionDetails(ps, extension);
+            printExtensionDetails(sb, extension);
         }
 
-        return baos.toString();
+        return sb.toString();
     }
 
-    private static File buildExtensionPath(String directory)  {
-        File libDir = new File(directory, LIB_DIR);
+    private static void printExtensionDetailsHeader(final StringBuilder sb) {
+        // Leave space at start of the line for "Extension:"
+        sb.append("--")
+            .append(EOL)
+            .append("           Name                 Build number         Revision number")
+            .append(EOL);
+    }
+
+    private static File buildExtensionDir(String directory)  {
+        final File libDir = new File(directory, LIB_DIR);
+        final File extensionDir = new File(libDir, EXTENSIONS_DIR);
         try {
-            return new File(libDir, EXTENSIONS_DIR).getCanonicalFile();
+            return extensionDir.getCanonicalFile();
         } catch (Exception e) {
-            return new File(libDir, EXTENSIONS_DIR);
+            return extensionDir;
         }
     }
 
     private static List<File> listFiles(File path) {
         if (path.exists() && path.isDirectory()) {
-
             return Arrays.asList(path.listFiles(new FileFilter() {
                 @Override
                 public boolean accept(File pathname) {
@@ -210,7 +211,7 @@
         return Collections.emptyList();
     }
 
-    private static void printExtensionDetails(PrintStream ps, File extension) {
+    private static void printExtensionDetails(final StringBuilder sb, final File extension) {
         // retrieve MANIFEST entry and display name, build number and revision number
         try (JarFile jarFile = new JarFile(extension)) {
             JarEntry entry = jarFile.getJarEntry(MANIFEST_RELATIVE_PATH);
@@ -219,19 +220,12 @@
             }
 
             String[] information = getBuildInformation(jarFile);
-
-            ps.append("Extension: ");
-            boolean addBlank = false;
-            for (String name : information) {
-                if (addBlank) {
-                    ps.append(" ");
-                } else {
-                    addBlank = true;
-                }
-                ps.printf("%-20s", name);
+            sb.append("Extension:");
+            for (final String name : information) {
+                sb.append(" ").append(String.format("%-20s", name));
             }
-            ps.append(EOL);
-        } catch (Exception e) {
+            sb.append(EOL);
+        } catch (final IOException ignored) {
             // ignore extra information for this extension
         }
     }
@@ -252,9 +246,7 @@
     private static String[] getBuildInformation(final JarFile extension) throws IOException {
         final String[] result = new String[3];
 
-        // retrieve MANIFEST entry and display name, version and revision
         final Manifest manifest = extension.getManifest();
-
         if (manifest != null) {
             final Attributes attributes = manifest.getMainAttributes();
 
@@ -495,8 +487,8 @@
         // configuration definition classes in that they contain.
         // First load the extension from the install directory, then
         // from the instance directory.
-        File installExtensionsPath  = buildExtensionPath(installPath);
-        File instanceExtensionsPath = buildExtensionPath(instancePath);
+        File installExtensionsPath  = buildExtensionDir(installPath);
+        File instanceExtensionsPath = buildExtensionDir(instancePath);
 
         initializeAllExtensions(installExtensionsPath);
 

--
Gitblit v1.10.0