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/StaticUtils.java |  496 ------------------------------------------------------
 1 files changed, 3 insertions(+), 493 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java b/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
index 12ddc0b..6eb35c8 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/util/StaticUtils.java
@@ -19,23 +19,17 @@
 import static org.opends.messages.UtilityMessages.*;
 import static org.opends.server.util.ServerConstants.*;
 
-import java.io.BufferedReader;
 import java.io.Closeable;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
 import java.io.UnsupportedEncodingException;
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.nio.ByteBuffer;
-import java.nio.channels.SelectionKey;
-import java.nio.channels.Selector;
-import java.nio.channels.SocketChannel;
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
@@ -48,7 +42,6 @@
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.RandomAccess;
 import java.util.TimeZone;
 
 import javax.naming.InitialContext;
@@ -66,7 +59,6 @@
 import org.forgerock.opendj.ldap.schema.AttributeType;
 import org.forgerock.util.Reject;
 import org.opends.messages.ToolMessages;
-import org.opends.server.api.ClientConnection;
 import org.opends.server.core.DirectoryServer;
 import org.opends.server.core.ServerContext;
 import org.opends.server.types.Attribute;
@@ -478,109 +470,6 @@
   }
 
   /**
-   * Appends a string representation of the remaining unread data in the
-   * provided byte buffer to the given buffer using the specified indent.
-   * The data will be formatted with sixteen hex bytes in a row followed by
-   * the ASCII representation, then wrapping to a new line as necessary.
-   * The state of the byte buffer is not changed.
-   *
-   * @param  buffer  The buffer to which the information is to be appended.
-   * @param  b       The byte buffer containing the data to write.
-   *                 The data from the position to the limit is written.
-   * @param  indent  The number of spaces to indent the output.
-   */
-  public static void byteArrayToHexPlusAscii(StringBuilder buffer, ByteBuffer b,
-                                             int indent)
-  {
-    StringBuilder indentBuf = new StringBuilder(indent);
-    for (int i=0 ; i < indent; i++)
-    {
-      indentBuf.append(' ');
-    }
-
-
-    int position = b.position();
-    int limit    = b.limit();
-    int length   = limit - position;
-    int pos      = 0;
-    while (length - pos >= 16)
-    {
-      StringBuilder asciiBuf = new StringBuilder(17);
-
-      byte currentByte = b.get();
-      buffer.append(indentBuf);
-      buffer.append(byteToHex(currentByte));
-      asciiBuf.append(byteToASCII(currentByte));
-      pos++;
-
-      for (int i=1; i < 16; i++, pos++)
-      {
-        currentByte = b.get();
-        buffer.append(' ');
-        buffer.append(byteToHex(currentByte));
-        asciiBuf.append(byteToASCII(currentByte));
-
-        if (i == 7)
-        {
-          buffer.append("  ");
-          asciiBuf.append(' ');
-        }
-      }
-
-      buffer.append("  ");
-      buffer.append(asciiBuf);
-      buffer.append(EOL);
-    }
-
-
-    int remaining = length - pos;
-    if (remaining > 0)
-    {
-      StringBuilder asciiBuf = new StringBuilder(remaining+1);
-
-      byte currentByte = b.get();
-      buffer.append(indentBuf);
-      buffer.append(byteToHex(currentByte));
-      asciiBuf.append(byteToASCII(currentByte));
-
-      for (int i=1; i < 16; i++)
-      {
-        buffer.append(' ');
-
-        if (i < remaining)
-        {
-          currentByte = b.get();
-          buffer.append(byteToHex(currentByte));
-          asciiBuf.append(byteToASCII(currentByte));
-        }
-        else
-        {
-          buffer.append("  ");
-        }
-
-        if (i == 7)
-        {
-          buffer.append("  ");
-
-          if (i < remaining)
-          {
-            asciiBuf.append(' ');
-          }
-        }
-      }
-
-      buffer.append("  ");
-      buffer.append(asciiBuf);
-      buffer.append(EOL);
-    }
-
-    b.position(position);
-    b.limit(limit);
-  }
-
-
-
-  /**
    * Compare two byte arrays for order. Returns a negative integer,
    * zero, or a positive integer as the first argument is less than,
    * equal to, or greater than the second.
@@ -622,69 +511,6 @@
     return a.length - a2.length;
   }
 
-
-
-  /**
-   * Indicates whether the two array lists are equal. They will be
-   * considered equal if they have the same number of elements, and
-   * the corresponding elements between them are equal (in the same
-   * order).
-   *
-   * @param list1
-   *          The first list for which to make the determination.
-   * @param list2
-   *          The second list for which to make the determination.
-   * @return {@code true} if the two array lists are equal, or
-   *         {@code false} if they are not.
-   */
-  public static boolean listsAreEqual(List<?> list1, List<?> list2)
-  {
-    if (list1 == null)
-    {
-      return list2 == null;
-    }
-    else if (list2 == null)
-    {
-      return false;
-    }
-
-    int numElements = list1.size();
-    if (numElements != list2.size())
-    {
-      return false;
-    }
-
-    // If either of the lists doesn't support random access, then fall back
-    // on their equals methods and go ahead and create some garbage with the
-    // iterators.
-    if (!(list1 instanceof RandomAccess) ||
-        !(list2 instanceof RandomAccess))
-    {
-      return list1.equals(list2);
-    }
-
-    // Otherwise we can just retrieve the elements efficiently via their index.
-    for (int i=0; i < numElements; i++)
-    {
-      Object o1 = list1.get(i);
-      Object o2 = list2.get(i);
-
-      if (o1 == null)
-      {
-        if (o2 != null)
-        {
-          return false;
-        }
-      }
-      else if (! o1.equals(o2))
-      {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
   /**
    * Retrieves the best human-readable message for the provided exception.  For
    * exceptions defined in the OpenDJ project, it will attempt to use the
@@ -736,23 +562,6 @@
     return com.forgerock.opendj.util.StaticUtils.stackTraceToSingleLineString(t, DynamicConstants.DEBUG_BUILD);
   }
 
-
-
-  /**
-   * Appends a single-line string representation of the provided exception to
-   * the given buffer.
-   *
-   * @param  buffer  The buffer to which the information is to be appended.
-   * @param  t       The exception for which to retrieve the stack trace.
-   */
-  public static void stackTraceToSingleLineString(StringBuilder buffer,
-                                                  Throwable t)
-  {
-    com.forgerock.opendj.util.StaticUtils.stackTraceToSingleLineString(buffer, t, DynamicConstants.DEBUG_BUILD);
-  }
-
-
-
   /**
    * Retrieves a string representation of the stack trace for the provided
    * exception.
@@ -801,7 +610,7 @@
    * @param  buffer  The buffer to which the information is to be appended.
    * @param  t       The exception for which to retrieve the stack trace.
    */
-  public static void stackTraceToString(StringBuilder buffer, Throwable t)
+  private static void stackTraceToString(StringBuilder buffer, Throwable t)
   {
     if (t == null)
     {
@@ -1296,127 +1105,11 @@
    * @return  {@code true} if the use of the exec method should be allowed,
    *          or {@code false} if it should not be allowed.
    */
-  public static boolean mayUseExec()
+  private static boolean mayUseExec()
   {
     return !DirectoryServer.getEnvironmentConfig().disableExec();
   }
 
-
-
-  /**
-   * Executes the specified command on the system and captures its output.  This
-   * will not return until the specified process has completed.
-   *
-   * @param  command           The command to execute.
-   * @param  args              The set of arguments to provide to the command.
-   * @param  workingDirectory  The working directory to use for the command, or
-   *                           {@code null} if the default directory
-   *                           should be used.
-   * @param  environment       The set of environment variables that should be
-   *                           set when executing the command, or
-   *                           {@code null} if none are needed.
-   * @param  output            The output generated by the command while it was
-   *                           running.  This will include both standard
-   *                           output and standard error.  It may be
-   *                           {@code null} if the output does not need to
-   *                           be captured.
-   *
-   * @return  The exit code for the command.
-   *
-   * @throws  IOException  If an I/O problem occurs while trying to execute the
-   *                       command.
-   *
-   * @throws  SecurityException  If the security policy will not allow the
-   *                             command to be executed.
-   *
-   * @throws InterruptedException If the current thread is interrupted by
-   *                              another thread while it is waiting, then
-   *                              the wait is ended and an InterruptedException
-   *                              is thrown.
-   */
-  public static int exec(String command, String[] args, File workingDirectory,
-                         Map<String,String> environment, List<String> output)
-         throws IOException, SecurityException, InterruptedException
-  {
-    // See whether we'll allow the use of exec on this system.  If not, then
-    // throw an exception.
-    if (! mayUseExec())
-    {
-      throw new SecurityException(ERR_EXEC_DISABLED.get(command).toString());
-    }
-
-
-    ArrayList<String> commandAndArgs = new ArrayList<>();
-    commandAndArgs.add(command);
-    if (args != null && args.length > 0)
-    {
-      Collections.addAll(commandAndArgs, args);
-    }
-
-    ProcessBuilder processBuilder = new ProcessBuilder(commandAndArgs);
-    processBuilder.redirectErrorStream(true);
-
-    if (workingDirectory != null && workingDirectory.isDirectory())
-    {
-      processBuilder.directory(workingDirectory);
-    }
-
-    if (environment != null && !environment.isEmpty())
-    {
-      processBuilder.environment().putAll(environment);
-    }
-
-    Process process = processBuilder.start();
-
-    // We must exhaust stdout and stderr before calling waitfor. Since we
-    // redirected the error stream, we just have to read from stdout.
-    InputStream processStream =  process.getInputStream();
-    BufferedReader reader =
-        new BufferedReader(new InputStreamReader(processStream));
-    String line = null;
-
-    try
-    {
-      while((line = reader.readLine()) != null)
-      {
-        if(output != null)
-        {
-          output.add(line);
-        }
-      }
-    }
-    catch(IOException ioe)
-    {
-      // If this happens, then we have no choice but to forcefully terminate
-      // the process.
-      try
-      {
-        process.destroy();
-      }
-      catch (Exception e)
-      {
-        logger.traceException(e);
-      }
-
-      throw ioe;
-    }
-    finally
-    {
-      try
-      {
-        reader.close();
-      }
-      catch(IOException e)
-      {
-        logger.traceException(e);
-      }
-    }
-
-    return process.waitFor();
-  }
-
-
-
   /**
    * Indicates whether the provided string contains a name or OID for a schema
    * element like an attribute type or objectclass.
@@ -1716,7 +1409,7 @@
    * @param  buffer  The buffer to which the uppercase form of the string should
    *                 be appended.
    */
-  public static void toUpperCase(String s, StringBuilder buffer)
+  private static void toUpperCase(String s, StringBuilder buffer)
   {
     if (s == null)
     {
@@ -2024,29 +1717,6 @@
     return builder;
   }
 
-
-
-  /**
-   * Retrieves a string array containing the contents of the provided
-   * list of strings.
-   *
-   * @param stringList
-   *          The string list to convert to an array.
-   * @return A string array containing the contents of the provided list
-   *         of strings.
-   */
-  public static String[] listToArray(List<String> stringList)
-  {
-    if (stringList == null)
-    {
-      return null;
-    }
-
-    String[] stringArray = new String[stringList.size()];
-    stringList.toArray(stringArray);
-    return stringArray;
-  }
-
   /**
    * Retrieves an array list containing the contents of the provided array.
    *
@@ -2203,24 +1873,6 @@
     }
   }
 
-
-  /**
-   * Indicates whether the provided path refers to a relative path rather than
-   * an absolute path.
-   *
-   * @param  path  The path string for which to make the determination.
-   *
-   * @return  {@code true} if the provided path is relative, or
-   *          {@code false} if it is absolute.
-   */
-  public static boolean isRelativePath(String path)
-  {
-    File f = new File(path);
-    return !f.isAbsolute();
-  }
-
-
-
   /**
    * Retrieves a {@code File} object corresponding to the specified path.
    * If the given path is an absolute path, then it will be used.  If the path
@@ -2531,132 +2183,6 @@
 
   }
 
-
-
-  /**
-   * Writes the contents of the provided buffer to the client,
-   * terminating the connection if the write is unsuccessful for too
-   * long (e.g., if the client is unresponsive or there is a network
-   * problem). If possible, it will attempt to use the selector returned
-   * by the {@code ClientConnection.getWriteSelector} method, but it is
-   * capable of working even if that method returns {@code null}. <BR>
-   *
-   * Note that the original position and limit values will not be
-   * preserved, so if that is important to the caller, then it should
-   * record them before calling this method and restore them after it
-   * returns.
-   *
-   * @param clientConnection
-   *          The client connection to which the data is to be written.
-   * @param buffer
-   *          The data to be written to the client.
-   * @return {@code true} if all the data in the provided buffer was
-   *         written to the client and the connection may remain
-   *         established, or {@code false} if a problem occurred
-   *         and the client connection is no longer valid. Note that if
-   *         this method does return {@code false}, then it must
-   *         have already disconnected the client.
-   * @throws IOException
-   *           If a problem occurs while attempting to write data to the
-   *           client. The caller will be responsible for catching this
-   *           and terminating the client connection.
-   */
-  public static boolean writeWithTimeout(ClientConnection clientConnection,
-      ByteBuffer buffer) throws IOException
-  {
-    SocketChannel socketChannel = clientConnection.getSocketChannel();
-    long startTime = System.currentTimeMillis();
-    long waitTime = clientConnection.getMaxBlockedWriteTimeLimit();
-    if (waitTime <= 0)
-    {
-      // We won't support an infinite time limit, so fall back to using
-      // five minutes, which is a very long timeout given that we're
-      // blocking a worker thread.
-      waitTime = 300000L;
-    }
-
-    long stopTime = startTime + waitTime;
-
-    Selector selector = clientConnection.getWriteSelector();
-    if (selector == null)
-    {
-      // The client connection does not provide a selector, so we'll
-      // fall back
-      // to a more inefficient way that will work without a selector.
-      while (buffer.hasRemaining()
-          && System.currentTimeMillis() < stopTime)
-      {
-        if (socketChannel.write(buffer) < 0)
-        {
-          // The client connection has been closed.
-          return false;
-        }
-      }
-
-      if (buffer.hasRemaining())
-      {
-        // If we've gotten here, then the write timed out.
-        return false;
-      }
-
-      return true;
-    }
-
-    // Register with the selector for handling write operations.
-    SelectionKey key =
-        socketChannel.register(selector, SelectionKey.OP_WRITE);
-
-    try
-    {
-      selector.select(waitTime);
-      while (buffer.hasRemaining())
-      {
-        long currentTime = System.currentTimeMillis();
-        if (currentTime >= stopTime)
-        {
-          // We've been blocked for too long.
-          return false;
-        }
-        waitTime = stopTime - currentTime;
-
-        Iterator<SelectionKey> iterator =
-            selector.selectedKeys().iterator();
-        while (iterator.hasNext())
-        {
-          SelectionKey k = iterator.next();
-          if (k.isWritable())
-          {
-            int bytesWritten = socketChannel.write(buffer);
-            if (bytesWritten < 0)
-            {
-              // The client connection has been closed.
-              return false;
-            }
-
-            iterator.remove();
-          }
-        }
-
-        if (buffer.hasRemaining())
-        {
-          selector.select(waitTime);
-        }
-      }
-
-      return true;
-    }
-    finally
-    {
-      if (key.isValid())
-      {
-        key.cancel();
-        selector.selectNow();
-      }
-    }
-  }
-
-
-
   /**
    * Add all of the superior objectclasses to the specified objectclass
    * map if they don't already exist. Used by add and import-ldif to
@@ -2845,22 +2371,6 @@
    * @return {@code true} if message corresponds to descriptor
    */
   public static boolean hasDescriptor(LocalizableMessage msg,
-      LocalizableMessageDescriptor.Arg2<?, ?> desc)
-  {
-    return msg.ordinal() == desc.ordinal()
-        && msg.resourceName().equals(desc.resourceName());
-  }
-
-  /**
-   * Test if the provided message corresponds to the provided descriptor.
-   *
-   * @param msg
-   *          The i18n message.
-   * @param desc
-   *          The message descriptor.
-   * @return {@code true} if message corresponds to descriptor
-   */
-  public static boolean hasDescriptor(LocalizableMessage msg,
       LocalizableMessageDescriptor.Arg3<?, ?, ?> desc)
   {
     return msg.ordinal() == desc.ordinal()

--
Gitblit v1.10.0