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

jvergara
18.01.2008 1e78dcc113e8a35c82365451f7886bdcaa47dc90
opendj-sdk/opends/src/server/org/opends/server/tools/JavaPropertiesTool.java
@@ -258,70 +258,7 @@
    }
    try
    {
      String line;
      // Parse the file manually since '\' in windows paths can generate issues.
      boolean slashInLastLine = false;
      String key = null;
      StringBuilder sbValue = null;
      while ((line = reader.readLine()) != null)
      {
        line = line.trim();
        if (!line.startsWith("#"))
        {
          if (!slashInLastLine)
          {
            key = null;
            sbValue = new StringBuilder();
            int index = line.indexOf('=');
            if (index > 0)
            {
              key = line.substring(0, index);
              if (key.indexOf(' ') != -1)
              {
                key = null;
              }
            }
          }
          // Consider the space: in windows the user might add a path ending
          // with '\'. With this approach we minimize the possibilities of
          // error.
          boolean hasSlash = line.endsWith(" \\");
          if (hasSlash)
          {
            line = line.substring(0, line.length() - 1);
          }
          String lineValue = null;
          if (slashInLastLine)
          {
            lineValue = line;
          }
          else if (key != null)
          {
            int index = line.indexOf('=');
            if ((index != -1) && ((index + 1) < line.length()))
            {
              lineValue = line.substring(index+1);
            }
          }
          if ((lineValue != null) && (lineValue.length() > 0))
          {
            if (sbValue == null)
            {
              sbValue = new StringBuilder();
            }
            sbValue.append(lineValue);
          }
          if (!hasSlash && (key != null) && (sbValue != null))
          {
            properties.put(key, sbValue.toString());
          }
          slashInLastLine = hasSlash;
        }
      }
      updateProperties(reader, properties);
    }
    catch (IOException ioe)
    {
@@ -429,6 +366,82 @@
    return ErrorReturnCode.SUCCESSFUL.getReturnCode();
  }
  /**
   * Reads the contents of the provided reader and updates the provided
   * Properties object with it.  This is required because '\' characters in
   * windows paths generates problems.
   * @param reader the buffered reader.
   * @param properties the properties.
   * @throws IOException if there is an error reading the buffered reader.
   */
  public static void updateProperties(
      BufferedReader reader, Properties properties)
  throws IOException
  {
    String line;
    boolean slashInLastLine = false;
    String key = null;
    StringBuilder sbValue = null;
    while ((line = reader.readLine()) != null)
    {
      line = line.trim();
      if (!line.startsWith("#"))
      {
        if (!slashInLastLine)
        {
          key = null;
          sbValue = new StringBuilder();
          int index = line.indexOf('=');
          if (index > 0)
          {
            key = line.substring(0, index);
            if (key.indexOf(' ') != -1)
            {
              key = null;
            }
          }
        }
        // Consider the space: in windows the user might add a path ending
        // with '\'. With this approach we minimize the possibilities of
        // error.
        boolean hasSlash = line.endsWith(" \\");
        if (hasSlash)
        {
          line = line.substring(0, line.length() - 1);
        }
        String lineValue = null;
        if (slashInLastLine)
        {
          lineValue = line;
        }
        else if (key != null)
        {
          int index = line.indexOf('=');
          if ((index != -1) && ((index + 1) < line.length()))
          {
            lineValue = line.substring(index+1);
          }
        }
        if ((lineValue != null) && (lineValue.length() > 0))
        {
          if (sbValue == null)
          {
            sbValue = new StringBuilder();
          }
          sbValue.append(lineValue);
        }
        if (!hasSlash && (key != null) && (sbValue != null))
        {
          properties.put(key, sbValue.toString());
        }
        slashInLastLine = hasSlash;
      }
    }
  }
  /**
   * {@inheritDoc}