From 2e08d2c0e9bede644be993ddaa28157c9f156c10 Mon Sep 17 00:00:00 2001
From: Violette Roche-Montane <violette.roche-montane@forgerock.com>
Date: Tue, 07 May 2013 13:50:59 +0000
Subject: [PATCH] svn merge https://svn.forgerock.org/opendj/trunk/opends@8851 https://svn.forgerock.org/opendj/branches/native-packaging@8851 .

---
 opends/src/quicksetup/org/opends/quicksetup/util/Utils.java |  308 ++++-----------------------------------------------
 1 files changed, 25 insertions(+), 283 deletions(-)

diff --git a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
index a28e6e7..2228310 100644
--- a/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
+++ b/opends/src/quicksetup/org/opends/quicksetup/util/Utils.java
@@ -23,7 +23,7 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
- *      Portions Copyright 2011-2012 ForgeRock AS
+ *      Portions Copyright 2011-2013 ForgeRock AS
  */
 package org.opends.quicksetup.util;
 
@@ -111,27 +111,6 @@
   public static String JNLP_SERVICE_NAME = "javax.jnlp.DownloadService";
 
   /**
-   * Enumeration that specify if the operation applies to the install directory
-   * only, to the instance directory only, or both.
-   */
-  public static enum  Dir {
-    /**
-     * all directories.
-     */
-    ALL,
-
-    /**
-     * The install directory.
-     */
-    INSTALL,
-
-    /***
-     * The instance directory.
-     */
-    INSTANCE;
-  }
-
-  /**
    * Returns <CODE>true</CODE> if the provided port is free and we can use it,
    * <CODE>false</CODE> otherwise.
    * @param port the port we are analyzing.
@@ -209,7 +188,7 @@
       boolean errorDetected = false;
       while (null != (line = reader.readLine())) {
         LOG.log(Level.INFO, "The output: "+line);
-        if (line.indexOf("ERROR:  The detected Java version") != -1)
+        if (line.contains("ERROR:  The detected Java version"))
         {
           if (Utils.isWindows())
           {
@@ -309,8 +288,7 @@
          * Do a best effort to avoid having a relative representation (for
          * instance to avoid having ../../../).
          */
-        File canonical = f.getCanonicalFile();
-        f = canonical;
+        f = f.getCanonicalFile();
       }
       catch (IOException ioe)
       {
@@ -399,13 +377,10 @@
   {
     boolean parentExists = false;
     File f = new File(path);
-    if (f != null)
+    File parentFile = f.getParentFile();
+    if (parentFile != null)
     {
-      File parentFile = f.getParentFile();
-      if (parentFile != null)
-      {
-        parentExists = parentFile.isDirectory();
-      }
+      parentExists = parentFile.isDirectory();
     }
     return parentExists;
   }
@@ -419,13 +394,8 @@
    */
   public static boolean fileExists(String path)
   {
-    boolean isFile = false;
     File f = new File(path);
-    if (f != null)
-    {
-      isFile = f.isFile();
-    }
-    return isFile;
+    return f.isFile();
   }
 
   /**
@@ -438,14 +408,9 @@
   public static boolean directoryExistsAndIsNotEmpty(String path)
   {
     boolean directoryExistsAndIsNotEmpty = false;
-    boolean isDirectory = false;
 
     File f = new File(path);
-    if (f != null)
-    {
-      isDirectory = f.isDirectory();
-    }
-    if (isDirectory)
+    if (f.isDirectory())
     {
       String[] ch = f.list();
 
@@ -456,33 +421,6 @@
   }
 
   /**
-   * Returns <CODE>true</CODE> if the the provided path is a directory, exists
-   * and is empty <CODE>false</CODE> otherwise.
-   * @param path the path that we are analyzing.
-   * @return <CODE>true</CODE> if the the provided path is a directory, exists
-   * and is empty <CODE>false</CODE> otherwise.
-   */
-  public static boolean directoryExistsAndIsEmpty(String path)
-  {
-    boolean directoryExistsAndIsEmpty = false;
-    boolean isDirectory = false;
-
-    File f = new File(path);
-    if (f != null)
-    {
-      isDirectory = f.isDirectory();
-    }
-    if (isDirectory)
-    {
-      String[] ch = f.list();
-
-      directoryExistsAndIsEmpty = (ch == null) || (ch.length == 0);
-    }
-
-    return directoryExistsAndIsEmpty;
-  }
-
-  /**
    * Returns <CODE>true</CODE> if the the provided string is a DN and
    * <CODE>false</CODE> otherwise.
    * @param dn the String we are analyzing.
@@ -537,35 +475,14 @@
       LdapName name1 = new LdapName(dn1);
       LdapName name2 = new LdapName(dn2);
       areDnsEqual = name1.equals(name2);
-    } catch (Exception ex)
-    {
+    } catch (Exception ex) {
+      // do nothing
     }
 
     return areDnsEqual;
   }
 
   /**
-   * Creates the parent path for the provided path.
-   * @param path the path.
-   * @return <CODE>true</CODE> if the parent path was created or already existed
-   * and <CODE>false</CODE> otherwise.
-   */
-  public static boolean createParentPath(String path)
-  {
-    boolean parentPathExists = true;
-    if (!parentDirectoryExists(path))
-    {
-      File f = new File(path);
-      if (f != null)
-      {
-        File parentFile = f.getParentFile();
-        parentPathExists = parentFile.mkdirs();
-      }
-    }
-    return parentPathExists;
-  }
-
-  /**
    * Creates the parent directory if it does not already exist.
    * @param f File for which parentage will be insured
    * @return boolean indicating whether or not the input <code>f</code>
@@ -597,13 +514,7 @@
     } else
     {
       File parentFile = file.getParentFile();
-      if (parentFile != null)
-      {
-        canWrite = parentFile.canWrite();
-      } else
-      {
-        canWrite = false;
-      }
+      canWrite = parentFile != null && parentFile.canWrite();
     }
     return canWrite;
   }
@@ -646,19 +557,6 @@
    * @param is the InputStream with the contents of the file.
    * @throws IOException if something goes wrong.
    */
-  public static void createFile(String path, InputStream is)
-          throws IOException
-  {
-    createFile(new File(path), is);
-  }
-
-  /**
-   * Creates a file on the specified path with the contents of the provided
-   * stream.
-   * @param path the path where the file will be created.
-   * @param is the InputStream with the contents of the file.
-   * @throws IOException if something goes wrong.
-   */
   public static void createFile(File path, InputStream is) throws IOException
   {
     FileOutputStream out;
@@ -813,7 +711,7 @@
       raf.setLength(bytes);
       hasEnoughSpace = true;
     } catch (IOException ex)
-    {
+    { /* do nothing */
     } finally
     {
       if (raf != null)
@@ -822,7 +720,7 @@
         {
           raf.close();
         } catch (IOException ex2)
-        {
+        { /* do nothing */
         }
       }
       if (file != null)
@@ -964,46 +862,6 @@
     return ConnectionUtils.getHostNameForLdapUrl(host);
   }
 
-  // Very limited for the moment: apply only permissions to the current user and
-  // does not work in non-English environments... to work in non English we
-  // should use xcalcs but it does not come in the windows default install...
-  // :-(
-  // This method is not called for the moment, but the code works, so that is
-  // why is kept.
-  private static int changePermissionsWindows(String path, String unixPerm)
-      throws IOException, InterruptedException
-  {
-    String windowsPerm;
-    int i = Integer.parseInt(unixPerm.substring(0, 1));
-    if (Integer.lowestOneBit(i) == 1)
-    {
-      // Executable: give full permissions
-      windowsPerm = "F";
-    } else if (Integer.highestOneBit(i) == 4)
-    {
-      // Writable
-      windowsPerm = "W";
-    } else if (Integer.highestOneBit(i) == 2)
-    {
-      // Readable
-      windowsPerm = "R";
-    } else
-    {
-      // No permissions
-      windowsPerm = "N";
-    }
-
-    String user = System.getProperty("user.name");
-    String[] args =
-      { "cacls", path, "/P", user + ":" + windowsPerm };
-    Process p = Runtime.getRuntime().exec(args);
-
-    // TODO: This only works in ENGLISH systems!!!!!!
-    p.getOutputStream().write("Y\n".getBytes());
-    p.getOutputStream().flush();
-    return p.waitFor();
-  }
-
   /**
    * Indicates whether we are in a web start installation or not.
    *
@@ -1129,24 +987,6 @@
   }
 
 
-  /**
-   * Method used to know if we can connect as administrator in a server with a
-   * given password and dn.
-   * @param ldapUrl the ldap URL of the server.
-   * @param dn the dn to be used.
-   * @param pwd the password to be used.
-   * @param timeout the timeout to establish the connection in milliseconds.
-   * Use {@code 0} to express no timeout.
-   * @return <CODE>true</CODE> if we can connect and read the configuration and
-   * <CODE>false</CODE> otherwise.
-   */
-  public static boolean canConnectAsAdministrativeUser(String ldapUrl,
-      String dn, String pwd, int timeout)
-  {
-    return ConnectionUtils.canConnectAsAdministrativeUser(ldapUrl, dn, pwd,
-        timeout);
-  }
-
 /**
  * Tells whether the provided Throwable was caused because of a problem with
  * a certificate while trying to establish a connection.
@@ -1361,7 +1201,7 @@
       try
       {
         reader.close();
-      } catch (Exception e) {}
+      } catch (Exception e) { /* do nothing */}
     }
   }
 
@@ -1412,7 +1252,7 @@
         String msg = t.toString();
         if (msg != null)
         {
-          isOutOfMemory = msg.indexOf("Not enough space") != -1;
+          isOutOfMemory = msg.contains("Not enough space");
         }
       }
       t = t.getCause();
@@ -1432,24 +1272,6 @@
   }
 
   /**
-   * Determines whether one file is the parent of another.
-   * @param ancestor possible parent of <code>descendant</code>
-   * @param descendant possible child 0f <code>ancestor</code>
-   * @return return true if ancestor is a parent of descendant
-   */
-  static public boolean isParentOf(File ancestor, File descendant) {
-    if (ancestor != null) {
-      if (ancestor.equals(descendant)) {
-        return false;
-      }
-      while ((descendant != null) && !ancestor.equals(descendant)) {
-        descendant = descendant.getParentFile();
-      }
-    }
-    return (ancestor != null) && (descendant != null);
-  }
-
-  /**
    * Creates a string consisting of the string representation of the
    * elements in the <code>list</code> separated by <code>separator</code>.
    * @param list the list to print
@@ -1461,35 +1283,6 @@
   }
 
   /**
-   * Creates a message consisting of the string representation of the
-   * elements in the <code>list</code> separated by <code>separator</code>.
-   * @param list the list to print
-   * @param separator to use in separating elements
-   * @param prefix prepended to each individual element in the list before
-   *        adding to the returned string.
-   * @param suffix appended to each individual element in the list before
-   *        adding to the returned string.
-   * @return String representing the list
-   */
-  static public Message listToMessage(List<Message> list, String separator,
-                                      String prefix, String suffix) {
-    MessageBuilder sb = new MessageBuilder();
-    for (int i = 0; i < list.size(); i++) {
-      if (prefix != null) {
-        sb.append(prefix);
-      }
-      sb.append(list.get(i));
-      if (suffix != null) {
-        sb.append(suffix);
-      }
-      if (i < list.size() - 1) {
-        sb.append(separator);
-      }
-    }
-    return sb.toMessage();
-  }
-
-  /**
    * Creates a string consisting of the string representation of the
    * elements in the <code>list</code> separated by <code>separator</code>.
    * @param list the list to print
@@ -1519,34 +1312,6 @@
   }
 
   /**
-   * Creates a string consisting of the string representation of the
-   * elements in the <code>list</code> separated by <code>separator</code>.
-   * @param array the list to print
-   * @param separator to use in separating elements
-   * @return String representing the list
-   */
-  static public String stringArrayToString(String[] array, String separator) {
-    StringBuilder sb = new StringBuilder();
-    for (int i = 0; i < array.length; i++) {
-      sb.append(array[i]);
-      if (i < array.length - 1) {
-        sb.append(separator);
-      }
-    }
-    return sb.toString();
-  }
-
-  /**
-   * Returns the file system permissions for a file.
-   * @param path the file for which we want the file permissions.
-   * @return the file system permissions for the file.
-   */
-  static public String getFileSystemPermissions(String path)
-  {
-    return getFileSystemPermissions(new File(path));
-  }
-
-  /**
    * Returns the file system permissions for a file.
    * @param file the file for which we want the file permissions.
    * @return the file system permissions for the file.
@@ -1580,29 +1345,6 @@
   }
 
   /**
-   * Returns a string representing the installation's current build information
-   * useful for presenting to the user.  If the build string could not be
-   * determined for any reason a localized String 'unknown' is returned.
-   * @param installation whose build information is sought
-   * @return String representing the application's build.
-   */
-  static public String getBuildString(Installation installation) {
-    String b = null;
-    try {
-      BuildInformation bi = installation.getBuildInformation();
-      if (bi != null) {
-        b = bi.toString();
-      }
-    } catch (ApplicationException e) {
-      LOG.log(Level.INFO, "error trying to determine current build string", e);
-    }
-    if (b == null) {
-      b = INFO_UPGRADE_BUILD_ID_UNKNOWN.get().toString();
-    }
-    return b;
-  }
-
-  /**
    * Returns the String representation of the first value of an attribute in a
    * LDAP entry.
    * @param entry the entry.
@@ -1656,7 +1398,7 @@
         // First see if there are any spaces counting backward
         // from the max line length.  If there aren't any, then
         // use the first space encountered after the max line
-        // lenght.
+        // length.
         int p = d.lastIndexOf(' ', maxll);
         if (p <= 0) {
           p = d.indexOf(' ', maxll);
@@ -1682,7 +1424,7 @@
    * @return converted string
    */
   static public String convertHtmlBreakToLineSeparator(String s) {
-    return s.replaceAll("\\<br\\>", Constants.LINE_SEPARATOR);
+    return s.replaceAll("<br>", Constants.LINE_SEPARATOR);
   }
 
   /**
@@ -1701,7 +1443,7 @@
       // '<your name here>' or for funky tags like
       // '<tag attr="1 > 0">'. See test class for cases that
       // might cause problems.
-      o = s.replaceAll("\\<.*?\\>","");
+      o = s.replaceAll("<.*?>","");
 
     }
     return o;
@@ -1741,7 +1483,6 @@
   public static long getServerClock(InitialLdapContext ctx)
   {
     long time = -1;
-    String v = null;
     SearchControls ctls = new SearchControls();
     ctls.setSearchScope(SearchControls.OBJECT_SCOPE);
     ctls.setReturningAttributes(
@@ -1761,7 +1502,7 @@
         {
           SearchResult sr = (SearchResult)listeners.next();
 
-          v = getFirstValue(sr, "currentTime");
+          String v = getFirstValue(sr, "currentTime");
 
           TimeZone utcTimeZone = TimeZone.getTimeZone("UTC");
 
@@ -1964,6 +1705,7 @@
       }
       catch (Exception ex)
       {
+        // do nothing
       }
     }
     return value;
@@ -2019,15 +1761,13 @@
   {
     Message msg;
 
-    boolean createSuffix = false;
-
     DataReplicationOptions repl =
       userInstallData.getReplicationOptions();
 
     SuffixesToReplicateOptions suf =
       userInstallData.getSuffixesToReplicateOptions();
 
-    createSuffix =
+    boolean createSuffix =
       repl.getType() == DataReplicationOptions.Type.FIRST_IN_TOPOLOGY ||
       repl.getType() == DataReplicationOptions.Type.STANDALONE ||
       suf.getType() == SuffixesToReplicateOptions.Type.NEW_SUFFIX_IN_TOPOLOGY;
@@ -2706,6 +2446,7 @@
         if (ldapURL.equalsIgnoreCase(
             replica.getServer().getAdminConnectorURL()))
         {
+          // This is the server we're configuring
           found = true;
           Set<String> baseDNs = hm.get(replica.getServer());
           if (baseDNs == null)
@@ -2731,12 +2472,13 @@
       }
       if (!found)
       {
-        for (ReplicaDescriptor replica : suffix.getReplicas())
+        // We haven't found the server yet, just take the first one
+        ReplicaDescriptor replica = suffix.getReplicas().iterator().next();
+        if (replica != null)
         {
           Set<String> baseDNs = new LinkedHashSet<String>();
           hm.put(replica.getServer(), baseDNs);
           baseDNs.add(suffix.getDN());
-          break;
         }
       }
     }

--
Gitblit v1.10.0