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

matthew_swift
15.25.2008 8ad64526ae23f5b3992dab4e8c7a96b5e8376d2f
Fix issue 2827: Messages constructed from a MessageBuilder should have a sensible category and severity.

Modify the MessageBuilder.toMessage() method so that constructed Messages have a sensible Category and Severity. Now the Category and Severity are based on the first object appended to the MessageBuilder. If that object is a Message then the MessageBuilder will use the Category and Severity of that Message, otherwise it will continue the current default behavior which is to use Category.USER_DEFINED and Severity.INFORMATION.
2 files modified
62 ■■■■■ changed files
opends/src/messages/src/org/opends/messages/MessageBuilder.java 21 ●●●● patch | view | raw | blame | history
opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java 41 ●●●●● patch | view | raw | blame | history
opends/src/messages/src/org/opends/messages/MessageBuilder.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
 */
package org.opends.messages;
@@ -259,8 +259,13 @@
  }
  /**
   * Returns a raw message representation of the appended
   * content.
   * Returns a raw message representation of the appended content.
   * <p>
   * If the first object appended to this <code>MessageBuilder</code>
   * was a <code>Message</code> then the returned message will
   * inherit its category and severity. Otherwise the returned message
   * will have category {@link Category#USER_DEFINED} and severity
   * {@link Severity#INFORMATION}.
   *
   * @return Message raw message representing builder content
   */
@@ -269,7 +274,15 @@
    for (int i = 0; i < messages.size(); i++) {
      fmtString.append("%s");
    }
    return Message.raw(fmtString, messages.toArray());
    if (messages.isEmpty()) {
      return Message.raw(fmtString, messages.toArray());
    } else {
      // Inherit the category and severity of the first message.
      MessageDescriptor md = messages.get(0).getDescriptor();
      return Message.raw(md.getCategory(), md.getSeverity(), fmtString,
          messages.toArray());
    }
  }
  /**
opends/tests/unit-tests-testng/src/server/org/opends/messages/MessageBuilderTest.java
@@ -22,7 +22,7 @@
 * CDDL HEADER END
 *
 *
 *      Portions Copyright 2007 Sun Microsystems, Inc.
 *      Portions Copyright 2007-2008 Sun Microsystems, Inc.
 */
package org.opends.messages;
@@ -201,4 +201,43 @@
    assertTrue(result.equals(m.toString(locale)));
  }
  @DataProvider(name = "toMessageData2")
  public Object[][] toMessageData2() {
    return new Object[][] {
        {
            CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.get(),
            CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1),
            CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.getCategory(),
            CoreMessages.ERR_ADD_CANNOT_ADD_ROOT_DSE.getSeverity()
        },
        {
            Message.raw(Category.JEB, Severity.FATAL_ERROR, "test message"),
            CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1),
            Category.JEB,
            Severity.FATAL_ERROR
        },
        {
            Message.raw("test message"),
            CoreMessages.ERR_ABANDON_OP_NO_SUCH_OPERATION.get(1),
            Category.USER_DEFINED,
            Severity.INFORMATION
        }
    };
  }
  @Test(dataProvider = "toMessageData2")
  public void testToMessage2(Message m1, Message m2, Category c, Severity s) {
    MessageBuilder mb = new MessageBuilder();
    mb.append(m1);
    mb.append(m2);
    Message m = mb.toMessage();
    assertEquals(m.getDescriptor().getCategory(), c);
    assertEquals(m.getDescriptor().getSeverity(), s);
  }
}