mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

neil_a_wilson
09.35.2006 75a1355c310f68cf93ab91a14e1f9cc8bf726cd6
Update the LDAPCompare tool to fail with an appropriate error message if the
assertion value is to be read from a file but that file does not exist or is
not readable.

OpenDS Issue Number: 770
3 files modified
53 ■■■■ changed files
opends/src/server/org/opends/server/messages/ToolMessages.java 13 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPCompare.java 13 ●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/tools/LDAPToolUtils.java 27 ●●●●● patch | view | raw | blame | history
opends/src/server/org/opends/server/messages/ToolMessages.java
@@ -6622,6 +6622,16 @@
  /**
   * The message ID for the message that will be used if an error occurs while
   * trying to read the assertion value from a file.  This takes a single
   * argument, which is a message explaining the problem that occurred.
   */
  public static final int MSGID_COMPARE_CANNOT_READ_ASSERTION_VALUE_FROM_FILE =
       CATEGORY_MASK_TOOLS | SEVERITY_MASK_INFORMATIONAL | 674;
  /**
   * Associates a set of generic messages with the message IDs defined in this
   * class.
   */
@@ -7203,6 +7213,9 @@
    registerMessage(MSGID_COMPARE_CANNOT_BASE64_DECODE_ASSERTION_VALUE,
                    "The assertion value was indicated to be base64-encoded, " +
                    "but an error occurred while trying to decode the value.");
    registerMessage(MSGID_COMPARE_CANNOT_READ_ASSERTION_VALUE_FROM_FILE,
                    "Unable to read the assertion value from the specified " +
                    "file:  %s.");
    registerMessage(MSGID_SEARCH_DESCRIPTION_BASEDN,
                    "The base DN for the search.");
    registerMessage(MSGID_SEARCH_DESCRIPTION_SIZE_LIMIT,
opends/src/server/org/opends/server/tools/LDAPCompare.java
@@ -545,8 +545,17 @@
        }
      } else if(nextChar == '<')
      {
        String filePath = remainder.substring(1, remainder.length());
        attributeVal = LDAPToolUtils.readBytesFromFile(filePath);
        try
        {
          String filePath = remainder.substring(1, remainder.length());
          attributeVal = LDAPToolUtils.readBytesFromFile(filePath);
        }
        catch (Exception e)
        {
          int msgID = MSGID_COMPARE_CANNOT_READ_ASSERTION_VALUE_FROM_FILE;
          err.println(getMessage(msgID, String.valueOf(e)));
          return 1;
        }
      } else
      {
        attributeVal = remainder.getBytes();
opends/src/server/org/opends/server/tools/LDAPToolUtils.java
@@ -57,7 +57,8 @@
   * @param  argString  The argument string containing the encoded control
   *                    information.
   *
   * @return  The control decoded from the provided string.
   * @return  The control decoded from the provided string, or <CODE>null</CODE>
   *          if an error occurs while parsing the argument value.
   */
  public static LDAPControl getControl(String argString)
  {
@@ -117,8 +118,15 @@
    {
      // Read data from the file.
      String fileURL = valString.substring(1, valString.length());
      byte[] val = readBytesFromFile(fileURL);
      controlValue = new ASN1OctetString(val);
      try
      {
        byte[] val = readBytesFromFile(fileURL);
        controlValue = new ASN1OctetString(val);
      }
      catch (Exception e)
      {
        return null;
      }
    } else
    {
      controlValue = new ASN1OctetString(valString);
@@ -135,8 +143,12 @@
   * @param  filePath  The path to the file that should be read.
   *
   * @return  A byte array containing the contents of the requested file.
   *
   * @throws  IOException  If a problem occurs while trying to read the
   *                       specified file.
   */
  public static byte[] readBytesFromFile(String filePath)
         throws IOException
  {
      byte[] val = null;
      FileInputStream fis = null;
@@ -162,18 +174,11 @@
        }
        return val;
      } catch(IOException ie)
      {
        System.err.println("Could not completely read file "+filePath);
        System.err.println(ie.getMessage());
        return null;
      } finally
      {
        try
        if (fis != null)
        {
          fis.close();
        } catch(IOException ioe)
        {
        }
      }
  }