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

kenneth_suter
16.56.2007 ba50af7d0b77d68c07b8772f95311cc6c1658771
opendj-sdk/opends/src/messages/src/org/opends/messages/Message.java
@@ -30,6 +30,7 @@
import java.util.Locale;
import java.util.Formatter;
import java.util.Formattable;
import java.util.UnknownFormatConversionException;
/**
 * Renders sensitive textural strings.  In most cases message are intended
@@ -153,9 +154,16 @@
   * @return String representation of this message
   */
  public String toString(Locale locale) {
    String s = descriptor.getFormatString(locale);
    if (needsFormatting(s)) {
      s = new Formatter(locale).format(locale, s, args).toString();
    String s;
    String fmt = descriptor.getFormatString(locale);
    if (needsFormatting(fmt)) {
      try {
        s = new Formatter(locale).format(locale, fmt, args).toString();
      } catch (UnknownFormatConversionException e) {
        s = fmt; // This shouldn't happen but just in case...
      }
    } else {
      s = fmt;
    }
    if (s == null) s = "";
    return s;
@@ -316,19 +324,6 @@
  }
  /**
   * Indicates whether or not formatting should be applied
   * to the given format string.  Note that a format string
   * might have literal specifiers (%% or %n for example)that
   * require formatting but are not replaced by arguments.
   * @param s candiate for formatting
   * @return boolean where true indicates that the format
   *         string requires formatting
   */
  private boolean needsFormatting(String s) {
    return s != null && (args != null || s.indexOf('%') > 0);
  }
  /**
   * {@inheritDoc}
   */
  public int compareTo(Object o) {
@@ -356,4 +351,20 @@
    result = 31 * toString().hashCode();
    return result;
  }
  /**
   * Indicates whether or not formatting should be applied
   * to the given format string.  Note that a format string
   * might have literal specifiers (%% or %n for example) that
   * require formatting but are not replaced by arguments.
   * @param s candiate for formatting
   * @return boolean where true indicates that the format
   *         string requires formatting
   */
  protected boolean needsFormatting(String s) {
    return s != null &&
            ((args != null && args.length > 0)
                   || s.matches(".*%[n|%].*")); // match Formatter literals
  }
}